Skip to content

Commit 50f670e

Browse files
PavelKopylakiramenai
authored andcommitted
[EVM] Place EVMAA at the start of the AAs chain
1 parent b0a237b commit 50f670e

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

llvm/lib/Target/EVM/EVMAliasAnalysis.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,17 @@ class EVMExternalAAWrapper : public ExternalAAWrapperPass {
7171
public:
7272
static char ID;
7373

74+
bool runEarly() override { return true; }
75+
7476
EVMExternalAAWrapper()
7577
: ExternalAAWrapperPass([](Pass &P, Function &, AAResults &AAR) {
7678
if (auto *WrapperPass = P.getAnalysisIfAvailable<EVMAAWrapperPass>())
7779
AAR.addAAResult(WrapperPass->getResult());
7880
}) {}
81+
82+
StringRef getPassName() const override {
83+
return "EVM Address space based Alias Analysis Wrapper";
84+
}
7985
};
8086

8187
} // end namespace llvm

llvm/lib/Target/EVM/EVMTargetMachine.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ bool EVMTargetMachine::parseMachineFunctionInfo(
125125
return false;
126126
}
127127

128-
void EVMTargetMachine::registerDefaultAliasAnalyses(AAManager &AAM) {
128+
void EVMTargetMachine::registerEarlyDefaultAliasAnalyses(AAManager &AAM) {
129129
AAM.registerFunctionAnalysis<EVMAA>();
130130
}
131131

@@ -221,11 +221,7 @@ void EVMPassConfig::addIRPasses() {
221221
addPass(createEVMLowerIntrinsicsPass());
222222
if (TM->getOptLevel() != CodeGenOptLevel::None) {
223223
addPass(createEVMAAWrapperPass());
224-
addPass(
225-
createExternalAAWrapperPass([](Pass &P, Function &, AAResults &AAR) {
226-
if (auto *WrapperPass = P.getAnalysisIfAvailable<EVMAAWrapperPass>())
227-
AAR.addAAResult(WrapperPass->getResult());
228-
}));
224+
addPass(createEVMExternalAAWrapperPass());
229225
}
230226
TargetPassConfig::addIRPasses();
231227
}

llvm/lib/Target/EVM/EVMTargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ class EVMTargetMachine final : public LLVMTargetMachine {
6161
bool usesPhysRegsForValues() const override { return false; }
6262

6363
void registerPassBuilderCallbacks(PassBuilder &PB) override;
64-
void registerDefaultAliasAnalyses(AAManager &AAM) override;
64+
65+
void registerEarlyDefaultAliasAnalyses(AAManager &AAM) override;
6566
}; // EVMTargetMachine.
6667

6768
} // end namespace llvm

llvm/test/CodeGen/EVM/O3-pipeline.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ target triple = "evm"
1010
; CHECK-NEXT: Machine Module Information
1111
; CHECK-NEXT: Target Transform Information
1212
; CHECK-NEXT: EVM Address space based Alias Analysis
13-
; CHECK-NEXT: External Alias Analysis
13+
; CHECK-NEXT: EVM Address space based Alias Analysis Wrapper
1414
; CHECK-NEXT: Type-Based Alias Analysis
1515
; CHECK-NEXT: Scoped NoAlias Alias Analysis
1616
; CHECK-NEXT: Assumption Cache Tracker
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
; REQUIRES: asserts
2+
; RUN: opt -aa-pipeline=default -passes='require<aa>' -debug-pass-manager -disable-output -S < %s 2>&1 | FileCheck %s
3+
; RUN: llc --debug-only='aa' -o /dev/null %s 2>&1 | FileCheck %s -check-prefix=LEGACY
4+
5+
; In default AA pipeline, EVMAA should run before BasicAA to reduce compile time for EVM backend
6+
target triple = "evm"
7+
8+
; CHECK: Running analysis: EVMAA on foo
9+
; CHECK-NEXT: Running analysis: BasicAA on foo
10+
11+
; LEGACY: AAResults register Early ExternalAA: EVM Address space based Alias Analysis Wrapper
12+
; LEGACY-NEXT: AAResults register BasicAA
13+
define void @foo(){
14+
entry:
15+
ret void
16+
}
17+

0 commit comments

Comments
 (0)