llvm-project/clang/lib/CodeGen
Adrian Prantl 2dbdd20d37 Demote the "Debug Info Version" module flag to llvm::Module::Warning
behavior on mismatch. The AutoUpgrader will drop incompatible debug info
any way and also emit a warning diagnostic for it.

rdar://problem/16926122

llvm-svn: 209182
2014-05-19 23:40:06 +00:00
..
ABIInfo.h Sort all the #include lines with LLVM's utils/sort_includes.py which 2014-01-07 11:51:46 +00:00
BackendUtil.cpp Missed a ! in the if statement when these were being set and the options 2014-05-16 20:46:14 +00:00
CGAtomic.cpp Fix atomic libcall. 2014-03-26 17:35:01 +00:00
CGBlocks.cpp If a declaration is loaded, and then a module import adds a redeclaration, then 2014-05-16 23:01:30 +00:00
CGBlocks.h Don't indent inside namespaces. 2014-05-09 00:26:20 +00:00
CGBuilder.h Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to 2013-01-02 11:45:17 +00:00
CGBuiltin.cpp [ARM64]Fix the bug right shift uint64_t by 64 generates incorrect result. 2014-05-14 08:59:30 +00:00
CGCUDANV.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-12 06:41:41 +00:00
CGCUDARuntime.cpp CodeGen: Initial instrumentation based PGO implementation 2014-01-06 22:27:43 +00:00
CGCUDARuntime.h
CGCXX.cpp Update for llvm api change. 2014-05-17 21:30:14 +00:00
CGCXXABI.cpp Revert Itanium parts of "Don't copy objects with trivial, deleted copy ctors" 2014-05-15 01:26:32 +00:00
CGCXXABI.h Don't copy objects with trivial, deleted copy ctors 2014-05-14 16:02:09 +00:00
CGCall.cpp Implement the no_split_stack attribute. 2014-05-19 22:14:34 +00:00
CGCall.h [C++11] Replacing CallArgList writeback iterators with iterator_range writebacks(). Updating all of the usages of the iterators with range-based for loops, and removing the no-longer-needed iterator versions. 2014-03-17 17:22:27 +00:00
CGClass.cpp [C++11] Replacing CompoundStmt iterators body_begin() and body_end() with iterator_range body(). Updating all of the usages of the iterators with range-based for loops. 2014-03-17 14:19:37 +00:00
CGCleanup.cpp [C++11] Update Clang for the change to LLVM's Use-Def chain iterators in 2014-03-09 03:16:50 +00:00
CGCleanup.h Fix leak in lib/CodeGen/CGException.cpp, PR18318 2014-01-09 09:22:32 +00:00
CGDebugInfo.cpp DebugInfo: Avoid creating DILexicalScopeFiles when the filename in the current scope has not changed. 2014-05-14 00:29:00 +00:00
CGDebugInfo.h DebugInfo: Use enum instead of unsigned 2014-05-07 12:49:30 +00:00
CGDecl.cpp CodeGen: Fix linkage of reference temporaries 2014-04-28 22:17:59 +00:00
CGDeclCXX.cpp If a declaration is loaded, and then a module import adds a redeclaration, then 2014-05-16 23:01:30 +00:00
CGException.cpp [OPENMP] Initial codegen for '#pragma omp parallel' 2014-05-06 10:08:46 +00:00
CGExpr.cpp Using SmallString and correct addr var 2014-05-19 23:25:25 +00:00
CGExprAgg.cpp [C++11] Replacing RecordDecl iterators field_begin() and field_end() with iterator_range fields(). Updating all of the usages of the iterators with range-based for loops. 2014-03-08 20:12:42 +00:00
CGExprCXX.cpp [leaks] Re-shuffle code such that we don't create a basic block for 2014-05-03 09:16:57 +00:00
CGExprComplex.cpp Change PGO instrumentation to compute counts in a separate AST traversal. 2014-02-17 19:21:09 +00:00
CGExprConstant.cpp Objective-C [IRGen]. Fixes a crash in IRGen involving use of 2014-04-23 17:44:58 +00:00
CGExprScalar.cpp Remove some empty statements 2014-04-19 23:55:49 +00:00
CGObjC.cpp If a declaration is loaded, and then a module import adds a redeclaration, then 2014-05-16 23:01:30 +00:00
CGObjCGNU.cpp Update for llvm api change. 2014-05-17 21:30:14 +00:00
CGObjCMac.cpp Simplify the code a bit by using linkage predicates. 2014-05-09 00:43:37 +00:00
CGObjCRuntime.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-12 06:41:41 +00:00
CGObjCRuntime.h Refactor linkage computation in CGObjCMac.cpp. 2014-02-26 22:25:45 +00:00
CGOpenCLRuntime.cpp The OpenCL specification states that images are allocated 2014-01-09 13:37:30 +00:00
CGOpenCLRuntime.h Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to 2013-01-02 11:45:17 +00:00
CGOpenMPRuntime.cpp [OPENMP] Fixed problem with temp removal on some platforms in codegen for '#pragma omp parallel' 2014-05-07 06:18:01 +00:00
CGOpenMPRuntime.h [OPENMP] Fixed problem with temp removal on some platforms in codegen for '#pragma omp parallel' 2014-05-07 06:18:01 +00:00
CGRTTI.cpp CodeGen: Don't set hidden visibility on symbols with local linkage 2014-05-07 22:36:11 +00:00
CGRecordLayout.h When a module completes the definition of a class template specialization imported from another module, emit an update record, rather than using the broken decl rewriting mechanism. If multiple modules do this, merge the definitions together, much as we would if they were separate declarations. 2014-04-19 03:48:30 +00:00
CGRecordLayoutBuilder.cpp Fixed Assert In CGRecordLowering 2014-04-25 21:56:30 +00:00
CGStmt.cpp [OPENMP] Initial codegen for '#pragma omp parallel' 2014-05-06 10:08:46 +00:00
CGStmtOpenMP.cpp [OPENMP] Initial codegen for '#pragma omp parallel' 2014-05-06 10:08:46 +00:00
CGVTT.cpp Remove the -fhidden-weak-vtables -cc1 option. It was dead, 2014-02-08 00:41:16 +00:00
CGVTables.cpp Simplify a few cast<>s. 2014-05-08 15:44:45 +00:00
CGVTables.h MS ABI: Mangle member pointer template arguments 2014-02-05 17:27:08 +00:00
CGValue.h Non-allocatable Global Named Register 2014-05-19 18:15:42 +00:00
CMakeLists.txt [OPENMP] Initial codegen for '#pragma omp parallel' 2014-05-06 10:08:46 +00:00
CodeGenABITypes.cpp [ms-cxxabi] Use x86_cdeclmethodcc for __cdecl methods on win32 2014-01-31 22:54:50 +00:00
CodeGenAction.cpp Rename SourceManager::createFileIDForMemBuffer() 2014-05-16 17:23:01 +00:00
CodeGenFunction.cpp MS ABI: Pass 'sret' as the second parameter of instance methods 2014-05-09 22:46:15 +00:00
CodeGenFunction.h Non-allocatable Global Named Register 2014-05-19 18:15:42 +00:00
CodeGenModule.cpp Demote the "Debug Info Version" module flag to llvm::Module::Warning 2014-05-19 23:40:06 +00:00
CodeGenModule.h Rename CodeGenModule::getLLVMLinkageforDeclarator -> getLLVMLinkageForDeclarator 2014-05-14 19:54:53 +00:00
CodeGenPGO.cpp InstrProf: Set profile data to visibility hidden 2014-05-16 01:24:00 +00:00
CodeGenPGO.h CodeGen: Use LLVM's InstrProfReader in -fprofile-instr-use= 2014-04-18 21:52:00 +00:00
CodeGenTBAA.cpp Add a mangler entry point for TBAA rather than using RTTI directly 2013-11-19 23:23:00 +00:00
CodeGenTBAA.h Fixed comment typo. 2013-06-08 00:27:19 +00:00
CodeGenTypes.cpp Reapply: DebugInfo: Emit the definition of enums when the definition preceeds the declaration and initial use. 2014-05-06 18:35:21 +00:00
CodeGenTypes.h [ms-cxxabi] Use inalloca on win32 when passing non-trivial C++ objects 2014-02-01 00:04:45 +00:00
EHScopeStack.h [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-12 06:41:41 +00:00
ItaniumCXXABI.cpp Update for llvm api change. 2014-05-17 21:30:14 +00:00
Makefile
MicrosoftCXXABI.cpp MS ABI: Use musttail for thunk IR generation 2014-05-15 23:01:46 +00:00
ModuleBuilder.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-12 06:41:41 +00:00
README.txt
TargetInfo.cpp ARM: PCS non-compliance when struct is padded to avoid register/stack split, and requires internal padding 2014-05-19 13:10:05 +00:00
TargetInfo.h Don't indent inside namespaces. 2014-05-09 00:26:20 +00:00

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!

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