[gicombiner] Add the run-time rule disable option
authorDaniel Sanders <daniel_l_sanders@apple.com>
Thu, 17 Oct 2019 00:37:04 +0000 (00:37 +0000)
committerDaniel Sanders <daniel_l_sanders@apple.com>
Thu, 17 Oct 2019 00:37:04 +0000 (00:37 +0000)
commit329e748c8c3b0fd3942cb1dafa9e4d0bb0aea8a4
tree568097648934c4eced7a58151efe2355c6b5abba
parentc319afc903d89ba94a8cb526d3ce91515c920991
[gicombiner] Add the run-time rule disable option

Summary:
Each generated helper can be configured to generate an option that disables
rules in that helper. This can be used to bisect rulesets.

The disable bits are stored in a SparseVector as this is very cheap for the
common case where nothing is disabled. It gets more expensive the more rules
are disabled but you're generally doing that for debug purposes where
performance is less of a concern.

Depends on D68426

Reviewers: volkan, bogner

Reviewed By: volkan

Subscribers: hiraditya, Petar.Avramovic, llvm-commits

Tags: #llvm

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

llvm-svn: 375067
llvm/include/llvm/Target/GlobalISel/Combine.td
llvm/lib/CodeGen/GlobalISel/Combiner.cpp
llvm/lib/Target/AArch64/AArch64Combine.td
llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp
llvm/test/CodeGen/AArch64/GlobalISel/prelegalizercombiner-copy-prop-disabled.mir [new file with mode: 0644]
llvm/utils/TableGen/GICombinerEmitter.cpp