Index of /archives/NetBSD/NetBSD-release-9/src/external/bsd/llvm/dist/clang/lib/CodeGen
Name Last modified Size Description
Parent Directory -
ABIInfo.h 2018-07-18 03:31 4.7K
Address.h 2016-02-28 07:12 3.3K
BackendUtil.cpp 2018-07-18 03:30 54K
CGAtomic.cpp 2018-07-18 03:30 83K
CGBlocks.cpp 2018-07-18 03:30 98K
CGBlocks.h 2017-01-11 19:33 8.5K
CGBuilder.h 2018-07-18 03:31 13K
CGBuiltin.cpp 2018-07-18 03:31 507K
CGCUDANV.cpp 2018-07-18 03:31 21K
CGCUDARuntime.cpp 2017-01-11 19:33 1.5K
CGCUDARuntime.h 2017-01-11 19:33 2.1K
CGCXX.cpp 2018-07-18 03:30 12K
CGCXXABI.cpp 2018-07-18 03:31 12K
CGCXXABI.h 2018-07-18 03:31 26K
CGCall.cpp 2018-07-18 03:31 173K
CGCall.h 2018-07-18 03:31 12K
CGClass.cpp 2018-07-18 03:31 109K
CGCleanup.cpp 2018-07-18 03:31 47K
CGCleanup.h 2018-07-18 03:30 20K
CGCoroutine.cpp 2018-07-18 03:31 28K
CGDebugInfo.cpp 2018-07-18 03:31 164K
CGDebugInfo.h 2018-07-18 03:31 30K
CGDecl.cpp 2018-07-18 03:31 79K
CGDeclCXX.cpp 2018-07-18 03:31 27K
CGException.cpp 2018-07-18 03:30 76K
CGExpr.cpp 2018-07-18 03:31 191K
CGExprAgg.cpp 2018-07-18 03:30 73K
CGExprCXX.cpp 2018-07-18 03:31 88K
CGExprComplex.cpp 2018-07-18 03:31 44K
CGExprConstant.cpp 2018-07-18 03:30 76K
CGExprScalar.cpp 2018-07-18 03:31 158K
CGGPUBuiltin.cpp 2018-07-18 03:31 4.8K
CGLoopInfo.cpp 2017-01-11 19:33 10K
CGLoopInfo.h 2018-07-18 03:31 5.3K
CGNonTrivialStruct.cpp 2018-07-18 03:31 36K
CGObjC.cpp 2018-07-18 03:30 130K
CGObjCGNU.cpp 2018-07-18 03:31 161K
CGObjCMac.cpp 2018-07-18 03:31 293K
CGObjCRuntime.cpp 2018-07-18 03:30 13K
CGObjCRuntime.h 2017-01-11 19:33 13K
CGOpenCLRuntime.cpp 2018-07-18 03:31 6.7K
CGOpenCLRuntime.h 2018-07-18 03:31 3.4K
CGOpenMPRuntime.cpp 2018-07-18 03:31 376K
CGOpenMPRuntime.h 2018-07-18 03:31 97K
CGOpenMPRuntimeNVPTX.cpp 2018-07-18 03:30 152K
CGOpenMPRuntimeNVPTX.h 2018-07-18 03:31 18K
CGRecordLayout.h 2018-07-18 03:31 7.8K
CGRecordLayoutBuilder.cpp 2018-07-18 03:31 38K
CGStmt.cpp 2018-07-18 03:31 85K
CGStmtOpenMP.cpp 2018-07-18 03:31 208K
CGVTT.cpp 2018-07-18 03:31 6.8K
CGVTables.cpp 2018-07-18 03:30 41K
CGVTables.h 2018-07-18 03:31 4.8K
CGValue.h 2018-07-18 03:31 20K
CMakeLists.txt 2018-07-18 03:31 1.9K
CVS/ 2024-02-15 03:45 -
CodeGenABITypes.cpp 2018-07-18 03:31 3.2K
CodeGenAction.cpp 2018-07-18 03:31 40K
CodeGenFunction.cpp 2018-07-18 03:31 91K
CodeGenFunction.h 2018-07-18 03:31 181K
CodeGenModule.cpp 2018-07-18 03:31 192K
CodeGenModule.h 2018-07-18 03:31 55K
CodeGenPGO.cpp 2018-07-18 03:31 36K
CodeGenPGO.h 2017-08-02 04:35 4.3K
CodeGenTBAA.cpp 2018-07-18 03:31 15K
CodeGenTBAA.h 2018-07-18 03:30 9.2K
CodeGenTypeCache.h 2018-07-18 03:31 3.2K
CodeGenTypes.cpp 2018-07-18 03:31 29K
CodeGenTypes.h 2018-07-18 03:30 15K
ConstantEmitter.h 2018-07-18 03:31 6.5K
ConstantInitBuilder.cpp 2017-08-02 04:35 9.4K
CoverageMappingGen.cpp 2018-07-18 03:31 51K
CoverageMappingGen.h 2018-07-18 03:31 3.8K
EHScopeStack.h 2017-08-02 04:35 14K
ItaniumCXXABI.cpp 2018-07-18 03:31 162K
MacroPPCallbacks.cpp 2018-07-18 03:30 6.7K
MacroPPCallbacks.h 2018-07-18 03:31 4.4K
MicrosoftCXXABI.cpp 2018-07-18 03:31 172K
ModuleBuilder.cpp 2018-07-18 03:31 11K
ObjectFilePCHContainerOperations.cpp 2018-07-18 03:31 13K
README.txt 2013-11-28 23:14 1.8K
SanitizerMetadata.cpp 2018-07-18 03:31 4.5K
SanitizerMetadata.h 2016-02-28 07:12 1.6K
SwiftCallingConv.cpp 2018-07-18 03:31 28K
TargetInfo.cpp 2018-07-18 03:31 333K
TargetInfo.h 2018-07-18 03:31 13K
VarBypassDetector.cpp 2018-07-18 03:31 5.1K
VarBypassDetector.h 2017-01-11 19:33 2.2K
IRgen optimization opportunities.
//===---------------------------------------------------------------------===//
The common pattern of
--
short x; // or char, etc
(x == 10)
--
generates an zext/sext of x which can easily be avoided.
//===---------------------------------------------------------------------===//
Bitfields accesses can be shifted to simplify masking and sign
extension. For example, if the bitfield width is 8 and it is
appropriately aligned then is is a lot shorter to just load the char
directly.
//===---------------------------------------------------------------------===//
It may be worth avoiding creation of alloca's for formal arguments
for the common situation where the argument is never written to or has
its address taken. The idea would be to begin generating code by using
the argument directly and if its address is taken or it is stored to
then generate the alloca and patch up the existing code.
In theory, the same optimization could be a win for block local
variables as long as the declaration dominates all statements in the
block.
NOTE: The main case we care about this for is for -O0 -g compile time
performance, and in that scenario we will need to emit the alloca
anyway currently to emit proper debug info. So this is blocked by
being able to emit debug information which refers to an LLVM
temporary, not an alloca.
//===---------------------------------------------------------------------===//
We should try and avoid generating basic blocks which only contain
jumps. At -O0, this penalizes us all the way from IRgen (malloc &
instruction overhead), all the way down through code generation and
assembly time.
On 176.gcc:expr.ll, it looks like over 12% of basic blocks are just
direct branches!
//===---------------------------------------------------------------------===//