clang API Documentation
#include "CodeGenFunction.h"
#include "CGCXXABI.h"
#include "CGDebugInfo.h"
#include "CGObjCRuntime.h"
#include "CodeGenModule.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/RecordLayout.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Frontend/CodeGenOptions.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Module.h"
#include <cstdarg>
Go to the source code of this file.
Defines | |
#define | HANDLEBINOP(OP) |
#define | VISITCOMP(CODE, UI, SI, FP) |
#define | COMPOUND_OP(Op) |
Enumerations | |
enum | IntrinsicType { VCMPEQ, VCMPGT } |
Functions | |
static llvm::Constant * | getMaskElt (llvm::ShuffleVectorInst *SVI, unsigned Idx, unsigned Off, llvm::Type *I32Ty) |
static bool | ShouldNullCheckClassCastValue (const CastExpr *CE) |
static Value * | emitPointerArithmetic (CodeGenFunction &CGF, const BinOpInfo &op, bool isSubtraction) |
Emit pointer + index arithmetic. | |
static Value * | buildFMulAdd (llvm::BinaryOperator *MulOp, Value *Addend, const CodeGenFunction &CGF, CGBuilderTy &Builder, bool negMul, bool negAdd) |
static Value * | tryEmitFMulAdd (const BinOpInfo &op, const CodeGenFunction &CGF, CGBuilderTy &Builder, bool isSub=false) |
static llvm::Intrinsic::ID | GetIntrinsic (IntrinsicType IT, BuiltinType::Kind ElemKind) |
static bool | isCheapEnoughToEvaluateUnconditionally (const Expr *E, CodeGenFunction &CGF) |
#define COMPOUND_OP | ( | Op | ) |
case BO_##Op##Assign: \
return Scalar.EmitCompoundAssignLValue(E, &ScalarExprEmitter::Emit##Op, \
Result)
Referenced by clang::CodeGen::CodeGenFunction::EmitCompoundAssignmentLValue().
#define HANDLEBINOP | ( | OP | ) |
Value *VisitBin ## OP(const BinaryOperator *E) { \ return Emit ## OP(EmitBinOps(E)); \ } \ Value *VisitBin ## OP ## Assign(const CompoundAssignOperator *E) { \ return EmitCompoundAssign(E, &ScalarExprEmitter::Emit ## OP); \ }
Definition at line 506 of file CGExprScalar.cpp.
#define VISITCOMP | ( | CODE, | |
UI, | |||
SI, | |||
FP | |||
) |
Value *VisitBin##CODE(const BinaryOperator *E) { \ return EmitCompare(E, llvm::ICmpInst::UI, llvm::ICmpInst::SI, \ llvm::FCmpInst::FP); }
Definition at line 528 of file CGExprScalar.cpp.
enum IntrinsicType |
Definition at line 2733 of file CGExprScalar.cpp.
static Value* buildFMulAdd | ( | llvm::BinaryOperator * | MulOp, |
Value * | Addend, | ||
const CodeGenFunction & | CGF, | ||
CGBuilderTy & | Builder, | ||
bool | negMul, | ||
bool | negAdd | ||
) | [static] |
Definition at line 2456 of file CGExprScalar.cpp.
References clang::CodeGen::CodeGenFunction::CGM, and clang::CodeGen::CodeGenModule::getIntrinsic().
Referenced by tryEmitFMulAdd().
static Value* emitPointerArithmetic | ( | CodeGenFunction & | CGF, |
const BinOpInfo & | op, | ||
bool | isSubtraction | ||
) | [static] |
Emit pointer + index arithmetic.
Definition at line 2365 of file CGExprScalar.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::Type::castAs(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::EmitBoundsCheck(), clang::ast_matchers::expr, clang::Type::getAs(), clang::ASTContext::getAsVariableArrayType(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLangOpts(), clang::BinaryOperator::getLHS(), clang::PointerType::getPointeeType(), clang::BinaryOperator::getRHS(), clang::CodeGen::CodeGenModule::getSize(), clang::Expr::getType(), clang::ASTContext::getTypeSizeInChars(), clang::CodeGen::CodeGenFunction::getVLASize(), clang::SanitizerSet::has(), clang::Type::isFunctionType(), clang::Type::isSignedIntegerOrEnumerationType(), clang::Type::isVoidType(), clang::CodeGen::CodeGenTypeCache::PointerWidthInBits, clang::CodeGen::CodeGenTypeCache::PtrDiffTy, clang::CodeGen::CodeGenFunction::SanOpts, and clang::CodeGen::CodeGenTypeCache::VoidPtrTy.
static llvm::Intrinsic::ID GetIntrinsic | ( | IntrinsicType | IT, |
BuiltinType::Kind | ElemKind | ||
) | [static] |
Definition at line 2735 of file CGExprScalar.cpp.
References VCMPEQ.
static llvm::Constant* getMaskElt | ( | llvm::ShuffleVectorInst * | SVI, |
unsigned | Idx, | ||
unsigned | Off, | ||
llvm::Type * | I32Ty | ||
) | [static] |
Definition at line 1132 of file CGExprScalar.cpp.
static bool isCheapEnoughToEvaluateUnconditionally | ( | const Expr * | E, |
CodeGenFunction & | CGF | ||
) | [static] |
isCheapEnoughToEvaluateUnconditionally - Return true if the specified expression is cheap enough and side-effect-free enough to evaluate unconditionally instead of conditionally. This is used to convert control flow into selects in some cases.
Definition at line 3145 of file CGExprScalar.cpp.
References clang::CodeGen::CodeGenFunction::getContext(), clang::Expr::IgnoreParens(), and clang::Expr::isEvaluatable().
static bool ShouldNullCheckClassCastValue | ( | const CastExpr * | CE | ) | [static] |
Definition at line 1297 of file CGExprScalar.cpp.
References clang::CK_UncheckedDerivedToBase, clang::CastExpr::getCastKind(), clang::CastExpr::getSubExpr(), and clang::VK_RValue.
static Value* tryEmitFMulAdd | ( | const BinOpInfo & | op, |
const CodeGenFunction & | CGF, | ||
CGBuilderTy & | Builder, | ||
bool | isSub = false |
||
) | [static] |
Definition at line 2490 of file CGExprScalar.cpp.
References clang::BO_Add, clang::BO_AddAssign, clang::BO_Sub, clang::BO_SubAssign, buildFMulAdd(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGenOptions::FPC_On, and clang::CodeGen::CodeGenModule::getCodeGenOpts().