1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/unittests/IR
Duncan P. N. Exon Smith 40ea3b1320 IR: Make Metadata::print() reliable and useful
Replumb the `AsmWriter` so that `Metadata::print()` is generally useful.
(Similarly change `Metadata::printAsOperand()`.)

- `SlotTracker` now has a mode where all metadata will be correctly
  numbered when initializing a `Module`.  Normally, `Metadata` only
  referenced from within `Function`s gets numbered when the `Function`
  is incorporated.
- `Metadata::print()` and `Metadata::printAsOperand()` (and
  `Metadata::dump()`) now take an optional `Module` argument.  When
  provided, `SlotTracker` is initialized with the new mode, and the
  numbering will be complete and consistent for all calls to `print()`.
- `Value::print()` uses the new `SlotTracker` mode when printing
  intrinsics with `MDNode` operands, `MetadataAsValue` operands, or the
  bodies of functions.  Thus, metadata numbering will be consistent
  between calls to `Metadata::print()` and `Value::print()`.
- `Metadata::print()` (and `Metadata::dump()`) now print the full
  definition of `MDNode`s:

    !5 = !{!6, !"abc", !7}

  This matches behaviour for `Value::print()`, which includes the name
  of instructions.
- Updated call sites in `Verifier` to call `print()` instead of
  `printAsOperand()`.

All this, so that `Verifier` can print out useful failure messages that
involve `Metadata` for PR22777.

Note that `Metadata::printAsOperand()` previously took an optional
`bool` and `Module` operand.  The former was cargo-culted from
`Value::printAsOperand()` and wasn't doing anything useful.  The latter
didn't give consistent results (without the new `SlotTracker` mode).

llvm-svn: 232275
2015-03-14 20:19:36 +00:00
..
AttributesTest.cpp Make one of the AttributeSet ctors maintain the invariant that the 2013-08-02 22:29:40 +00:00
CMakeLists.txt The leak detector is dead, long live asan and valgrind. 2014-12-22 13:00:36 +00:00
ConstantRangeTest.cpp [ConstantRange] Teach multiply to be cleverer about signed ranges. 2015-03-06 15:50:47 +00:00
ConstantsTest.cpp [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
DebugInfoTest.cpp Add missing includes. make_unique proliferated everywhere. 2015-03-01 21:28:53 +00:00
DominatorTreeTest.cpp [PM] Remove the old 'PassManager.h' header file at the top level of 2015-02-13 10:01:29 +00:00
InstructionsTest.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
IRBuilderTest.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LegacyPassManagerTest.cpp Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
Makefile
MDBuilderTest.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
MetadataTest.cpp IR: Make Metadata::print() reliable and useful 2015-03-14 20:19:36 +00:00
PassManagerTest.cpp [PM] Add names and debug logging for analysis passes to the new pass 2015-01-05 12:21:44 +00:00
PatternMatch.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
TypeBuilderTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
TypesTest.cpp
UserTest.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
UseTest.cpp Format: Modernize using variadic templates. 2015-02-15 22:15:41 +00:00
ValueHandleTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
ValueMapTest.cpp Support: make LLVM Mutexes STL-compatible 2014-08-23 22:49:22 +00:00
ValueTest.cpp Add unittest for extreme alignments. 2014-10-23 14:45:19 +00:00
VerifierTest.cpp Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
WaymarkTest.cpp Fix a leak found by asan. 2014-12-23 17:20:23 +00:00