[OperandBundles] Have DeadArgElim play nice with operand bundles
[oota-llvm.git] / test / Transforms / IPConstantProp / return-constant.ll
index 4ffff22e5d1e9cf4297e3e4925b2d20542c9e988..195420d6aad7ed851a9a31dc0a20bc784fa53e64 100644 (file)
@@ -1,16 +1,29 @@
-; RUN: llvm-as < %s | opt -ipconstprop -instcombine | llvm-dis 
-implementation
+; RUN: opt < %s -ipconstprop -instcombine -S | grep "ret i1 true" | count 2
+define internal i32 @foo(i1 %C) {
+        br i1 %C, label %T, label %F
 
-internal int %foo(bool %C) {
-       br bool %C, label %T, label %F
-T:
-       ret int 52
-F:
-       ret int 52
+T:              ; preds = %0
+        ret i32 52
+
+F:              ; preds = %0
+        ret i32 52
+}
+
+define i1 @caller(i1 %C) {
+        %X = call i32 @foo( i1 %C )             ; <i32> [#uses=1]
+        %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
+        ret i1 %Y
 }
 
-bool %caller(bool %C) {
-       %X = call int %foo(bool %C)
-       %Y = cast int %X to bool
-       ret bool %Y
+define i1 @invokecaller(i1 %C) personality i32 (...)* @__gxx_personality_v0 {
+        %X = invoke i32 @foo( i1 %C ) to label %OK unwind label %FAIL             ; <i32> [#uses=1]
+OK:
+        %Y = icmp ne i32 %X, 0          ; <i1> [#uses=1]
+        ret i1 %Y 
+FAIL:
+        %exn = landingpad {i8*, i32}
+                 cleanup
+        ret i1 false
 }
+
+declare i32 @__gxx_personality_v0(...)