; RUN: opt -S < %s -early-cse -earlycse-debug-hash | FileCheck %s | |
declare void @llvm.sideeffect() | |
; Store-to-load forwarding across a @llvm.sideeffect. | |
; CHECK-LABEL: s2l | |
; CHECK-NOT: load | |
define float @s2l(float* %p) { | |
store float 0.0, float* %p | |
call void @llvm.sideeffect() | |
%t = load float, float* %p | |
ret float %t | |
} | |
; Redundant load elimination across a @llvm.sideeffect. | |
; CHECK-LABEL: rle | |
; CHECK: load | |
; CHECK-NOT: load | |
define float @rle(float* %p) { | |
%r = load float, float* %p | |
call void @llvm.sideeffect() | |
%s = load float, float* %p | |
%t = fadd float %r, %s | |
ret float %t | |
} |