correct suffix matching to search for s/l/t suffixes on
[oota-llvm.git] / test / Transforms / SimplifyCFG / 2005-06-16-PHICrash.ll
index 6c53029ea655f75d3a0de42975df8a0848fda8ec..90be6803a5c3a8e9f921b0e1b1cf9a6b32d8fcf4 100644 (file)
-; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output
+; RUN: opt < %s -simplifycfg -disable-output
 ; PR584
+@g_38098584 = external global i32              ; <i32*> [#uses=1]
+@g_60187400 = external global i32              ; <i32*> [#uses=1]
+@g_59182229 = external global i32              ; <i32*> [#uses=2]
 
-%g_38098584 = external global uint             ; <uint*> [#uses=1]
-%g_60187400 = external global uint             ; <uint*> [#uses=1]
-%g_59182229 = external global uint             ; <uint*> [#uses=2]
-
-implementation   ; Functions:
-
-int %_Z13func_26556482h(ubyte %l_88173906) {
+define i32 @_Z13func_26556482h(i8 %l_88173906) {
 entry:
-       %tmp.1 = cast ubyte %l_88173906 to sbyte                ; <sbyte> [#uses=2]
-       %tmp.3 = seteq ubyte %l_88173906, 0             ; <bool> [#uses=1]
-       br bool %tmp.3, label %else.0, label %then.0
-
+       %tmp.1 = bitcast i8 %l_88173906 to i8           ; <i8> [#uses=2]
+       %tmp.3 = icmp eq i8 %l_88173906, 0              ; <i1> [#uses=1]
+       br i1 %tmp.3, label %else.0, label %then.0
 then.0:                ; preds = %entry
-       %tmp.5 = seteq ubyte %l_88173906, 0             ; <bool> [#uses=1]
-       br bool %tmp.5, label %else.1, label %then.1
-
+       %tmp.5 = icmp eq i8 %l_88173906, 0              ; <i1> [#uses=1]
+       br i1 %tmp.5, label %else.1, label %then.1
 then.1:                ; preds = %then.0
        br label %return
-
 else.1:                ; preds = %then.0
        br label %loopentry.0
-
 loopentry.0:           ; preds = %no_exit.0, %else.1
-       %i.0.1 = phi int [ 0, %else.1 ], [ %inc.0, %no_exit.0 ]         ; <int> [#uses=2]
-       %tmp.9 = setgt int %i.0.1, 99           ; <bool> [#uses=1]
-       br bool %tmp.9, label %endif.0, label %no_exit.0
-
+       %i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ]         ; <i32> [#uses=2]
+       %tmp.9 = icmp sgt i32 %i.0.1, 99                ; <i1> [#uses=1]
+       br i1 %tmp.9, label %endif.0, label %no_exit.0
 no_exit.0:             ; preds = %loopentry.0
-       %inc.0 = add int %i.0.1, 1              ; <int> [#uses=1]
+       %inc.0 = add i32 %i.0.1, 1              ; <i32> [#uses=1]
        br label %loopentry.0
-
 else.0:                ; preds = %entry
-       %tmp.12 = cast sbyte %tmp.1 to int              ; <int> [#uses=1]
+       %tmp.12 = sext i8 %tmp.1 to i32         ; <i32> [#uses=1]
        br label %return
-
 endif.0:               ; preds = %loopentry.0
-       %tmp.14 = cast sbyte %tmp.1 to int              ; <int> [#uses=1]
-       %tmp.16 = cast ubyte %l_88173906 to int         ; <int> [#uses=1]
-       %tmp.17 = setgt int %tmp.14, %tmp.16            ; <bool> [#uses=1]
-       %tmp.19 = load uint* %g_59182229                ; <uint> [#uses=2]
-       br bool %tmp.17, label %cond_true, label %cond_false
-
+       %tmp.14 = sext i8 %tmp.1 to i32         ; <i32> [#uses=1]
+       %tmp.16 = zext i8 %l_88173906 to i32            ; <i32> [#uses=1]
+       %tmp.17 = icmp sgt i32 %tmp.14, %tmp.16         ; <i1> [#uses=1]
+       %tmp.19 = load i32* @g_59182229         ; <i32> [#uses=2]
+       br i1 %tmp.17, label %cond_true, label %cond_false
 cond_true:             ; preds = %endif.0
-       %tmp.20 = setne uint %tmp.19, 1         ; <bool> [#uses=1]
+       %tmp.20 = icmp ne i32 %tmp.19, 1                ; <i1> [#uses=1]
        br label %cond_continue
-
 cond_false:            ; preds = %endif.0
-       %tmp.22 = setne uint %tmp.19, 0         ; <bool> [#uses=1]
+       %tmp.22 = icmp ne i32 %tmp.19, 0                ; <i1> [#uses=1]
        br label %cond_continue
-
 cond_continue:         ; preds = %cond_false, %cond_true
-       %mem_tmp.0 = phi bool [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ]         ; <bool> [#uses=1]
-       br bool %mem_tmp.0, label %then.2, label %else.2
-
+       %mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ]           ; <i1> [#uses=1]
+       br i1 %mem_tmp.0, label %then.2, label %else.2
 then.2:                ; preds = %cond_continue
-       %tmp.25 = cast ubyte %l_88173906 to int         ; <int> [#uses=1]
+       %tmp.25 = zext i8 %l_88173906 to i32            ; <i32> [#uses=1]
        br label %return
-
 else.2:                ; preds = %cond_continue
        br label %loopentry.1
-
 loopentry.1:           ; preds = %endif.3, %else.2
-       %i.1.1 = phi int [ 0, %else.2 ], [ %inc.3, %endif.3 ]           ; <int> [#uses=2]
-       %i.3.2 = phi int [ undef, %else.2 ], [ %i.3.0, %endif.3 ]               ; <int> [#uses=2]
-       %l_88173906_addr.1 = phi ubyte [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ]               ; <ubyte> [#uses=3]
-       %tmp.29 = setgt int %i.1.1, 99          ; <bool> [#uses=1]
-       br bool %tmp.29, label %endif.2, label %no_exit.1
-
+       %i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ]           ; <i32> [#uses=2]
+       %i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ]               ; <i32> [#uses=2]
+       %l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ]          ; <i8> [#uses=3]
+       %tmp.29 = icmp sgt i32 %i.1.1, 99               ; <i1> [#uses=1]
+       br i1 %tmp.29, label %endif.2, label %no_exit.1
 no_exit.1:             ; preds = %loopentry.1
-       %tmp.30 = load uint* %g_38098584                ; <uint> [#uses=1]
-       %tmp.31 = seteq uint %tmp.30, 0         ; <bool> [#uses=1]
-       br bool %tmp.31, label %else.3, label %then.3
-
+       %tmp.30 = load i32* @g_38098584         ; <i32> [#uses=1]
+       %tmp.31 = icmp eq i32 %tmp.30, 0                ; <i1> [#uses=1]
+       br i1 %tmp.31, label %else.3, label %then.3
 then.3:                ; preds = %no_exit.1
        br label %endif.3
-
 else.3:                ; preds = %no_exit.1
-       br bool false, label %else.4, label %then.4
-
+       br i1 false, label %else.4, label %then.4
 then.4:                ; preds = %else.3
        br label %endif.3
-
 else.4:                ; preds = %else.3
-       br bool false, label %else.5, label %then.5
-
+       br i1 false, label %else.5, label %then.5
 then.5:                ; preds = %else.4
-       store uint 3290648471, uint* %g_59182229
+       store i32 -1004318825, i32* @g_59182229
        br label %return
-
 else.5:                ; preds = %else.4
        br label %loopentry.3
-
 loopentry.3:           ; preds = %then.7, %else.5
-       %i.3.3 = phi int [ 0, %else.5 ], [ %inc.2, %then.7 ]            ; <int> [#uses=3]
-       %tmp.55 = setgt int %i.3.3, 99          ; <bool> [#uses=1]
-       br bool %tmp.55, label %endif.3, label %no_exit.3
-
+       %i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ]            ; <i32> [#uses=3]
+       %tmp.55 = icmp sgt i32 %i.3.3, 99               ; <i1> [#uses=1]
+       br i1 %tmp.55, label %endif.3, label %no_exit.3
 no_exit.3:             ; preds = %loopentry.3
-       %tmp.57 = seteq ubyte %l_88173906_addr.1, 0             ; <bool> [#uses=1]
-       br bool %tmp.57, label %else.7, label %then.7
-
+       %tmp.57 = icmp eq i8 %l_88173906_addr.1, 0              ; <i1> [#uses=1]
+       br i1 %tmp.57, label %else.7, label %then.7
 then.7:                ; preds = %no_exit.3
-       store uint 16239, uint* %g_60187400
-       %inc.2 = add int %i.3.3, 1              ; <int> [#uses=1]
+       store i32 16239, i32* @g_60187400
+       %inc.2 = add i32 %i.3.3, 1              ; <i32> [#uses=1]
        br label %loopentry.3
-
 else.7:                ; preds = %no_exit.3
        br label %return
-
 endif.3:               ; preds = %loopentry.3, %then.4, %then.3
-       %i.3.0 = phi int [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ]             ; <int> [#uses=1]
-       %l_88173906_addr.0 = phi ubyte [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ]          ; <ubyte> [#uses=1]
-       %inc.3 = add int %i.1.1, 1              ; <int> [#uses=1]
+       %i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ]             ; <i32> [#uses=1]
+       %l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ]             ; <i8> [#uses=1]
+       %inc.3 = add i32 %i.1.1, 1              ; <i32> [#uses=1]
        br label %loopentry.1
-
 endif.2:               ; preds = %loopentry.1
        br label %return
-
 return:                ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1
-       %result.0 = phi int [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ]               ; <int> [#uses=1]
-       ret int %result.0
+       %result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ]               ; <i32> [#uses=1]
+       ret i32 %result.0
 }