forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create more accurate debuginfo for vtables.
Before this commit all vtables would have the same name "vtable" in debuginfo. Now they get a name that identifies the implementing type and the trait that is being implemented.
- Loading branch information
1 parent
a479766
commit 61c5a6d
Showing
8 changed files
with
163 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// compile-flags: -Cdebuginfo=2 -Copt-level=0 -Ccodegen-units=1 | ||
// ignore-tidy-linelength | ||
|
||
// This test checks the debuginfo for the expected 3 vtables is generated for correct names and number | ||
// of entries. | ||
|
||
// NONMSVC-LABEL: !DIGlobalVariable(name: "<debug_vtable::Foo as debug_vtable::SomeTrait>::{vtable}" | ||
// MSVC-LABEL: !DIGlobalVariable(name: "impl$<debug_vtable::Foo, debug_vtable::SomeTrait>::vtable$" | ||
// NONMSVC: !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const ()", | ||
// MSVC: !DIDerivedType(tag: DW_TAG_pointer_type, name: "ptr_const$<tuple$<> >", | ||
// CHECK: !DISubrange(count: 5 | ||
|
||
// NONMSVC-LABEL: !DIGlobalVariable(name: "<debug_vtable::Foo as debug_vtable::SomeTraitWithGenerics<u64, i8>>::{vtable}" | ||
// MSVC-LABEL: !DIGlobalVariable(name: "impl$<debug_vtable::Foo, debug_vtable::SomeTraitWithGenerics<u64,i8> >::vtable$" | ||
// CHECK: !DISubrange(count: 4 | ||
|
||
// NONMSVC-LABEL: !DIGlobalVariable(name: "<debug_vtable::Foo as _>::{vtable}" | ||
// MSVC-LABEL: !DIGlobalVariable(name: "impl$<debug_vtable::Foo, _>::vtable$" | ||
// CHECK: !DISubrange(count: 3 | ||
|
||
#![crate_type = "lib"] | ||
|
||
pub struct Foo; | ||
|
||
pub trait SomeTrait { | ||
fn method1(&self) -> u32; | ||
fn method2(&self) -> u32; | ||
} | ||
|
||
impl SomeTrait for Foo { | ||
fn method1(&self) -> u32 { 1 } | ||
fn method2(&self) -> u32 { 2 } | ||
} | ||
|
||
pub trait SomeTraitWithGenerics<T, U> { | ||
fn method1(&self) -> (T, U); | ||
} | ||
|
||
impl SomeTraitWithGenerics<u64, i8> for Foo { | ||
fn method1(&self) -> (u64, i8) { (1, 2) } | ||
} | ||
|
||
pub fn foo(x: &Foo) -> (u32, (u64, i8), &dyn Send) { | ||
let y: &dyn SomeTrait = x; | ||
let z: &dyn SomeTraitWithGenerics<u64, i8> = x; | ||
(y.method1(), z.method1(), x as &dyn Send) | ||
} |
This file was deleted.
Oops, something went wrong.