|
Intel SPMD Program Compiler
1.3.0
|
Representation of a print() statement in the program. More...
#include <stmt.h>


Public Member Functions | |
| PrintStmt (const std::string &f, Expr *v, SourcePos p) | |
| void | EmitCode (FunctionEmitContext *ctx) const |
| void | Print (int indent) const |
| Stmt * | TypeCheck () |
| int | EstimateCost () const |
Public Attributes | |
| const std::string | format |
| Expr * | values |
Representation of a print() statement in the program.
It's currently necessary to have a special statement type for print() since strings aren't supported as first-class types in the language, but we need to be able to pass a formatting string as the first argument to print(). We also need this to be a variable argument function, which also isn't supported. Representing print() as a statement lets us work around both of those ugly little issues...
| void PrintStmt::EmitCode | ( | FunctionEmitContext * | ctx | ) | const [virtual] |
Emit LLVM IR for the statement, using the FunctionEmitContext to create the necessary instructions.
Implements Stmt.
Definition at line 3028 of file stmt.cpp.
References FunctionEmitContext::AddElementOffset(), FunctionEmitContext::AllocaInst(), AssertPos, FunctionEmitContext::BitCastInst(), FunctionEmitContext::CallInst(), ExprList::exprs, format, g, FunctionEmitContext::GetCurrentBasicBlock(), FunctionEmitContext::GetFullMask(), FunctionEmitContext::GetStringPtr(), FunctionEmitContext::LaneMask(), LLVMInt32(), lProcessPrintArg(), m, Module::module, NULL, FunctionEmitContext::SetDebugPos(), FunctionEmitContext::StoreInst(), Globals::target, values, Target::vectorWidth, and LLVMTypes::VoidPointerType.
| int PrintStmt::EstimateCost | ( | ) | const |
Definition at line 3122 of file stmt.cpp.
References COST_FUNCALL.
| void PrintStmt::Print | ( | int | indent | ) | const [virtual] |
| Stmt * PrintStmt::TypeCheck | ( | ) | [virtual] |
| const std::string PrintStmt::format |
Format string for the print() statement.
Definition at line 467 of file stmt.h.
Referenced by EmitCode(), and Print().
This holds the arguments passed to the print() statement. If more than one was provided, this will be an ExprList.
Definition at line 470 of file stmt.h.
Referenced by EmitCode().
1.7.5.1