; RUN: opt -S < %s -passes=gvn-sink | FileCheck %s | |
; CHECK-LABEL: sink | |
; CHECK-NOT: fneg | |
; CHECK: = phi | |
; CHECK: fneg | |
define float @sink(float %a, float %b, i1 %cmp) { | |
entry: | |
br i1 %cmp, label %if.then, label %if.else | |
if.then: | |
%sub = fsub float %a, %b | |
%neg0 = fneg float %sub | |
br label %if.end | |
if.else: | |
%add = fadd float %a, %b | |
%neg1 = fneg float %add | |
br label %if.end | |
if.end: | |
%phi = phi float [ %neg0, %if.then ], [ %neg1, %if.else ] | |
ret float %phi | |
} |