[PATCH] D152081: [Attributor] Add lightweight version for attribute deduction only
Bevin Hansson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 9 03:53:20 PDT 2023
ebevhan added a comment.
Hi! We're seeing miscompiles downstream when running attributor-light in pipelines. In the below reproducer, DSE is eliminating a store that isn't dead.
define dso_local ptr @fun(ptr noundef %p) {
entry:
%p.addr = alloca ptr, align 1
store ptr %p, ptr %p.addr, align 1
%0 = load ptr, ptr %p.addr, align 1
ret ptr %0
}
define dso_local i16 @test_it() {
entry:
%x = alloca i16, align 1
%p = alloca ptr, align 1
call void @llvm.lifetime.start.p0(i64 2, ptr %x)
store i16 42, ptr %x, align 1
call void @llvm.lifetime.start.p0(i64 2, ptr %p)
%call = call ptr @fun(ptr noundef %x)
store ptr %call, ptr %p, align 1
%0 = load ptr, ptr %p, align 1
%1 = load i16, ptr %0, align 1
%cmp = icmp eq i16 %1, 42
%conv = zext i1 %cmp to i16
call void @llvm.lifetime.end.p0(i64 2, ptr %p)
call void @llvm.lifetime.end.p0(i64 2, ptr %x)
ret i16 %conv
}
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)
Running this with `opt -passes='attributor-light,function(dse)' rep.ll` causes the `store i16 42` to be removed.
This might not be an issue with attributor-light per se, but we just thought we'd report it here since the pass was added recently.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152081/new/
https://reviews.llvm.org/D152081
More information about the llvm-commits
mailing list