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:
Marcelo Lopez Ruiz 2017-03-14 17:41:11 -07:00 коммит произвёл GitHub
Родитель efe82279fe
Коммит d7f75ac8f0
3 изменённых файлов: 8 добавлений и 4 удалений

Просмотреть файл

@ -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()