mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-26 05:00:39 +00:00
When converting phi nodes into select instructions, we shouldn't promote PHI
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
This commit is contained in:
parent
83d3aad50e
commit
1c7efba2bd
29
test/Transforms/SimplifyCFG/PhiNoEliminate.ll
Normal file
29
test/Transforms/SimplifyCFG/PhiNoEliminate.ll
Normal file
@ -0,0 +1,29 @@
|
||||
; 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()
|
||||
|
Loading…
Reference in New Issue
Block a user