HOLZSCHUCH Nicolas 8dcc9345f6 Merge branch 'master' of https://github.com/llvm-mirror/clang 5 anni fa
..
ABIInfo.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
Address.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
BackendUtil.cpp 8dcc9345f6 Merge branch 'master' of https://github.com/llvm-mirror/clang 5 anni fa
CGAtomic.cpp 7fc84cdab9 Codegen - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
CGBlocks.cpp cb0ef14067 CGBlocks - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
CGBlocks.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGBuilder.h ce7674d7be Fix parameter name comments using clang-tidy. NFC. 6 anni fa
CGBuiltin.cpp 2134663055 CGBuiltin - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
CGCUDANV.cpp 4eef7a8ad0 [Alignment][Clang][NFC] Add CharUnits::getAsAlign 5 anni fa
CGCUDARuntime.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGCUDARuntime.h 5e6563143c [HIP] Add the interface deriving the stub name of device kernels. 6 anni fa
CGCXX.cpp 7fc84cdab9 Codegen - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
CGCXXABI.cpp 84d475a5ed Silence static analyzer getAs<RecordType> null dereference warnings. NFCI. 5 anni fa
CGCXXABI.h 2eb4788e8c Improve code generation for thread_local variables: 6 anni fa
CGCall.cpp 8b10d16729 [Alignment] Migrate Attribute::getWith(Stack)Alignment 5 anni fa
CGCall.h 6d763e31d2 [opaque pointer types] Make EmitCall pass Function Types to 6 anni fa
CGClass.cpp 03bb1778b6 [OpenCL] Preserve addrspace in CGClass (PR43145) 5 anni fa
CGCleanup.cpp 4eef7a8ad0 [Alignment][Clang][NFC] Add CharUnits::getAsAlign 5 anni fa
CGCleanup.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGCoroutine.cpp ce7674d7be Fix parameter name comments using clang-tidy. NFC. 6 anni fa
CGDebugInfo.cpp 14947e8df1 PCH debug info: Avoid appending the source directory to an absolute path 5 anni fa
CGDebugInfo.h eb045be428 Revert "[CGDebugInfo] Simplify EmitFunctionDecl parameters, NFC" 6 anni fa
CGDecl.cpp 1d08493df3 Added support for "#pragma clang section relro=<name>" 5 anni fa
CGDeclCXX.cpp 0e6f1764e3 Fix Calling Convention through aliases 5 anni fa
CGException.cpp ed5c51707d [WebAssembly] Add -fwasm-exceptions for wasm EH 6 anni fa
CGExpr.cpp ea521aa602 [c++20] Add CXXRewrittenBinaryOperator to represent a comparison 5 anni fa
CGExprAgg.cpp ea521aa602 [c++20] Add CXXRewrittenBinaryOperator to represent a comparison 5 anni fa
CGExprCXX.cpp 827afc80db CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization. 5 anni fa
CGExprComplex.cpp ea521aa602 [c++20] Add CXXRewrittenBinaryOperator to represent a comparison 5 anni fa
CGExprConstant.cpp e606cc177e CGExprConstant - silence static analyzer getAs<> null dereference warning. NFCI. 5 anni fa
CGExprScalar.cpp ea521aa602 [c++20] Add CXXRewrittenBinaryOperator to represent a comparison 5 anni fa
CGGPUBuiltin.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGLoopInfo.cpp 1b1167f58f Recommit "[Clang] Pragma vectorize_width() implies vectorize(enable)" 5 anni fa
CGLoopInfo.h e03316caa0 Don't keep stale pointers to LoopInfos. 6 anni fa
CGNonTrivialStruct.cpp e63380d34e Do a sweep of symbol internalization. NFC. 6 anni fa
CGObjC.cpp 38c1f7c254 Properly handle instantiation-dependent array bounds. 5 anni fa
CGObjCGNU.cpp 7fc84cdab9 Codegen - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
CGObjCMac.cpp 4eef7a8ad0 [Alignment][Clang][NFC] Add CharUnits::getAsAlign 5 anni fa
CGObjCRuntime.cpp 679ab5f711 [opaque pointer types] Pass function types for runtime function calls. 6 anni fa
CGObjCRuntime.h 679ab5f711 [opaque pointer types] Pass function types for runtime function calls. 6 anni fa
CGOpenCLRuntime.cpp eae71f8d05 [OpenCL] Simplify LLVM IR generated for OpenCL blocks 6 anni fa
CGOpenCLRuntime.h eae71f8d05 [OpenCL] Simplify LLVM IR generated for OpenCL blocks 6 anni fa
CGOpenMPRuntime.cpp 653a638f94 [OPENMP50]Add support for master taskloop simd. 5 anni fa
CGOpenMPRuntime.h ea4934045a [Clang][OpenMP Offload] Move offload registration code to the wrapper 5 anni fa
CGOpenMPRuntimeNVPTX.cpp 653a638f94 [OPENMP50]Add support for master taskloop simd. 5 anni fa
CGOpenMPRuntimeNVPTX.h b04fa26eaf [OPENMP50]Support for declare variant directive for NVPTX target. 5 anni fa
CGRecordLayout.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGRecordLayoutBuilder.cpp 31de5dab92 P0840R2: support for [[no_unique_address]] attribute 6 anni fa
CGStmt.cpp 653a638f94 [OPENMP50]Add support for master taskloop simd. 5 anni fa
CGStmtOpenMP.cpp 653a638f94 [OPENMP50]Add support for master taskloop simd. 5 anni fa
CGVTT.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGVTables.cpp 62e70af15a Reland: Dead Virtual Function Elimination 5 anni fa
CGVTables.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CGValue.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CMakeLists.txt 8942d642f0 Make CodeGen depend on ASTMatchers 6 anni fa
CodeGenABITypes.cpp ce7674d7be Fix parameter name comments using clang-tidy. NFC. 6 anni fa
CodeGenAction.cpp 211daf9ad4 Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 6 anni fa
CodeGenFunction.cpp bb282f4751 Reland r374450 with Richard Smith's comments and test fixed. 5 anni fa
CodeGenFunction.h 653a638f94 [OPENMP50]Add support for master taskloop simd. 5 anni fa
CodeGenModule.cpp c78da41cda [AMDGPU] Fix assertion due to initializer list 5 anni fa
CodeGenModule.h 62e70af15a Reland: Dead Virtual Function Elimination 5 anni fa
CodeGenPGO.cpp 49a6b09101 [Clang] Migrate llvm::make_unique to std::make_unique 6 anni fa
CodeGenPGO.h 6aa1f42be9 Fix uninitialized variable warning in CodeGenPGO constructor. NFCI. 5 anni fa
CodeGenTBAA.cpp 168f519698 Fix TBAA representation for zero-sized fields and unnamed bit-fields. 6 anni fa
CodeGenTBAA.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CodeGenTypeCache.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CodeGenTypes.cpp 84d475a5ed Silence static analyzer getAs<RecordType> null dereference warnings. NFCI. 5 anni fa
CodeGenTypes.h 3a3e9339ec IRGen: Remove StructorType; thread GlobalDecl through more code. NFCI. 6 anni fa
ConstantEmitter.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
ConstantInitBuilder.cpp 4eef7a8ad0 [Alignment][Clang][NFC] Add CharUnits::getAsAlign 5 anni fa
CoverageMappingGen.cpp a2a3b137f8 Re-land "Use -fdebug-compilation-dir to form absolute paths in coverage mappings" 5 anni fa
CoverageMappingGen.h a2a3b137f8 Re-land "Use -fdebug-compilation-dir to form absolute paths in coverage mappings" 5 anni fa
EHScopeStack.h f724ed4411 Replace llvm::integer_sequence and friends with the C++14 standard version 6 anni fa
ItaniumCXXABI.cpp 62e70af15a Reland: Dead Virtual Function Elimination 5 anni fa
MacroPPCallbacks.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MacroPPCallbacks.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MicrosoftCXXABI.cpp 7fc84cdab9 Codegen - silence static analyzer getAs<> null dereference warnings. NFCI. 5 anni fa
ModuleBuilder.cpp 3da9ca444f [Clang] Use -main-file-name for source filename if not set 5 anni fa
ObjectFilePCHContainerOperations.cpp 4eef7a8ad0 [Alignment][Clang][NFC] Add CharUnits::getAsAlign 5 anni fa
PatternInit.cpp 378f8bc374 CodeGet: Init 32bit pointers with 0xFFFFFFFF 6 anni fa
PatternInit.h eae000b425 Variable auto-init: also auto-init alloca 6 anni fa
README.txt f1c8380d26 These IRgen improvements have been done. 16 anni fa
SanitizerMetadata.cpp 647bdd3207 ARM MTE stack sanitizer. 6 anni fa
SanitizerMetadata.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SwiftCallingConv.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
TargetInfo.cpp 2aa66afa82 Remove an useless allocation (from by clang-analyzer/scan-build) 5 anni fa
TargetInfo.h 5e43603aaa [OpenCL][PR41727] Prevent ICE on global dtors 6 anni fa
VarBypassDetector.cpp 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
VarBypassDetector.h 324f918438 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa

README.txt

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!

//===---------------------------------------------------------------------===//