llvm-6502/lib/Transforms
David Majnemer c22a4eeec6 InstCombine: FoldGEPICmp shouldn't change sign of base pointer comparison
Changing the sign when comparing the base pointer would introduce all
sorts of unexpected things like:
  %gep.i = getelementptr inbounds [1 x i8]* %a, i32 0, i32 0
  %gep2.i = getelementptr inbounds [1 x i8]* %b, i32 0, i32 0
  %cmp.i = icmp ult i8* %gep.i, %gep2.i
  %cmp.i1 = icmp ult [1 x i8]* %a, %b
  %cmp = icmp ne i1 %cmp.i, %cmp.i1
  ret i1 %cmp

into:
  %cmp.i = icmp slt [1 x i8]* %a, %b
  %cmp.i1 = icmp ult [1 x i8]* %a, %b
  %cmp = xor i1 %cmp.i, %cmp.i1
  ret i1 %cmp

By preserving the original sign, we now get:
  ret i1 false

This fixes PR16483.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185259 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-29 10:28:04 +00:00
..
Hello
InstCombine InstCombine: FoldGEPICmp shouldn't change sign of base pointer comparison 2013-06-29 10:28:04 +00:00
Instrumentation Remove needless include (unistd.h) in DebugIR pass 2013-06-28 19:19:44 +00:00
IPO Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
ObjCARC [objc-arc-opts] Make IsTrackingImpreciseReleases a const method. 2013-06-21 20:52:49 +00:00
Scalar dbgs() << Instruction doesn't print a newline on the end any more. Update these 2013-06-26 00:30:18 +00:00
Utils Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
Vectorize We preserve the CFG and some of the analysis passes. 2013-06-29 05:38:15 +00:00
CMakeLists.txt Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
LLVMBuild.txt Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
Makefile Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00