[PATCH] D114543: Extend the `uwtable` attribute with unwind table kind
Momchil Velikov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 14 09:17:52 PST 2022
chill added a comment.
In D114543#3319347 <https://reviews.llvm.org/D114543#3319347>, @durin42 wrote:
> As far as I can tell this patch broke the Rust compiler, but from the commit message it sounds like it shouldn't have?
>
> https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/8358#e85ad6f3-9992-4ea1-9cd3-d8db9f45f33e fails with
>
> Attribute 'uwtable' should have an Argument
> i8* (i64, i64)* @__rust_alloc
> in function __rust_alloc
> LLVM ERROR: Broken function found, compilation aborted!
>
> Any thoughts?
Yeah, that's puzzling. The attribute has an optional argument (or else we had to update ~3080 occurrences of "uwtable" in tests), so reading it is
a bit tricky: https://github.com/llvm/llvm-project/blob/19b4e9d76ecc9a5343c093bc54d965734b996518/llvm/lib/Bitcode/Reader/BitcodeReader.cpp#L1631
That message is output here https://github.com/llvm/llvm-project/blob/19b4e9d76ecc9a5343c093bc54d965734b996518/llvm/lib/IR/Verifier.cpp#L1710
and I can trigger this line with
$ cat x.ll
define void @f() uwtable {
ret void
}
$ ./bin/opt -S --passes=verify x.ll
; ModuleID = 'x.ll'
source_filename = "x.ll"
; Function Attrs: uwtable
define void @f() #0 {
ret void
}
attributes #0 = { uwtable }
$ ./bin/opt x.ll -o x.bc
$ ./bin/opt --verify x.bc -S
; ModuleID = 'x.bc'
source_filename = "x.ll"
; Function Attrs: uwtable
define void @f() #0 {
ret void
}
attributes #0 = { uwtable }
$
Could there be a mismatch between two `llvm-project` versions, somehow?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D114543/new/
https://reviews.llvm.org/D114543
More information about the llvm-commits
mailing list