#include "CGCXXABI.h"
#include "CGObjCRuntime.h"
#include "CGRecordLayout.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "ConstantEmitter.h"
#include "EHScopeStack.h"
#include "TargetInfo.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/StmtVisitor.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
Go to the source code of this file.
namespace llvm Diagnostic wrappers for TextAPI types for error reporting.Definition at line 990 of file CGExprAgg.cpp.
◆ castPreservesZero() ◆ CheckAggExprForMemSetUse()CheckAggExprForMemSetUse - If the initializer is large and has a lot of zeros in it, emit a memset and avoid storing the individual zeros.
Definition at line 2021 of file CGExprAgg.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CGBuilderTy::CreateMemSet(), E, clang::CharUnits::fromQuantity(), clang::CodeGen::AggValueSlot::getAddress(), clang::Type::getAs(), clang::ASTContext::getBaseElementType(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLangOpts(), GetNumNonZeroBytesInInit(), clang::CodeGen::AggValueSlot::getPreferredSize(), clang::Expr::getType(), clang::CXXRecordDecl::hasUserDeclaredConstructor(), clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::CodeGen::Address::isValid(), clang::CodeGen::AggValueSlot::isVolatile(), clang::CodeGen::AggValueSlot::isZeroed(), Loc, clang::CodeGen::AggValueSlot::setZeroed(), and clang::CodeGen::Address::withElementType().
◆ EmitCompare()Definition at line 996 of file CGExprAgg.cpp.
References clang::CodeGen::CodeGenFunction::CGM, CK_Equal, CK_Greater, CK_Less, E, clang::CodeGen::CGCXXABI::EmitMemberPointerComparison(), clang::Type::getAs(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::Expr::getType(), clang::Type::hasFloatingRepresentation(), clang::Type::hasSignedIntegerRepresentation(), clang::Type::isIntegralOrEnumerationType(), and clang::Type::isPointerType().
◆ findPeephole() ◆ GetNumNonZeroBytesInInit()GetNumNonZeroBytesInInit - Get an approximate count of the number of non-zero bytes that will be stored when outputting the initializer for the specified initializer expression.
Definition at line 1959 of file CGExprAgg.cpp.
References E, clang::RecordDecl::fields(), clang::Type::getAs(), clang::CodeGen::CodeGenFunction::getContext(), clang::InitListExpr::getInit(), clang::InitListExpr::getNumInits(), GetNumNonZeroBytesInInit(), clang::TargetInfo::getPointerWidth(), clang::CodeGen::CodeGenFunction::getTarget(), clang::Expr::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::ASTContext::getTypeSizeInChars(), clang::Expr::IgnoreParenNoopCasts(), isSimpleZero(), clang::InitListExpr::isTransparent(), clang::CodeGen::CodeGenTypes::isZeroInitializable(), clang::ASTContext::toCharUnitsFromBits(), and clang::CharUnits::Zero().
Referenced by CheckAggExprForMemSetUse(), and GetNumNonZeroBytesInInit().
◆ isBlockVarRef() static bool isBlockVarRef ( const Expr * E ) static ◆ isSimpleZero()isSimpleZero - If emitting this value will obviously just cause a store of zero to memory, return true.
This can return false if uncertain, so it just handles simple cases.
Definition at line 1524 of file CGExprAgg.cpp.
References castPreservesZero(), E, clang::CodeGen::CodeGenFunction::getContext(), clang::Expr::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::Expr::HasSideEffects(), clang::Expr::IgnoreParens(), clang::CodeGen::CodeGenTypes::isPointerZeroInitializable(), and clang::CodeGen::CodeGenTypes::isZeroInitializable().
Referenced by GetNumNonZeroBytesInInit().
◆ isTrivialFiller() static bool isTrivialFiller ( Expr * E ) staticRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4