diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-05-06 13:30:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-06 13:30:05 +0200 |
| commit | f440999bb2a894eee5f8a9d299ddb849420bcf63 (patch) | |
| tree | 1e7399dfe471a3cb66c4597e1950876a7ee6ba1b /tests | |
| parent | 8ec84dd523df611060c585b5d1b538fd6fee13e9 (diff) | |
| parent | 10b69dde3fd15334ea2382d2dc9e9a261de1afaf (diff) | |
| download | rust-f440999bb2a894eee5f8a9d299ddb849420bcf63.tar.gz rust-f440999bb2a894eee5f8a9d299ddb849420bcf63.zip | |
Rollup merge of #111167 - cuviper:type-decl-disubprogram, r=michaelwoerister
debuginfo: split method declaration and definition When we're adding a method to a type DIE, we only want a DW_AT_declaration there, because LLVM LTO can't unify type definitions when a child DIE is a full subprogram definition. Now the subprogram definition gets added at the CU level with a specification link back to the abstract declaration. Both GCC and Clang write debuginfo this way for C++ class methods. Fixes #109730. Fixes #109934.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run-make/issue-109934-lto-debuginfo/Makefile | 12 | ||||
| -rw-r--r-- | tests/run-make/issue-109934-lto-debuginfo/lib.rs | 9 |
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/run-make/issue-109934-lto-debuginfo/Makefile b/tests/run-make/issue-109934-lto-debuginfo/Makefile new file mode 100644 index 00000000000..3b7a99d3dbc --- /dev/null +++ b/tests/run-make/issue-109934-lto-debuginfo/Makefile @@ -0,0 +1,12 @@ +# ignore-cross-compile +include ../tools.mk + +# With the upgrade to LLVM 16, this was getting: +# +# error: Cannot represent a difference across sections +# +# The error stemmed from DI function definitions under type scopes, fixed by +# only declaring in type scope and defining the subprogram elsewhere. + +all: + $(RUSTC) lib.rs --test -C lto=fat -C debuginfo=2 -C incremental=$(TMPDIR)/inc-fat diff --git a/tests/run-make/issue-109934-lto-debuginfo/lib.rs b/tests/run-make/issue-109934-lto-debuginfo/lib.rs new file mode 100644 index 00000000000..c405928bd18 --- /dev/null +++ b/tests/run-make/issue-109934-lto-debuginfo/lib.rs @@ -0,0 +1,9 @@ +extern crate alloc; + +#[cfg(test)] +mod tests { + #[test] + fn something_alloc() { + assert_eq!(Vec::<u32>::new(), Vec::<u32>::new()); + } +} |
