[Target/X86] Don't use callee-saved registers in a Win64 tail call on non-Windows.
[oota-llvm.git] / test / CodeGen / PowerPC / 2006-01-20-ShiftPartsCrash.ll
index eb8046f395d4412f24cb19db793459dc03af2bfc..fde330321aa43af42272953033ee4709ad92a8d8 100644 (file)
@@ -1,17 +1,19 @@
-; RUN: llvm-as < %s | llc
+; RUN: llc < %s
 
-void %iterative_hash_host_wide_int() {
-       %zero = alloca int              ; <int*> [#uses=2]
-       %b = alloca uint                ; <uint*> [#uses=1]
-       store int 0, int* %zero
-       %tmp = load int* %zero          ; <int> [#uses=1]
-       %tmp5 = cast int %tmp to uint           ; <uint> [#uses=1]
-       %tmp6 = add uint %tmp5, 32              ; <uint> [#uses=1]
-       %tmp6 = cast uint %tmp6 to int          ; <int> [#uses=1]
-       %tmp7 = load long* null         ; <long> [#uses=1]
-       %tmp6 = cast int %tmp6 to ubyte         ; <ubyte> [#uses=1]
-       %tmp8 = shr long %tmp7, ubyte %tmp6             ; <long> [#uses=1]
-       %tmp8 = cast long %tmp8 to uint         ; <uint> [#uses=1]
-       store uint %tmp8, uint* %b
-       unreachable
+define void @iterative_hash_host_wide_int() {
+        %zero = alloca i32              ; <i32*> [#uses=2]
+        %b = alloca i32         ; <i32*> [#uses=1]
+        store i32 0, i32* %zero
+        %tmp = load i32, i32* %zero          ; <i32> [#uses=1]
+        %tmp5 = bitcast i32 %tmp to i32         ; <i32> [#uses=1]
+        %tmp6.u = add i32 %tmp5, 32             ; <i32> [#uses=1]
+        %tmp6 = bitcast i32 %tmp6.u to i32              ; <i32> [#uses=1]
+        %tmp7 = load i64, i64* null          ; <i64> [#uses=1]
+        %tmp6.upgrd.1 = trunc i32 %tmp6 to i8           ; <i8> [#uses=1]
+        %shift.upgrd.2 = zext i8 %tmp6.upgrd.1 to i64           ; <i64> [#uses=1]
+        %tmp8 = ashr i64 %tmp7, %shift.upgrd.2          ; <i64> [#uses=1]
+        %tmp8.upgrd.3 = trunc i64 %tmp8 to i32          ; <i32> [#uses=1]
+        store i32 %tmp8.upgrd.3, i32* %b
+        unreachable
 }
+