Skip to content

Commit f4ea0f9

Browse files
committed
[NewPM] Port -print-alias-sets to NPM
Really it should be named print<alias-sets>, but for the sake of changing fewer tests, added a TODO to rename after NPM switch and test cleanup. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D87713
1 parent 7337f29 commit f4ea0f9

File tree

5 files changed

+30
-6
lines changed

5 files changed

+30
-6
lines changed

llvm/include/llvm/Analysis/AliasSetTracker.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "llvm/Analysis/AliasAnalysis.h"
2424
#include "llvm/IR/Instruction.h"
2525
#include "llvm/IR/Metadata.h"
26+
#include "llvm/IR/PassManager.h"
2627
#include "llvm/IR/ValueHandle.h"
2728
#include "llvm/Support/Casting.h"
2829
#include <cassert>
@@ -457,6 +458,14 @@ inline raw_ostream& operator<<(raw_ostream &OS, const AliasSetTracker &AST) {
457458
return OS;
458459
}
459460

461+
class AliasSetsPrinterPass : public PassInfoMixin<AliasSetsPrinterPass> {
462+
raw_ostream &OS;
463+
464+
public:
465+
explicit AliasSetsPrinterPass(raw_ostream &OS);
466+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
467+
};
468+
460469
} // end namespace llvm
461470

462471
#endif // LLVM_ANALYSIS_ALIASSETTRACKER_H

llvm/lib/Analysis/AliasSetTracker.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "llvm/IR/Instructions.h"
2424
#include "llvm/IR/IntrinsicInst.h"
2525
#include "llvm/IR/Module.h"
26+
#include "llvm/IR/PassManager.h"
2627
#include "llvm/IR/PatternMatch.h"
2728
#include "llvm/IR/Value.h"
2829
#include "llvm/InitializePasses.h"
@@ -734,8 +735,6 @@ AliasSetTracker::ASTCallbackVH::operator=(Value *V) {
734735
namespace {
735736

736737
class AliasSetPrinter : public FunctionPass {
737-
AliasSetTracker *Tracker;
738-
739738
public:
740739
static char ID; // Pass identification, replacement for typeid
741740

@@ -750,12 +749,11 @@ namespace {
750749

751750
bool runOnFunction(Function &F) override {
752751
auto &AAWP = getAnalysis<AAResultsWrapperPass>();
753-
Tracker = new AliasSetTracker(AAWP.getAAResults());
752+
AliasSetTracker Tracker(AAWP.getAAResults());
754753
errs() << "Alias sets for function '" << F.getName() << "':\n";
755754
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I)
756-
Tracker->add(&*I);
757-
Tracker->print(errs());
758-
delete Tracker;
755+
Tracker.add(&*I);
756+
Tracker.print(errs());
759757
return false;
760758
}
761759
};
@@ -769,3 +767,16 @@ INITIALIZE_PASS_BEGIN(AliasSetPrinter, "print-alias-sets",
769767
INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
770768
INITIALIZE_PASS_END(AliasSetPrinter, "print-alias-sets",
771769
"Alias Set Printer", false, true)
770+
771+
AliasSetsPrinterPass::AliasSetsPrinterPass(raw_ostream &OS) : OS(OS) {}
772+
773+
PreservedAnalyses AliasSetsPrinterPass::run(Function &F,
774+
FunctionAnalysisManager &AM) {
775+
auto &AA = AM.getResult<AAManager>(F);
776+
AliasSetTracker Tracker(AA);
777+
OS << "Alias sets for function '" << F.getName() << "':\n";
778+
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I)
779+
Tracker.add(&*I);
780+
Tracker.print(OS);
781+
return PreservedAnalyses::all();
782+
}

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/ADT/StringSwitch.h"
1919
#include "llvm/Analysis/AliasAnalysis.h"
2020
#include "llvm/Analysis/AliasAnalysisEvaluator.h"
21+
#include "llvm/Analysis/AliasSetTracker.h"
2122
#include "llvm/Analysis/AssumptionCache.h"
2223
#include "llvm/Analysis/BasicAliasAnalysis.h"
2324
#include "llvm/Analysis/BlockFrequencyInfo.h"

llvm/lib/Passes/PassRegistry.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,8 @@ FUNCTION_PASS("print<phi-values>", PhiValuesPrinterPass(dbgs()))
258258
FUNCTION_PASS("print<regions>", RegionInfoPrinterPass(dbgs()))
259259
FUNCTION_PASS("print<scalar-evolution>", ScalarEvolutionPrinterPass(dbgs()))
260260
FUNCTION_PASS("print<stack-safety-local>", StackSafetyPrinterPass(dbgs()))
261+
// TODO: rename to print<alias-sets> after NPM switch
262+
FUNCTION_PASS("print-alias-sets", AliasSetsPrinterPass(dbgs()))
261263
FUNCTION_PASS("print-predicateinfo", PredicateInfoPrinterPass(dbgs()))
262264
FUNCTION_PASS("reassociate", ReassociatePass())
263265
FUNCTION_PASS("scalarizer", ScalarizerPass())

llvm/test/Analysis/AliasSet/guards.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
; RUN: opt -basic-aa -print-alias-sets -S -o - < %s 2>&1 | FileCheck %s
2+
; RUN: opt -aa-pipeline=basic-aa -passes=print-alias-sets -S -o - < %s 2>&1 | FileCheck %s
23
declare void @llvm.experimental.guard(i1, ...)
34

45
; CHECK: Alias sets for function 'test0':

0 commit comments

Comments
 (0)