Dan Gohman | 2c74fe9 | 2017-11-08 21:59:51 +0000 | [diff] [blame] | 1 | ; RUN: opt -S < %s -gvn-sink | FileCheck %s |
| 2 | |
| 3 | declare void @llvm.sideeffect() |
| 4 | |
| 5 | ; GVN sinking across a @llvm.sideeffect. |
| 6 | |
| 7 | ; CHECK-LABEL: scalarsSinking |
| 8 | ; CHECK-NOT: fmul |
| 9 | ; CHECK: = phi |
| 10 | ; CHECK: = fmul |
| 11 | define float @scalarsSinking(float %d, float %m, float %a, i1 %cmp) { |
| 12 | entry: |
| 13 | br i1 %cmp, label %if.then, label %if.else |
| 14 | |
| 15 | if.then: |
| 16 | call void @llvm.sideeffect() |
| 17 | %sub = fsub float %m, %a |
| 18 | %mul0 = fmul float %sub, %d |
| 19 | br label %if.end |
| 20 | |
| 21 | if.else: |
| 22 | %add = fadd float %m, %a |
| 23 | %mul1 = fmul float %add, %d |
| 24 | br label %if.end |
| 25 | |
| 26 | if.end: |
| 27 | %phi = phi float [ %mul0, %if.then ], [ %mul1, %if.else ] |
| 28 | ret float %phi |
| 29 | } |
| 30 | |