1; RUN: opt -S < %s -gvn-sink | FileCheck %s
2
3declare 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
11define float @scalarsSinking(float %d, float %m, float %a, i1 %cmp) {
12entry:
13  br i1 %cmp, label %if.then, label %if.else
14
15if.then:
16  call void @llvm.sideeffect()
17  %sub = fsub float %m, %a
18  %mul0 = fmul float %sub, %d
19  br label %if.end
20
21if.else:
22  %add = fadd float %m, %a
23  %mul1 = fmul float %add, %d
24  br label %if.end
25
26if.end:
27  %phi = phi float [ %mul0, %if.then ], [ %mul1, %if.else ]
28  ret float %phi
29}
30
31