llvm-6502/lib/Transforms
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
..
Hello [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-05 09:10:37 +00:00
InstCombine Fix a bug in InstCombine where we would incorrectly attempt to construct a 2014-03-13 22:51:43 +00:00
Instrumentation [ASan] Fix https://code.google.com/p/address-sanitizer/issues/detail?id=274 2014-03-14 10:41:49 +00:00
IPO Use range metadata instead of introducing selects. 2014-03-17 19:57:04 +00:00
ObjCARC [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
Scalar Consistent use of the noduplicate attribute. 2014-03-17 16:19:07 +00:00
Utils Allow switch-to-lookup table for tables with holes by adding bitmask check 2014-03-12 18:35:40 +00:00
Vectorize Resubmit "[SLPV] Recognize vectorizable intrinsics during SLP vectorization ..." 2014-03-12 20:21:50 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile