diff options
author | Chris Lattner <clattner@nondot.org> | 2020-12-23 18:13:39 -0800 |
---|---|---|
committer | Chris Lattner <clattner@nondot.org> | 2020-12-26 13:52:40 -0800 |
commit | 9eb3e564d3b1c772a64eef6ecaa3b1705d065218 (patch) | |
tree | f592abe4e88d98cd29ae21cdad6017a6dcfdd575 /lldb/packages/Python/lldbsuite/test/dotest.py | |
parent | 8791949f55b151ebc88a1bbb4a885809689031ee (diff) | |
download | llvm-9eb3e564d3b1c772a64eef6ecaa3b1705d065218.zip llvm-9eb3e564d3b1c772a64eef6ecaa3b1705d065218.tar.gz llvm-9eb3e564d3b1c772a64eef6ecaa3b1705d065218.tar.bz2 |
[ODS] Make the getType() method on a OneResult instruction return a specific type.
Implement Bug 46698, making ODS synthesize a getType() method that returns a
specific C++ class for OneResult methods where we know that class. This eliminates
a common source of casts in things like:
myOp.getType().cast<FIRRTLType>().getPassive()
because we know that myOp always returns a FIRRTLType. This also encourages
op authors to type their results more tightly (which is also good for
verification).
I chose to implement this by splitting the OneResult trait into itself plus a
OneTypedResult trait, given that many things are using `hasTrait<OneResult>`
to conditionalize various logic.
While this changes makes many many ops get more specific getType() results, it
is generally drop-in compatible with the previous behavior because 'x.cast<T>()'
is allowed when x is already known to be a T. The one exception to this is that
we need declarations of the types used by ops, which is why a couple headers
needed additional #includes.
I updated a few things in tree to remove the now-redundant `.cast<>`'s, but there
are probably many more than can be removed.
Differential Revision: https://reviews.llvm.org/D93790
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/dotest.py')
0 files changed, 0 insertions, 0 deletions