Intel SPMD Program Compiler  1.9.1
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
LabeledStmt Class Reference

#include <stmt.h>

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

Public Member Functions

 LabeledStmt (const char *label, Stmt *stmt, SourcePos p)
 
void EmitCode (FunctionEmitContext *ctx) const
 
void Print (int indent) const
 
StmtOptimize ()
 
StmtTypeCheck ()
 
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 (LabeledStmt 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::string name
 
Stmtstmt
 
- 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

Statement corresponding to a label (as would be used as a goto target) in the program.

Definition at line 477 of file stmt.h.

Constructor & Destructor Documentation

LabeledStmt::LabeledStmt ( const char *  label,
Stmt stmt,
SourcePos  p 
)

Definition at line 3165 of file stmt.cpp.

References name, and stmt.

Member Function Documentation

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

Definition at line 481 of file stmt.h.

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

Definition at line 482 of file stmt.h.

References ASTNode::getValueID(), and ASTNode::LabeledStmtID.

void LabeledStmt::EmitCode ( FunctionEmitContext ctx) const
virtual
int LabeledStmt::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 3222 of file stmt.cpp.

Stmt * LabeledStmt::Optimize ( )
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 3200 of file stmt.cpp.

void LabeledStmt::Print ( int  indent) const
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 3192 of file stmt.cpp.

References name, Stmt::Print(), and stmt.

Stmt * LabeledStmt::TypeCheck ( )
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 3206 of file stmt.cpp.

References Error(), name, and ASTNode::pos.

Member Data Documentation

std::string LabeledStmt::name

Name of the label.

Definition at line 494 of file stmt.h.

Referenced by EmitCode(), FunctionEmitContext::initLabelBBlocks(), LabeledStmt(), Print(), and TypeCheck().

Stmt* LabeledStmt::stmt

Statements following the label.

Definition at line 496 of file stmt.h.

Referenced by EmitCode(), LabeledStmt(), Print(), and WalkAST().


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