| ; RUN: opt -S < %s -newgvn | 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 |
| } |