HomePhabricator

[NewPM] Redesign of PreserveCFG Checker

Authored by yrouban on Apr 5 2021, 9:55 PM.

Description

[NewPM] Redesign of PreserveCFG Checker

The reason for the NewPM redesign is described in the commit

cba3e783389a: [NewPM] Disable PreservedCFGChecker ...

The checker introduces an internal custom CFG analysis that tracks
current up-to date CFG snapshot. The analysis is invalidated along
any other CFG related analysis (the key is CFGAnalyses). If the CFG
analysis is not invalidated at a functional pass exit then the checker
asserts that the CFG snapshot taken from this analysis is equals to
a snapshot of the current CFG.

Along the way:

  • the function CFG::printDiff() is simplified by removing function name calculation. The name is printed by the caller;
  • fixed CFG invalidated condition (see CFG::invalidate());
  • StandardInstrumentations::registerCallbacks() gets additional optional parameter of type FunctionAnalysisManager*, which is needed by the checker to get the custom CFG analysis;
  • several PM related tests updated to explicitly set -verify-cfg-preserved=1 as they need.

This patch is safe to land as the CFGChecker is left switched off
(the options -verify-cfg-preserved is false by default). It will be
switched on by a separate patch to minimize possible reverts.

Reviewed By: skatkov, kuhar

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

Details

Committed
yroubanApr 5 2021, 10:35 PM
Reviewer
skatkov
Differential Revision
D91327: [NewPM] Redesign of PreserveCFG Checker
Parents
rG22411d807238: [MLIR][docs] Fixes to operation syntax in Lang Ref
Branches
Unknown
Tags
Unknown