diff options
author | nerix <nerixdev@outlook.de> | 2025-08-06 04:57:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-05 19:57:26 -0700 |
commit | 2d4e5c4e1f0ee00cc668b5f012d718e750a99cc7 (patch) | |
tree | c0c2dcf641dfc15841a50231bdf5f3e406f2c6b4 /llvm/lib/Target/X86/X86IntrinsicsInfo.h | |
parent | 7b8dea265e72c3037b6b1e54d5ab51b7e14f328b (diff) | |
download | llvm-main.zip llvm-main.tar.gz llvm-main.tar.bz2 |
Languages other than C/C++ don't necessarily emit mangled names in the
`UniqueName` field of type records. Rust specifically emits a unique ID
that doesn't contain the name.
For example, `(i32, i32)` is emitted as
```llvm
!266 = !DICompositeType(
tag: DW_TAG_structure_type, name: "tuple$<i32,i32>", file: !9, size: 64, align: 32,
elements: !267, templateParams: !17, identifier: "19122721b0632fe96c0dd37477674472"
)
```
which results in
```
0x1091 | LF_STRUCTURE [size = 72, hash = 0x1AC67] `tuple$<i32,i32>`
unique name: `19122721b0632fe96c0dd37477674472`
vtable: <no type>, base list: <no type>, field list: 0x1090
options: has unique name, sizeof 8
```
In C++ with Clang and MSVC, a structure similar to this would result in
```
0x136F | LF_STRUCTURE [size = 44, hash = 0x30BE2] `MyTuple`
unique name: `.?AUMyTuple@@`
vtable: <no type>, base list: <no type>, field list: 0x136E
options: has unique name, sizeof 8
```
With this PR, if a `UniqueName` is encountered that couldn't be parsed,
it will fall back to using the undecorated (→ do the same as if the
unique name is empty/unavailable).
I'm not sure how to test this. Maybe compiling the LLVM IR that rustc
emits?
Fixes #152051.
Diffstat (limited to 'llvm/lib/Target/X86/X86IntrinsicsInfo.h')
0 files changed, 0 insertions, 0 deletions