1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2; RUN: opt -S < %s -passes=newgvn | FileCheck %s 3 4declare void @llvm.sideeffect() 5 6; Store-to-load forwarding across a @llvm.sideeffect. 7 8define float @s2l(ptr %p) { 9; CHECK-LABEL: define float @s2l( 10; CHECK-SAME: ptr [[P:%.*]]) { 11; CHECK-NEXT: store float 0.000000e+00, ptr [[P]], align 4 12; CHECK-NEXT: call void @llvm.sideeffect() 13; CHECK-NEXT: ret float 0.000000e+00 14; 15 store float 0.0, ptr %p 16 call void @llvm.sideeffect() 17 %t = load float, ptr %p 18 ret float %t 19} 20 21; Redundant load elimination across a @llvm.sideeffect. 22 23define float @rle(ptr %p) { 24; CHECK-LABEL: define float @rle( 25; CHECK-SAME: ptr [[P:%.*]]) { 26; CHECK-NEXT: [[R:%.*]] = load float, ptr [[P]], align 4 27; CHECK-NEXT: call void @llvm.sideeffect() 28; CHECK-NEXT: [[T:%.*]] = fadd float [[R]], [[R]] 29; CHECK-NEXT: ret float [[T]] 30; 31 %r = load float, ptr %p 32 call void @llvm.sideeffect() 33 %s = load float, ptr %p 34 %t = fadd float %r, %s 35 ret float %t 36} 37