[llvm-commits] CVS: llvm/test/Transforms/InstCombine/2007-02-07-PointerCast.ll

Andrew Lenharth alenhar2 at cs.uiuc.edu
Wed Feb 7 14:24:06 PST 2007



Changes in directory llvm/test/Transforms/InstCombine:

2007-02-07-PointerCast.ll added (r1.1)
---
Log message:

This really only affects pointers in high memory, and only llvm 1.9, but make a regression for it anyway

---
Diffs of the changes:  (+28 -0)

 2007-02-07-PointerCast.ll |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+)


Index: llvm/test/Transforms/InstCombine/2007-02-07-PointerCast.ll
diff -c /dev/null llvm/test/Transforms/InstCombine/2007-02-07-PointerCast.ll:1.1
*** /dev/null	Wed Feb  7 16:23:57 2007
--- llvm/test/Transforms/InstCombine/2007-02-07-PointerCast.ll	Wed Feb  7 16:23:47 2007
***************
*** 0 ****
--- 1,28 ----
+ ;RUN: llvm-upgrade < %s | llvm-as | opt -instcombine |llvm-dis |grep zext
+ 
+ ;Make sure the uint isn't removed.
+ ;instcombine in llvm 1.9 was dropping the uint cast which was causing a sign
+ ;extend
+ ;this only affected code with pointers in the high half of memory, so it wasn't
+ ;noticed much :)
+ ;compile a kernel though...
+ 
+ target datalayout = "e-p:32:32"
+ target endian = little
+ target pointersize = 32
+ 
+ %str = internal constant [6 x sbyte] c"%llx\0A\00"
+ 
+ implementation   ; Functions:
+ 
+ declare int %printf(sbyte*, ...)
+ 
+ int %main(int %x, sbyte** %a) {
+ entry:
+         %tmp = getelementptr [6 x sbyte]* %str, int 0, uint 0 
+         %tmp1 = load sbyte** %a
+ 	%tmp2 = cast sbyte* %tmp1 to uint		; <uint> [#uses=1]
+ 	%tmp3 = cast uint %tmp2 to long		; <long> [#uses=1]
+         %tmp = call int (sbyte*, ...)* %printf( sbyte* %tmp, long %tmp3 )
+         ret int 0
+ }






More information about the llvm-commits mailing list