llvm-project/llvm/unittests/IR
Adrian Prantl a8e56458e6 Let replaceVTableHolder accept any type.
In Rust, a trait can be implemented for any type, and if a trait
object pointer is used for the type, then a virtual table will be
emitted for that trait/type combination.

We would like debuggers to be able to inspect trait objects, which
requires finding the concrete type associated with a given vtable.

This patch changes LLVM so that any type can be passed to
replaceVTableHolder. This allows the Rust compiler to emit the needed
debug info -- associating a vtable with the concrete type for which it
was emitted.

This is a DWARF extension: DWARF only specifies the meaning of
DW_AT_containing_type in one specific situation. This style of DWARF
extension is routine, though, and LLVM already has one such case for
DW_AT_containing_type.

Patch by Tom Tromey!

Differential Revision: https://reviews.llvm.org/D39503

llvm-svn: 317730
2017-11-08 22:04:43 +00:00
..
AsmWriterTest.cpp [IR] Don't print "!DIExpression() = !DIExpression()" when dumping 2017-08-30 20:40:36 +00:00
AttributesTest.cpp Fix assertion when merging multiple empty AttributeLists 2017-05-31 14:24:06 +00:00
BasicBlockTest.cpp Remove unnecessary double-assignment triggering -Wsequence-point. 2017-05-26 12:07:12 +00:00
CFGBuilder.cpp [Dominators] Define Arc less-than operator inline. 2017-07-13 23:11:57 +00:00
CFGBuilder.h [Dominators] Define Arc less-than operator inline. 2017-07-13 23:11:57 +00:00
CMakeLists.txt [Dominators] Introduce batch updates 2017-08-16 16:12:52 +00:00
ConstantRangeTest.cpp [ConstantRange] Add another truncate unittest for wrapped set staying a wrapped set. 2017-06-04 23:07:53 +00:00
ConstantsTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
DebugInfoTest.cpp Formatting with clang-format patch r280700 2016-09-06 17:03:02 +00:00
DebugTypeODRUniquingTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
DominatorTreeBatchUpdatesTest.cpp [Dominators] Introduce batch updates 2017-08-16 16:12:52 +00:00
DominatorTreeTest.cpp [Dominators] Include infinite loops in PostDominatorTree 2017-08-15 18:14:57 +00:00
FunctionTest.cpp [GlobalObject] Fix setSection("") 2017-02-15 21:42:42 +00:00
IRBuilderTest.cpp [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
InstructionsTest.cpp [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
IntrinsicsTest.cpp
LegacyPassManagerTest.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
MDBuilderTest.cpp
MetadataTest.cpp Let replaceVTableHolder accept any type. 2017-11-08 22:04:43 +00:00
ModuleTest.cpp Have Module::createRNG return a unique_ptr 2017-07-12 08:03:44 +00:00
PassBuilderCallbacksTest.cpp [PM] Enable registration of out-of-tree passes with PassBuilder 2017-07-10 10:57:55 +00:00
PassManagerTest.cpp [PM] Teach PreservedAnalyses to have an `allInSet` static factory 2017-07-09 07:23:27 +00:00
PatternMatch.cpp Fix m_[Ord|Unord][FMin|FMax] matchers to correctly match ordering. 2017-06-13 17:18:45 +00:00
TypeBuilderTest.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:13 +00:00
TypesTest.cpp
UseTest.cpp
UserTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
ValueHandleTest.cpp Add a new WeakVH value handle; NFC 2017-05-01 17:07:54 +00:00
ValueMapTest.cpp Remove every uses of getGlobalContext() in LLVM (but the C API) 2016-04-14 21:59:01 +00:00
ValueTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
VerifierTest.cpp Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
WaymarkTest.cpp Remove every uses of getGlobalContext() in LLVM (but the C API) 2016-04-14 21:59:01 +00:00