Intel® Implicit SPMD Program Compiler (Intel® ISPC)
1.13.0
|
Representation of an assert statement in the program. More...
#include <stmt.h>
Public Member Functions | |
AssertStmt (const std::string &msg, Expr *e, SourcePos p) | |
void | EmitCode (FunctionEmitContext *ctx) const |
void | Print (int indent) const |
Stmt * | TypeCheck () |
int | EstimateCost () const |
Public Member Functions inherited from Stmt | |
Stmt (SourcePos p, unsigned scid) | |
virtual Stmt * | Optimize () |
Public Member Functions inherited from ASTNode | |
ASTNode (SourcePos p, unsigned scid) | |
virtual | ~ASTNode () |
unsigned | getValueID () const |
Static Public Member Functions | |
static bool | classof (AssertStmt 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 | |
const std::string | message |
Expr * | expr |
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 } |
Representation of an assert statement in the program.
Like print() above, since we don't have strings as first-class types in the language, we need to do some gymnastics to support it. Like assert() in C, assert() checks the given condition and prints an error and calls abort if the condition fails. For varying conditions, the assert triggers if it's true for any of the program instances.
|
inlinestatic |
|
inlinestatic |
Definition at line 503 of file stmt.h.
References ASTNode::AssertStmtID, Stmt::EmitCode(), ASTNode::EstimateCost(), ASTNode::getValueID(), 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 2790 of file stmt.cpp.
References AssertPos, FunctionEmitContext::CallInst(), Error(), Module::errorCount, expr, SourcePos::first_column, SourcePos::first_line, FunctionEmitContext::GetCurrentBasicBlock(), FunctionEmitContext::GetFullMask(), FunctionEmitContext::GetStringPtr(), Expr::GetType(), Expr::GetValue(), Type::IsUniformType(), m, message, Module::module, SourcePos::name, and ASTNode::pos.
|
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 2843 of file stmt.cpp.
References COST_ASSERT.
|
virtual |
|
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 2831 of file stmt.cpp.
References expr, Expr::GetType(), Type::IsUniformType(), TypeConvertExpr(), AtomicType::UniformBool, and AtomicType::VaryingBool.
Expr* AssertStmt::expr |
The expression to be evaluated (that is asserted to be true).
Definition at line 514 of file stmt.h.
Referenced by EmitCode(), TypeCheck(), and WalkAST().
const std::string AssertStmt::message |
Message to print if the assertion fails.
Definition at line 512 of file stmt.h.
Referenced by EmitCode(), and Print().