Intel® Implicit SPMD Program Compiler (Intel® ISPC)  1.13.0
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
AddressOfExpr Class Reference

#include <expr.h>

Inheritance diagram for AddressOfExpr:
Inheritance graph
[legend]
Collaboration diagram for AddressOfExpr:
Collaboration graph
[legend]

Public Member Functions

 AddressOfExpr (Expr *e, SourcePos p)
 
llvm::Value * GetValue (FunctionEmitContext *ctx) const
 
const TypeGetType () const
 
const TypeGetLValueType () const
 
SymbolGetBaseSymbol () const
 
void Print () const
 
ExprTypeCheck ()
 
ExprOptimize ()
 
int EstimateCost () const
 
std::pair< llvm::Constant *, bool > GetConstant (const Type *type) const
 
- Public Member Functions inherited from Expr
 Expr (SourcePos p, unsigned scid)
 
virtual llvm::Value * GetLValue (FunctionEmitContext *ctx) const
 
virtual std::pair< llvm::Constant *, bool > GetStorageConstant (const Type *type) const
 
- Public Member Functions inherited from ASTNode
 ASTNode (SourcePos p, unsigned scid)
 
virtual ~ASTNode ()
 
unsigned getValueID () const
 

Static Public Member Functions

static bool classof (AddressOfExpr const *)
 
static bool classof (ASTNode const *N)
 
- Static Public Member Functions inherited from Expr
static bool classof (Expr const *)
 
static bool classof (ASTNode const *N)
 
- Static Public Member Functions inherited from ASTNode
static bool classof (ASTNode const *)
 

Public Attributes

Exprexpr
 
- Public Attributes inherited from ASTNode
SourcePos pos
 

Additional Inherited Members

- Public Types inherited from ASTNode
enum  ASTNodeTy {
  AddressOfExprID, AssignExprID, BinaryExprID, ConstExprID,
  DerefExprID, PtrDerefExprID, RefDerefExprID, ExprListID,
  FunctionCallExprID, FunctionSymbolExprID, IndexExprID, StructMemberExprID,
  VectorMemberExprID, NewExprID, NullPointerExprID, ReferenceExprID,
  SelectExprID, SizeOfExprID, SymbolExprID, SyncExprID,
  TypeCastExprID, UnaryExprID, MaxExprID, AssertStmtID,
  BreakStmtID, CaseStmtID, ContinueStmtID, DeclStmtID,
  DefaultStmtID, DeleteStmtID, DoStmtID, ExprStmtID,
  ForeachActiveStmtID, ForeachStmtID, ForeachUniqueStmtID, ForStmtID,
  GotoStmtID, IfStmtID, LabeledStmtID, PrintStmtID,
  ReturnStmtID, StmtListID, SwitchStmtID, UnmaskedStmtID
}
 

Detailed Description

Expression that represents taking the address of an expression.

Definition at line 586 of file expr.h.

Constructor & Destructor Documentation

◆ AddressOfExpr()

AddressOfExpr::AddressOfExpr ( Expr e,
SourcePos  p 
)

Definition at line 7382 of file expr.cpp.

Member Function Documentation

◆ classof() [1/2]

static bool AddressOfExpr::classof ( AddressOfExpr const *  )
inlinestatic

Definition at line 590 of file expr.h.

◆ classof() [2/2]

static bool AddressOfExpr::classof ( ASTNode const *  N)
inlinestatic

◆ EstimateCost()

int AddressOfExpr::EstimateCost ( ) const
virtual

Estimate the execution cost of the node (not including the cost of the children. The value returned should be based on the COST_* enumerant values defined in ispc.h.

Implements ASTNode.

Definition at line 7460 of file expr.cpp.

◆ GetBaseSymbol()

Symbol * AddressOfExpr::GetBaseSymbol ( ) const
virtual

For expressions that have values based on a symbol (e.g. regular symbol references, array indexing, etc.), this returns a pointer to that symbol.

Reimplemented from Expr.

Definition at line 7428 of file expr.cpp.

References expr, and Expr::GetBaseSymbol().

Referenced by GetConstant().

◆ GetConstant()

std::pair< llvm::Constant *, bool > AddressOfExpr::GetConstant ( const Type type) const
virtual

If this is a constant expression that can be converted to a constant of the given type, this method should return the corresponding llvm::Constant value and a flag denoting if it's valid for multi-target compilation for use as an initializer of a global variable. Otherwise it should return the llvm::constant value as NULL.

Reimplemented from Expr.

Definition at line 7462 of file expr.cpp.

References AssertPos, Globals::ctx, Module::errorCount, expr, g, GetBaseSymbol(), Expr::GetConstant(), Expr::GetType(), GetType(), lConvertPointerConstant(), LLVMInt64(), Type::LLVMType(), m, PTYPE, and Symbol::storagePtr.

◆ GetLValueType()

const Type * AddressOfExpr::GetLValueType ( ) const
virtual

Returns the type of the value returned by GetLValueType(); this should be a pointer type of some sort (uniform or varying).

Reimplemented from Expr.

Definition at line 7417 of file expr.cpp.

References expr, Expr::GetType(), and PointerType::GetUniform().

◆ GetType()

const Type * AddressOfExpr::GetType ( ) const
virtual

Returns the Type of the expression.

Implements Expr.

Definition at line 7396 of file expr.cpp.

References AssertPos, Module::errorCount, expr, Expr::GetLValueType(), Type::GetReferenceTarget(), Expr::GetType(), PointerType::GetUniform(), and m.

Referenced by GetConstant().

◆ GetValue()

llvm::Value * AddressOfExpr::GetValue ( FunctionEmitContext ctx) const
virtual

This is the main method for Expr implementations to implement. It should call methods in the FunctionEmitContext to emit LLVM IR instructions to the current basic block in order to generate an llvm::Value that represents the expression's value.

Implements Expr.

Definition at line 7384 of file expr.cpp.

References expr, Expr::GetLValue(), Expr::GetType(), Expr::GetValue(), and FunctionEmitContext::SetDebugPos().

◆ Optimize()

Expr * AddressOfExpr::Optimize ( )
virtual

This method should perform early optimizations of the expression (constant folding, etc.) and return a pointer to the resulting expression. If an error is encountered during optimization, NULL should be returned.

Implements Expr.

Definition at line 7458 of file expr.cpp.

◆ Print()

void AddressOfExpr::Print ( ) const
virtual

Prints the expression to standard output (used for debugging).

Implements Expr.

Definition at line 7430 of file expr.cpp.

References expr, Expr::Print(), and SourcePos::Print().

◆ TypeCheck()

Expr * AddressOfExpr::TypeCheck ( )
virtual

This method should perform type checking of the expression and return a pointer to the resulting expression. If an error is encountered, NULL should be returned.

Implements Expr.

Definition at line 7440 of file expr.cpp.

References AssertPos, Error(), Module::errorCount, expr, Expr::GetLValueType(), Expr::GetType(), m, and ASTNode::pos.

Member Data Documentation

◆ expr

Expr* AddressOfExpr::expr

The documentation for this class was generated from the following files: