llvm/lib
Dan Gohman 43873d4f73 Use range metadata instead of introducing selects.
When GlobalOpt has determined that a GlobalVariable only ever has two values,
it would convert the GlobalVariable to a boolean, and introduce SelectInsts
at every load, to choose between the two possible values. These SelectInsts
introduce overhead and other unpleasantness.

This patch makes GlobalOpt just add range metadata to loads from such
GlobalVariables instead. This enables the same main optimization (as seen in
test/Transforms/GlobalOpt/integer-bool.ll), without introducing selects.

The main downside is that it doesn't get the memory savings of shrinking such
GlobalVariables, but this is expected to be negligible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204076 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-17 19:57:04 +00:00
..
Analysis Consistent use of the noduplicate attribute. 2014-03-17 16:19:07 +00:00
AsmParser Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
Bitcode Support: Make error_category's constructor public 2014-03-15 04:05:59 +00:00
CodeGen Switch a number of loops in lib/CodeGen over to range-based for-loops, now that 2014-03-17 19:36:09 +00:00
DebugInfo Make some assertions on constant expressions static. 2014-03-15 18:47:07 +00:00
ExecutionEngine [C++11] Introduce SectionRef::relocations() to use range-based loops 2014-03-14 14:22:49 +00:00
IR Make some assertions on constant expressions static. 2014-03-15 18:47:07 +00:00
IRReader Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker [Layering] Sink Linker.h into a Linker subdirectory to make it 2014-03-06 03:42:23 +00:00
LTO Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
MC DebugInfo: Use MC line table file entry uniquing for non-asm input as well. 2014-03-17 18:13:58 +00:00
Object [C++11] Introduce ObjectFile::symbols() to use range-based loops. 2014-03-17 07:28:19 +00:00
Option Avoid buffer copies when a Twine already is a StringRef. 2013-12-03 18:18:28 +00:00
Support Support: add support to identify WinCOFF/ARM objects 2014-03-13 07:02:35 +00:00
TableGen Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
Target R600: Match sign_extend_inreg to BFE instructions 2014-03-17 18:58:11 +00:00
Transforms Use range metadata instead of introducing selects. 2014-03-17 19:57:04 +00:00
CMakeLists.txt Back out Profile library and dependent commits 2014-03-12 22:00:57 +00:00
LLVMBuild.txt Back out Profile library and dependent commits 2014-03-12 22:00:57 +00:00
Makefile Back out Profile library and dependent commits 2014-03-12 22:00:57 +00:00