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

Statement representing a single declaration (which in turn may declare a number of variables. More...

#include <stmt.h>

Inheritance diagram for DeclStmt:
Inheritance graph
Collaboration diagram for DeclStmt:
Collaboration graph

Public Member Functions

 DeclStmt (const std::vector< VariableDeclaration > &v, SourcePos pos)
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 (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< VariableDeclarationvars
- 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 representing a single declaration (which in turn may declare a number of variables.

Definition at line 101 of file stmt.h.

Constructor & Destructor Documentation

◆ DeclStmt()

DeclStmt::DeclStmt ( const std::vector< VariableDeclaration > &  v,
SourcePos  pos 

Definition at line 109 of file stmt.cpp.

Member Function Documentation

◆ classof() [1/2]

static bool DeclStmt::classof ( DeclStmt const *  )

Definition at line 105 of file stmt.h.

◆ classof() [2/2]

static bool DeclStmt::classof ( ASTNode const *  N)

◆ EmitCode()

void DeclStmt::EmitCode ( FunctionEmitContext ctx) const

◆ EstimateCost()

int DeclStmt::EstimateCost ( ) const

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 498 of file stmt.cpp.

◆ Optimize()

Stmt * DeclStmt::Optimize ( )

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 405 of file stmt.cpp.

References Symbol::constValue, Type::Equal(), Expr::GetType(), Type::IsConstType(), Symbol::type, and vars.

Referenced by EmitCode().

◆ Print()

void DeclStmt::Print ( int  indent) const

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 483 of file stmt.cpp.

References ASTNode::pos, SourcePos::Print(), and vars.

◆ TypeCheck()

Stmt * DeclStmt::TypeCheck ( )

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 466 of file stmt.cpp.

References checkInit(), and vars.

Member Data Documentation

◆ vars

std::vector<VariableDeclaration> DeclStmt::vars

Definition at line 115 of file stmt.h.

Referenced by EmitCode(), Optimize(), Print(), TypeCheck(), and WalkAST().

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