Skip to content

Commit e9fd907

Browse files
committed
[WebAssembly] Run ExplicitLocals pass after CFGStackify
Summary: While this does not change any final output, this will greatly simplify ixing unwind destination mismatches in CFGStackify (D48345), because we have to create some new registers there. Reviewers: dschuff Subscribers: sunfish, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59652 llvm-svn: 357342
1 parent 9681b01 commit e9fd907

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

llvm/lib/Target/WebAssembly/WebAssembly.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ FunctionPass *createWebAssemblyOptimizeLiveIntervals();
4444
FunctionPass *createWebAssemblyMemIntrinsicResults();
4545
FunctionPass *createWebAssemblyRegStackify();
4646
FunctionPass *createWebAssemblyRegColoring();
47-
FunctionPass *createWebAssemblyExplicitLocals();
4847
FunctionPass *createWebAssemblyFixIrreducibleControlFlow();
4948
FunctionPass *createWebAssemblyLateEHPrepare();
5049
FunctionPass *createWebAssemblyCFGSort();
5150
FunctionPass *createWebAssemblyCFGStackify();
51+
FunctionPass *createWebAssemblyExplicitLocals();
5252
FunctionPass *createWebAssemblyLowerBrUnless();
5353
FunctionPass *createWebAssemblyRegNumbering();
5454
FunctionPass *createWebAssemblyPeephole();
@@ -68,12 +68,12 @@ void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &);
6868
void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &);
6969
void initializeWebAssemblyRegStackifyPass(PassRegistry &);
7070
void initializeWebAssemblyRegColoringPass(PassRegistry &);
71-
void initializeWebAssemblyExplicitLocalsPass(PassRegistry &);
7271
void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &);
7372
void initializeWebAssemblyLateEHPreparePass(PassRegistry &);
7473
void initializeWebAssemblyExceptionInfoPass(PassRegistry &);
7574
void initializeWebAssemblyCFGSortPass(PassRegistry &);
7675
void initializeWebAssemblyCFGStackifyPass(PassRegistry &);
76+
void initializeWebAssemblyExplicitLocalsPass(PassRegistry &);
7777
void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &);
7878
void initializeWebAssemblyRegNumberingPass(PassRegistry &);
7979
void initializeWebAssemblyPeepholePass(PassRegistry &);

llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ extern "C" void LLVMInitializeWebAssemblyTarget() {
6666
initializeWebAssemblyMemIntrinsicResultsPass(PR);
6767
initializeWebAssemblyRegStackifyPass(PR);
6868
initializeWebAssemblyRegColoringPass(PR);
69-
initializeWebAssemblyExplicitLocalsPass(PR);
7069
initializeWebAssemblyFixIrreducibleControlFlowPass(PR);
7170
initializeWebAssemblyLateEHPreparePass(PR);
7271
initializeWebAssemblyExceptionInfoPass(PR);
7372
initializeWebAssemblyCFGSortPass(PR);
7473
initializeWebAssemblyCFGStackifyPass(PR);
74+
initializeWebAssemblyExplicitLocalsPass(PR);
7575
initializeWebAssemblyLowerBrUnlessPass(PR);
7676
initializeWebAssemblyRegNumberingPass(PR);
7777
initializeWebAssemblyPeepholePass(PR);
@@ -442,16 +442,16 @@ void WebAssemblyPassConfig::addPreEmitPass() {
442442
addPass(createWebAssemblyRegColoring());
443443
}
444444

445-
// Insert explicit local.get and local.set operators.
446-
addPass(createWebAssemblyExplicitLocals());
447-
448445
// Sort the blocks of the CFG into topological order, a prerequisite for
449446
// BLOCK and LOOP markers.
450447
addPass(createWebAssemblyCFGSort());
451448

452449
// Insert BLOCK and LOOP markers.
453450
addPass(createWebAssemblyCFGStackify());
454451

452+
// Insert explicit local.get and local.set operators.
453+
addPass(createWebAssemblyExplicitLocals());
454+
455455
// Lower br_unless into br_if.
456456
addPass(createWebAssemblyLowerBrUnless());
457457

llvm/test/CodeGen/WebAssembly/cfg-stackify-dbg-skip.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
; CHECK: body:
88
; CHECK: BLOCK
99
; <-- Stackified expression starts
10-
; CHECK-NEXT: LOCAL_GET_I64
1110
; CHECK-NEXT: I32_WRAP_I64
1211
; CHECK-NEXT: DBG_VALUE
1312
; <-- BLOCK should NOT be placed here!

0 commit comments

Comments
 (0)