Update the EarlyCSE tests to use opaque pointers. Worth noting that this leaves some bitcast ptr to ptr instructions in the input IR behind which are no longer necessary. This is because these use numbered instructions, so it's hard to drop them in an automated fashion (as it would require renumbering all other instructions as well). I'm leaving that as a problem for another day. The test updates have been performed using https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34. Differential Revision: https://reviews.llvm.org/D127278
28 lines
600 B
LLVM
28 lines
600 B
LLVM
; 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(ptr %p) {
|
|
store float 0.0, ptr %p
|
|
call void @llvm.sideeffect()
|
|
%t = load float, ptr %p
|
|
ret float %t
|
|
}
|
|
|
|
; Redundant load elimination across a @llvm.sideeffect.
|
|
|
|
; CHECK-LABEL: rle
|
|
; CHECK: load
|
|
; CHECK-NOT: load
|
|
define float @rle(ptr %p) {
|
|
%r = load float, ptr %p
|
|
call void @llvm.sideeffect()
|
|
%s = load float, ptr %p
|
|
%t = fadd float %r, %s
|
|
ret float %t
|
|
}
|