-;RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep zext
+;RUN: llvm-as < %s | 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
; compile a kernel though...
target datalayout = "e-p:32:32"
-target endian = little
-target pointersize = 32
+@str = internal constant [6 x i8] c"%llx\0A\00" ; <[6 x i8]*> [#uses=1]
-%str = internal constant [6 x sbyte] c"%llx\0A\00"
+declare i32 @printf(i8*, ...)
-implementation ; Functions:
-
-declare int %printf(sbyte*, ...)
-
-int %main(int %x, sbyte** %a) {
+define i32 @main(i32 %x, i8** %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
+ %tmp = getelementptr [6 x i8]* @str, i32 0, i64 0 ; <i8*> [#uses=1]
+ %tmp1 = load i8** %a ; <i8*> [#uses=1]
+ %tmp2 = ptrtoint i8* %tmp1 to i32 ; <i32> [#uses=1]
+ %tmp3 = zext i32 %tmp2 to i64 ; <i64> [#uses=1]
+ %tmp.upgrd.1 = call i32 (i8*, ...)* @printf( i8* %tmp, i64 %tmp3 ) ; <i32> [#uses=0]
+ ret i32 0
}
+