forked from OSchip/llvm-project
c1048e3eb9
When used as a non-leaf node, TableGen does not currently use the type of a ComplexPattern for type inference, which also means it does not check it doesn't conflict with the use. This differs from when used as a leaf value, where the type is used for inference. This addresses that discrepancy. The test case is not representative of most real-world uses but is sufficient to demonstrate inference is working. Some of these uses also make use of ValueTypeByHwMode rather than SimpleValueType and so the existing type inference is extended to support that alongside the new type inference. There are also currently various cases of using ComplexPatterns with an untyped type, but only for non-leaf nodes. For compatibility this is permitted, and uses the old behaviour of not inferring for non-leaf nodes, but the existing logic is still used for leaf values. This remaining discrepancy should eventually be eliminated, either by removing all such uses of untyped so the special case goes away (I imagine Any, or a more specific type in certain cases, would be perfectly sufficient), or by copying it to the leaf value case so they're consistent with one another if this is something that does need to keep being supported. All non-experimental targets have been verified to produce bit-for-bit identical TableGen output with this change applied. Reviewed By: kparzysz Differential Revision: https://reviews.llvm.org/D109035 |
||
---|---|---|
.. | ||
FileCheck | ||
KillTheDoctor | ||
LLVMVisualizers | ||
Misc | ||
PerfectShuffle | ||
Reviewing | ||
TableGen | ||
Target/ARM | ||
UpdateTestChecks | ||
benchmark | ||
bugpoint | ||
count | ||
crosstool | ||
docker | ||
emacs | ||
fpcmp | ||
gdb-scripts | ||
git | ||
gn | ||
jedit | ||
kate | ||
lint | ||
lit | ||
llvm-lit | ||
llvm-locstats | ||
not | ||
reduce_pipeline_test | ||
release | ||
rsp_bisect_test | ||
sanitizers | ||
testgen | ||
textmate | ||
unittest | ||
valgrind | ||
vim | ||
vscode | ||
yaml-bench | ||
DSAclean.py | ||
DSAextract.py | ||
GenLibDeps.pl | ||
GetSourceVersion | ||
UpdateCMakeLists.pl | ||
abtest.py | ||
add_argument_names.py | ||
bisect | ||
bisect-skip-count | ||
bugpoint_gisel_reducer.py | ||
check-each-file | ||
check_ninja_deps.py | ||
chunk-print-before-all.py | ||
clang-parse-diagnostics-file | ||
codegen-diff | ||
collect_and_build_with_pgo.py | ||
convert-constraint-log-to-z3.py | ||
countloc.sh | ||
create_ladder_graph.py | ||
demangle_tree.py | ||
extract-section.py | ||
extract_symbols.py | ||
extract_vplan.py | ||
findmisopt | ||
findoptdiff | ||
findsym.pl | ||
getsrcs.sh | ||
indirect_calls.py | ||
lldbDataFormatters.py | ||
llvm-compilers-check | ||
llvm-gisel-cov.py | ||
llvm-native-gxx | ||
llvm-original-di-preservation.py | ||
llvm.grm | ||
llvmdo | ||
llvmgrep | ||
merge-stats.py | ||
pipeline.py | ||
prepare-code-coverage-artifact.py | ||
reduce_pipeline.py | ||
remote-exec.py | ||
revert_checker.py | ||
revert_checker_test.py | ||
rsp_bisect.py | ||
schedcover.py | ||
shuffle_fuzz.py | ||
shuffle_select_fuzz_tester.py | ||
sort_includes.py | ||
sysroot.py | ||
unicode-case-fold.py | ||
update_analyze_test_checks.py | ||
update_cc_test_checks.py | ||
update_llc_test_checks.py | ||
update_mca_test_checks.py | ||
update_mir_test_checks.py | ||
update_test_checks.py | ||
update_test_prefix.py | ||
wciia.py |