nodes unless we KNOW that we are able to promote all of them. In this case
promoting the phi to a select is silly because we will always have to do the
call conditionally. As such, select promotion is actually a pessimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16972
91177308-0d34-0410-b5e6-
96231b3b80d8
--- /dev/null
+; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep select
+
+;; The PHI node in this example should not be turned into a select, as we are
+;; not able to ifcvt the entire block. As such, converting to a select just
+;; introduces inefficiency without saving copies.
+
+int %bar(bool %C) {
+entry:
+ br bool %C, label %then, label %endif
+
+then:
+ %tmp.3 = call int %qux()
+ br label %endif
+
+endif:
+ %R = phi int [123, %entry], [12312, %then]
+ ;; stuff to disable tail duplication
+ call int %qux()
+ call int %qux()
+ call int %qux()
+ call int %qux()
+ call int %qux()
+ call int %qux()
+ call int %qux()
+ ret int %R
+}
+
+declare int %qux()
+