[TableGen] Suppress type validation when parsing pattern fragments
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 13 Jul 2018 16:42:15 +0000 (16:42 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 13 Jul 2018 16:42:15 +0000 (16:42 +0000)
commit22b1af870ff35c22e4d2089eb2625631f73fcc97
tree7e5140cf65db82031a7f16727da43d3c6bed3f27
parentd362b6ad29eaadf2d11df219b2030b36e61682ae
[TableGen] Suppress type validation when parsing pattern fragments

Currently, any attempt to define a PatFrag involving any floating-point
only (or vector only) node causes a hard assertion failure in TableGen
if the current target does not have any floating-point (or vector)
types.

This is annoying if you want to provide convenience fragments in common
code (e.g. include/llvm/Target/TargetSelectionDAG.td) that is parsed on
all platforms, including those that miss such types.

But really, there's no reason not accept this when parsing the fragment
-- of course it would be an error for such a target to actually *use*
such a fragment anywhere, but as long as it doesn't, I think TableGen
shouldn't error out.

The immediate cause of the assertion failure is the test inside the
ValidateOnExit destructor. This patch simply disables that check while
infering types during parsing of pattern fragments (only).

Reviewed By: hfinkel, kparzysz

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

llvm-svn: 337023
llvm/utils/TableGen/CodeGenDAGPatterns.cpp
llvm/utils/TableGen/CodeGenDAGPatterns.h