llvm-6502/lib
Hal Finkel 3ef1aae2b5 Make use of @llvm.assume from LazyValueInfo
This change teaches LazyValueInfo to use the @llvm.assume intrinsic. Like with
the known-bits change (r217342), this requires feeding a "context" instruction
pointer through many functions. Aside from a little refactoring to reuse the
logic that turns predicates into constant ranges in LVI, the only new code is
that which can 'merge' the range from an assumption into that otherwise
computed. There is also a small addition to JumpThreading so that it can have
LVI use assumptions in the same block as the comparison feeding a conditional
branch.

With this patch, we can now simplify this as expected:
int foo(int a) {
  __builtin_assume(a > 5);
  if (a > 3) {
    bar();
    return 1;
  }
  return 0;
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217345 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-07 20:29:59 +00:00
..
Analysis Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
AsmParser
Bitcode
CodeGen DebugInfo: Do not use DW_FORM_GNU_addr_index in skeleton CUs, GDB 7.8 errors on this. 2014-09-07 17:31:42 +00:00
DebugInfo
ExecutionEngine [MCJIT] Revert partial RuntimeDyldELF cleanup that was prematurely committed in 2014-09-07 04:13:13 +00:00
IR
IRReader
LineEditor
Linker
LTO
MC MC: correct DWARF line info for PE/COFF 2014-09-06 19:57:48 +00:00
Object
Option
ProfileData
Support
TableGen
Target [x86] Revert my over-eager commit in r217332. 2014-09-07 12:37:11 +00:00
Transforms Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile