Add a priority queue class, which is a wrapper around std::priority_queue
[oota-llvm.git] / test / Transforms / InstCombine / 2006-02-07-SextZextCrash.ll
index f3591e663a81f62eea4cfb8dd26218a3822bce9b..d7df5a01fb4c58aca7772547e89eb88c680d3769 100644 (file)
@@ -1,22 +1,21 @@
 ; RUN: llvm-as < %s | opt -instcombine -disable-output 
 
-       %struct.rtx_const = type { uint, { %union.real_extract } }
-       %struct.rtx_def = type { int, [1 x %union.rtunion_def] }
-       %union.real_extract = type { double }
-       %union.rtunion_def = type { uint }
+        %struct.rtx_const = type { i32, { %union.real_extract } }
+        %struct.rtx_def = type { i32, [1 x %union.rtunion_def] }
+        %union.real_extract = type { double }
+        %union.rtunion_def = type { i32 }
 
-implementation   ; Functions:
-
-fastcc void %decode_rtx_const(%struct.rtx_def* %x, %struct.rtx_const* %value) {
-       %tmp.54 = getelementptr %struct.rtx_const* %value, int 0, uint 0                ; <uint*> [#uses=1]
-       %tmp.56 = getelementptr %struct.rtx_def* %x, int 0, uint 0              ; <int*> [#uses=1]
-       %tmp.57 = load int* %tmp.56             ; <int> [#uses=1]
-       %tmp.58 = shl int %tmp.57, ubyte 8              ; <int> [#uses=1]
-       %tmp.59 = shr int %tmp.58, ubyte 24             ; <int> [#uses=1]
-       %tmp.60 = cast int %tmp.59 to ushort            ; <ushort> [#uses=1]
-       %tmp.61 = cast ushort %tmp.60 to uint           ; <uint> [#uses=1]
-       %tmp.62 = shl uint %tmp.61, ubyte 16            ; <uint> [#uses=1]
-       %tmp.65 = or uint 0, %tmp.62            ; <uint> [#uses=1]
-       store uint %tmp.65, uint* %tmp.54
-       ret void
+define fastcc void @decode_rtx_const(%struct.rtx_def* %x, %struct.rtx_const* %value) {
+        %tmp.54 = getelementptr %struct.rtx_const* %value, i32 0, i32 0         ; <i32*> [#uses=1]
+        %tmp.56 = getelementptr %struct.rtx_def* %x, i32 0, i32 0               ; <i32*> [#uses=1]
+        %tmp.57 = load i32* %tmp.56             ; <i32> [#uses=1]
+        %tmp.58 = shl i32 %tmp.57, 8            ; <i32> [#uses=1]
+        %tmp.59 = ashr i32 %tmp.58, 24          ; <i32> [#uses=1]
+        %tmp.60 = trunc i32 %tmp.59 to i16              ; <i16> [#uses=1]
+        %tmp.61 = zext i16 %tmp.60 to i32               ; <i32> [#uses=1]
+        %tmp.62 = shl i32 %tmp.61, 16           ; <i32> [#uses=1]
+        %tmp.65 = or i32 0, %tmp.62             ; <i32> [#uses=1]
+        store i32 %tmp.65, i32* %tmp.54
+        ret void
 }
+