xref: /llvm-project/llvm/test/Transforms/EarlyCSE/int_sideeffect.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1; RUN: opt -S < %s -passes=early-cse -earlycse-debug-hash | FileCheck %s
2
3declare void @llvm.sideeffect()
4
5; Store-to-load forwarding across a @llvm.sideeffect.
6
7; CHECK-LABEL: s2l
8; CHECK-NOT: load
9define float @s2l(ptr %p) {
10    store float 0.0, ptr %p
11    call void @llvm.sideeffect()
12    %t = load float, ptr %p
13    ret float %t
14}
15
16; Redundant load elimination across a @llvm.sideeffect.
17
18; CHECK-LABEL: rle
19; CHECK: load
20; CHECK-NOT: load
21define float @rle(ptr %p) {
22    %r = load float, ptr %p
23    call void @llvm.sideeffect()
24    %s = load float, ptr %p
25    %t = fadd float %r, %s
26    ret float %t
27}
28