#include "CodeGenFunction.h"
#include "CGCXXABI.h"
#include "CGDebugInfo.h"
#include "CGObjCRuntime.h"
#include "CodeGenModule.h"
#include "TargetInfo.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.
|
static llvm::Constant * | getMaskElt (llvm::ShuffleVectorInst *SVI, unsigned Idx, unsigned Off, llvm::Type *I32Ty) |
|
static llvm::Constant * | getAsInt32 (llvm::ConstantInt *C, llvm::Type *I32Ty) |
|
static BinOpInfo | createBinOpInfoFromIncDec (const UnaryOperator *E, llvm::Value *InVal, bool IsInc) |
|
static Value * | emitPointerArithmetic (CodeGenFunction &CGF, const BinOpInfo &op, bool isSubtraction) |
| Emit pointer + index arithmetic. More...
|
|
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) |
| isCheapEnoughToEvaluateUnconditionally - Return true if the specified expression is cheap enough and side-effect-free enough to evaluate unconditionally instead of conditionally. More...
|
|
static Value * | ConvertVec3AndVec4 (CGBuilderTy &Builder, CodeGenFunction &CGF, Value *Src, unsigned NumElementsDst) |
|
#define COMPOUND_OP |
( |
|
Op | ) |
|
#define HANDLEBINOP |
( |
|
OP | ) |
|
Value:
return Emit ## OP(EmitBinOps(E)); \
return EmitCompoundAssign(E, &ScalarExprEmitter::Emit ## OP); \
}
return(__x >> __y)|(__x<< (32-__y))
A builtin binary operation expression such as "x + y" or "x <= y".
CompoundAssignOperator - For compound assignments (e.g.
detail::InMemoryDirectory::const_iterator E
Definition at line 506 of file CGExprScalar.cpp.
#define VISITCOMP |
( |
|
CODE, |
|
|
|
UI, |
|
|
|
SI, |
|
|
|
FP |
|
) |
| |
Value:
return EmitCompare(E, llvm::ICmpInst::UI, llvm::ICmpInst::SI, \
llvm::FCmpInst::FP); }
return(__x >> __y)|(__x<< (32-__y))
A builtin binary operation expression such as "x + y" or "x <= y".
detail::InMemoryDirectory::const_iterator E
Definition at line 529 of file CGExprScalar.cpp.
Emit pointer + index arithmetic.
Definition at line 2413 of file CGExprScalar.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::Type::castAs(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateBitCast(), 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::LangOptions::isSignedOverflowDefined(), clang::Type::isVoidType(), clang::CodeGen::CodeGenTypeCache::PointerWidthInBits, clang::CodeGen::CodeGenTypeCache::PtrDiffTy, clang::CodeGen::CodeGenFunction::SanOpts, and clang::CodeGen::CodeGenTypeCache::VoidPtrTy.
static llvm::Constant* getAsInt32 |
( |
llvm::ConstantInt * |
C, |
|
|
llvm::Type * |
I32Ty |
|
) |
| |
|
static |
static llvm::Constant* getMaskElt |
( |
llvm::ShuffleVectorInst * |
SVI, |
|
|
unsigned |
Idx, |
|
|
unsigned |
Off, |
|
|
llvm::Type * |
I32Ty |
|
) |
| |
|
static |