Add reducibility analysis to the list of passes and paramless ctor. (#133)
Add reducibility analysis to the list of passes and paramless ctor. This restores the property of having all passes initialized at DLL load time, keeps the reported list of passes stable, and fixes an assertion when the DLL is loaded on a thread but the first compile invocation occurs in a different thread.
This commit is contained in:
Родитель
efe82279fe
Коммит
d7f75ac8f0
|
@ -111,6 +111,7 @@ HRESULT SetupRegistryPassForHLSL() {
|
||||||
initializePromotePassPass(Registry);
|
initializePromotePassPass(Registry);
|
||||||
initializePruneEHPass(Registry);
|
initializePruneEHPass(Registry);
|
||||||
initializeReassociatePass(Registry);
|
initializeReassociatePass(Registry);
|
||||||
|
initializeReducibilityAnalysisPass(Registry);
|
||||||
initializeRegToMemHlslPass(Registry);
|
initializeRegToMemHlslPass(Registry);
|
||||||
initializeRewriteSymbolsPass(Registry);
|
initializeRewriteSymbolsPass(Registry);
|
||||||
initializeSCCPPass(Registry);
|
initializeSCCPPass(Registry);
|
||||||
|
|
|
@ -48,10 +48,12 @@ class ReducibilityAnalysis : public FunctionPass {
|
||||||
public:
|
public:
|
||||||
static char ID;
|
static char ID;
|
||||||
|
|
||||||
explicit ReducibilityAnalysis(IrreducibilityAction Action = IrreducibilityAction::ThrowException)
|
ReducibilityAnalysis()
|
||||||
: FunctionPass(ID), m_Action(Action), m_bReducible(false) {
|
: FunctionPass(ID), m_Action(IrreducibilityAction::ThrowException),
|
||||||
initializeReducibilityAnalysisPass(*PassRegistry::getPassRegistry());
|
m_bReducible(false) {}
|
||||||
}
|
|
||||||
|
explicit ReducibilityAnalysis(IrreducibilityAction Action)
|
||||||
|
: FunctionPass(ID), m_Action(Action), m_bReducible(false) {}
|
||||||
|
|
||||||
virtual bool runOnFunction(Function &F);
|
virtual bool runOnFunction(Function &F);
|
||||||
|
|
||||||
|
|
|
@ -1285,6 +1285,7 @@ class db_dxil(object):
|
||||||
add_pass('constmerge', 'ConstantMerge', 'Merge Duplicate Global Constants', [])
|
add_pass('constmerge', 'ConstantMerge', 'Merge Duplicate Global Constants', [])
|
||||||
add_pass('lowerbitsets', 'LowerBitSets', 'Lower bitset metadata', [
|
add_pass('lowerbitsets', 'LowerBitSets', 'Lower bitset metadata', [
|
||||||
{'n':'lowerbitsets-avoid-reuse', 'i':'AvoidReuse', 't':'bool', 'd':'Try to avoid reuse of byte array addresses using aliases'}])
|
{'n':'lowerbitsets-avoid-reuse', 'i':'AvoidReuse', 't':'bool', 'd':'Try to avoid reuse of byte array addresses using aliases'}])
|
||||||
|
add_pass('red', 'ReducibilityAnalysis', 'Reducibility Analysis', [])
|
||||||
# TODO: turn STATISTICS macros into ETW events
|
# TODO: turn STATISTICS macros into ETW events
|
||||||
# assert no duplicate names
|
# assert no duplicate names
|
||||||
self.pass_idx_args = set()
|
self.pass_idx_args = set()
|
||||||
|
|
Загрузка…
Ссылка в новой задаче