llvm-project/llvm/tools/opt
Duncan P. N. Exon Smith 9d1cf4c166 IR: Stop using DIDescriptor::is*() and auto-casting
`DIDescriptor`'s subclasses allow construction from incompatible
pointers, and `DIDescriptor` defines a series of `isa<>`-like functions
(e.g., `isCompileUnit()` instead of `isa<MDCompileUnit>()`) that clients
tend to use like this:

    if (DICompileUnit(N).isCompileUnit())
      foo(DICompileUnit(N));

These construction patterns work together to make `DIDescriptor` behave
differently from normal pointers.

Instead, use built-in `isa<>`, `dyn_cast<>`, etc., and only build
`DIDescriptor`s from pointers that are valid for their type.

I've split this into a few commits for different parts of LLVM and clang
(to decrease the patch size and increase the chance of review).
Generally the changes I made were NFC, but in a few places I made things
stricter if it made sense from the surrounded code.

Eventually a follow-up commit will remove the API for the "old" way.

llvm-svn: 234255
2015-04-06 23:18:49 +00:00
..
AnalysisWrappers.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
BreakpointPrinter.cpp IR: Stop using DIDescriptor::is*() and auto-casting 2015-04-06 23:18:49 +00:00
BreakpointPrinter.h Move more self-contained functionality away from tools/opt/opt.cpp 2014-02-12 16:48:02 +00:00
CMakeLists.txt CMake: Disable ENABLE_EXPORTS for executables with MSVC 2015-03-18 20:09:13 +00:00
GraphPrinters.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 08:27:28 +00:00
LLVMBuild.txt [PM] Create a separate library for high-level pass management code. 2015-03-07 09:02:36 +00:00
Makefile [PM] Create a separate library for high-level pass management code. 2015-03-07 09:02:36 +00:00
NewPMDriver.cpp [PM] Create a separate library for high-level pass management code. 2015-03-07 09:02:36 +00:00
NewPMDriver.h [PM] Port TTI to the new pass manager, introducing a TargetIRAnalysis to 2015-02-01 10:11:22 +00:00
PassPrinters.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 08:27:28 +00:00
PassPrinters.h Move the *PassPrinter into their own module. 2014-02-10 23:34:23 +00:00
PrintSCC.cpp SCC: Change clients to use const, NFC 2014-04-25 18:24:50 +00:00
opt.cpp Add -mcpu=native support to opt. 2015-04-01 05:32:04 +00:00