Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
Statement representing a single declaration (which in turn may declare a number of variables. More...
#include <stmt.h>
Public Member Functions | |
DeclStmt (const std::vector< VariableDeclaration > &v, SourcePos pos) | |
void | EmitCode (FunctionEmitContext *ctx) const |
void | Print (int indent) const |
Stmt * | Optimize () |
Stmt * | TypeCheck () |
int | EstimateCost () const |
Public Member Functions inherited from Stmt | |
Stmt (SourcePos p, unsigned scid) | |
Public Member Functions inherited from ASTNode | |
ASTNode (SourcePos p, unsigned scid) | |
virtual | ~ASTNode () |
unsigned | getValueID () const |
Static Public Member Functions | |
static bool | classof (DeclStmt const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from Stmt | |
static bool | classof (Stmt const *) |
static bool | classof (ASTNode const *N) |
Static Public Member Functions inherited from ASTNode | |
static bool | classof (ASTNode const *) |
Public Attributes | |
std::vector< VariableDeclaration > | vars |
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 } |
Statement representing a single declaration (which in turn may declare a number of variables.
DeclStmt::DeclStmt | ( | const std::vector< VariableDeclaration > & | v, |
SourcePos | pos | ||
) |
|
inlinestatic |
|
inlinestatic |
Definition at line 105 of file stmt.h.
References ASTNode::DeclStmtID, Stmt::EmitCode(), ASTNode::EstimateCost(), ASTNode::getValueID(), Stmt::Optimize(), Stmt::Print(), and Stmt::TypeCheck().
|
virtual |
Emit LLVM IR for the statement, using the FunctionEmitContext to create the necessary instructions.
Implements Stmt.
Definition at line 111 of file stmt.cpp.
References FunctionEmitContext::AllocaInst(), AssertPos, Globals::ctx, FunctionEmitContext::EmitVariableDebugInfo(), Error(), Module::errorCount, SourcePos::first_line, g, Expr::GetConstant(), FunctionEmitContext::GetCurrentBasicBlock(), FunctionEmitContext::GetFunction(), Expr::GetLValueType(), Expr::GetType(), InitSymbol(), Type::IsConstType(), IsReferenceType(), Type::IsUniformType(), lHasUnsizedArrays(), Type::LLVMType(), m, Module::module, Symbol::name, Optimize(), Symbol::parentFunction, Symbol::pos, ASTNode::pos, PossiblyResolveFunctionOverloads(), SC_STATIC, FunctionEmitContext::SetDebugPos(), ArrayType::SizeUnsizedArrays(), Symbol::storageClass, Symbol::storagePtr, Symbol::type, TypeConvertExpr(), vars, Symbol::varyingCFDepth, and FunctionEmitContext::VaryingCFDepth().
|
virtual |
|
virtual |
The Optimize() method should perform any appropriate early-stage optimizations on the node (e.g. constant folding). This method will be called after the node's children have already been optimized, and the caller will store the returned ASTNode * in place of the original node. This method should return NULL if an error is encountered during optimization.
Reimplemented from Stmt.
Definition at line 235 of file stmt.cpp.
References Symbol::constValue, Type::Equal(), Expr::GetType(), Type::IsConstType(), Symbol::type, and vars.
Referenced by EmitCode().
|
virtual |
Print a representation of the statement (and any children AST nodes) to standard output. This method is used for debuggins.
Implements Stmt.
Definition at line 313 of file stmt.cpp.
References ASTNode::pos, SourcePos::Print(), and vars.
|
virtual |
Type checking should be performed by the node when this method is called. In the event of an error, a NULL value may be returned. As with ASTNode::Optimize(), the caller should store the returned pointer in place of the original ASTNode *.
Implements Stmt.
Definition at line 296 of file stmt.cpp.
References checkInit(), and vars.
std::vector<VariableDeclaration> DeclStmt::vars |
Definition at line 114 of file stmt.h.
Referenced by EmitCode(), Optimize(), Print(), TypeCheck(), and WalkAST().