93 virtual std::pair<llvm::Constant *, bool>
GetConstant(
const Type *type)
const;
107 virtual void Print()
const = 0;
347 virtual int getElementNumber()
const = 0;
348 virtual const Type *getElementType()
const = 0;
349 std::string getCandidateNearMatches()
const;
442 std::pair<llvm::Constant *, bool>
GetConstant(
const Type *constType)
const;
453 int GetValues(
bool *,
bool forceVarying =
false)
const;
454 int GetValues(int8_t *,
bool forceVarying =
false)
const;
455 int GetValues(uint8_t *,
bool forceVarying =
false)
const;
456 int GetValues(int16_t *,
bool forceVarying =
false)
const;
457 int GetValues(uint16_t *,
bool forceVarying =
false)
const;
458 int GetValues(int32_t *,
bool forceVarying =
false)
const;
459 int GetValues(uint32_t *,
bool forceVarying =
false)
const;
460 int GetValues(
float *,
bool forceVarying =
false)
const;
461 int GetValues(int64_t *,
bool forceVarying =
false)
const;
462 int GetValues(uint64_t *,
bool forceVarying =
false)
const;
463 int GetValues(
double *,
bool forceVarying =
false)
const;
683 bool ResolveOverloads(
SourcePos argPos,
const std::vector<const Type *> &argTypes,
684 const std::vector<bool> *argCouldBeNULL = NULL,
685 const std::vector<bool> *argIsConstant = NULL);
686 Symbol *GetMatchingFunction();
689 std::vector<Symbol *> getCandidateFunctions(
int argCount)
const;
690 static int computeOverloadCost(
const FunctionType *ftype,
const std::vector<const Type *> &argTypes,
691 const std::vector<bool> *argCouldBeNULL,
const std::vector<bool> *argIsConstant,
static bool classof(RefDerefExpr const *)
static bool classof(DerefExpr const *)
static bool classof(SelectExpr const *)
Common base class that provides shared functionality for PtrDerefExpr and RefDerefExpr.
static bool classof(ASTNode const *N)
virtual int EstimateCost() const =0
static bool classof(BinaryExpr const *)
static bool classof(AssignExpr const *)
static bool classof(NullPointerExpr const *)
static bool classof(ASTNode const *N)
static bool classof(ASTNode const *N)
Expression that represents taking a reference of a (non-reference) variable.
An expression that represents a NULL pointer.
Expr(SourcePos p, unsigned scid)
static bool classof(FunctionSymbolExpr const *)
static bool classof(SyncExpr const *)
NullPointerExpr(SourcePos p)
virtual std::pair< llvm::Constant *, bool > GetStorageConstant(const Type *type) const
Expression representing a compile-time constant value.
static bool classof(ReferenceExpr const *)
const PointerType * lvalueType
static bool classof(UnaryExpr const *)
virtual Expr * Optimize()=0
static bool classof(ASTNode const *N)
static bool classof(ExprList const *)
static bool classof(ASTNode const *N)
bool CanConvertTypes(const Type *fromType, const Type *toType, const char *errorMsgBase=NULL, SourcePos pos=SourcePos())
virtual std::pair< llvm::Constant *, bool > GetConstant(const Type *type) const
Expr * MakeBinaryExpr(BinaryExpr::Op o, Expr *a, Expr *b, SourcePos p)
Type implementation for pointers to other types.
static bool classof(ASTNode const *N)
virtual void Print() const =0
static bool classof(ASTNode const *N)
static bool classof(ASTNode const *N)
virtual llvm::Value * GetValue(FunctionEmitContext *ctx) const =0
static bool classof(SymbolExpr const *)
static bool classof(MemberExpr const *)
static bool classof(ASTNode const *N)
static bool classof(SizeOfExpr const *)
virtual llvm::Value * GetLValue(FunctionEmitContext *ctx) const
static bool classof(NewExpr const *)
Expression representing a type cast of the given expression to a probably-different type...
static bool classof(Expr const *)
Abstract base class for nodes in the abstract syntax tree (AST).
static bool classof(TypeCastExpr const *)
unsigned getValueID() const
static bool classof(ASTNode const *N)
static bool classof(ASTNode const *N)
virtual const Type * GetLValueType() const
static bool classof(ASTNode const *N)
virtual const Type * GetType() const =0
A sync statement in the program (waits for all launched tasks before proceeding). ...
static bool classof(ASTNode const *N)
Representation of a range of positions in a source file.
Expression representing a function symbol in the program (generally used for a function call)...
static bool classof(PtrDerefExpr const *)
std::vector< Symbol * > candidateFunctions
void InitSymbol(llvm::Value *lvalue, const Type *symType, Expr *initExpr, FunctionEmitContext *ctx, SourcePos pos)
static bool classof(ConstExpr const *)
static bool classof(ASTNode const *N)
Expression representing member selection ("foo.bar").
std::vector< Expr * > exprs
static bool classof(ASTNode const *N)
static bool classof(IndexExpr const *)
static bool classof(ASTNode const *N)
Expression representing indexing into something with an integer offset.
Type representing a function (return type + argument types)
Representation of a program symbol.
Interface class that defines the type abstraction.
Expression that represents dereferencing a pointer to get its value.
static bool classof(FunctionCallExpr const *)
Expr * TypeConvertExpr(Expr *expr, const Type *toType, const char *errorMsgBase)
static bool classof(ASTNode const *N)
Expr is the abstract base class that defines the interface that all expression types must implement...
static bool classof(AddressOfExpr const *)
Expression that represents dereferencing a reference to get its value.
virtual Symbol * GetBaseSymbol() const
bool PossiblyResolveFunctionOverloads(Expr *expr, const Type *type)
Expression representing a symbol reference in the program.
Selection expression, corresponding to "test ? a : b".
static bool classof(ASTNode const *N)
static bool classof(ASTNode const *N)
static bool classof(ASTNode const *N)
Main ispc.header file. Defines Target, Globals and Opt classes.
static bool classof(ASTNode const *N)
ExprList(Expr *e, SourcePos p)
virtual Expr * TypeCheck()=0
const SourcePos identifierPos
static bool classof(ASTNode const *N)
Expression representing a function call.
File with declarations for classes related to type representation.