[PATCH] D146629: [SimplifyCFG][LICM] Preserve nonnull, range and align metadata when speculating
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 20 02:44:25 PDT 2023
nikic added a comment.
Looks like there's another bug in GVN:
declare void @use(i32)
define void @test(i1 %c, ptr %p) {
%v1 = load i32, ptr %p, !range !{i32 0, i32 10}
br i1 %c, label %if, label %join
if:
br label %join
join:
%v2 = load i32, ptr %p, !range !{i32 20, i32 30}
call void @use(i32 %v1)
call void @use(i32 %v2)
ret void
}
; RUN: opt -S -passes=gvn < %s
declare void @use(i32)
define void @test(i1 %c, ptr %p) {
%v1 = load i32, ptr %p, align 4, !range !0
br i1 %c, label %if, label %join
if: ; preds = %0
br label %join
join: ; preds = %if, %0
call void @use(i32 %v1)
call void @use(i32 %v1)
ret void
}
!0 = !{i32 0, i32 10}
Apparently we don't perform metadata combining when replacing non-local loads :(
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146629/new/
https://reviews.llvm.org/D146629
More information about the llvm-commits
mailing list