Skip to content

Commit 1bab570

Browse files
authored
Move the PowerPC/PPCMergeStringPool work to initializer (#77352)
Currently, the `PPCMergeStringPool` merges the global variable after the `AsmPrinter` initializer adds the global variables to its symbol list. This is to move the merging work of `PPCMergeStringPool` to its initializer, just like what GlobalMerge does, to avoid adding merged global variables to the `AsmPrinter` symbol lis.  
1 parent 31fc0a1 commit 1bab570

File tree

3 files changed

+17
-16
lines changed

3 files changed

+17
-16
lines changed

llvm/lib/Target/PowerPC/PPCMergeStringPool.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ class PPCMergeStringPool : public ModulePass {
8686
static char ID;
8787
PPCMergeStringPool() : ModulePass(ID) {}
8888

89-
bool runOnModule(Module &M) override { return mergeModuleStringPool(M); }
89+
bool doInitialization(Module &M) override { return mergeModuleStringPool(M); }
90+
bool runOnModule(Module &M) override { return false; }
9091

9192
StringRef getPassName() const override { return "PPC Merge String Pool"; }
9293

llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -319,16 +319,16 @@ define dso_local signext i32 @array0() local_unnamed_addr #0 {
319319
; AIX32-NEXT: mflr r0
320320
; AIX32-NEXT: stwu r1, -96(r1)
321321
; AIX32-NEXT: lis r6, 0
322-
; AIX32-NEXT: lwz r4, L..C0(r2) # @__ModuleStringPool
323-
; AIX32-NEXT: li r5, 12
322+
; AIX32-NEXT: lwz r5, L..C0(r2) # @__ModuleStringPool
323+
; AIX32-NEXT: li r4, 12
324324
; AIX32-NEXT: addi r3, r1, 64
325325
; AIX32-NEXT: stw r0, 104(r1)
326326
; AIX32-NEXT: ori r7, r6, 35596
327-
; AIX32-NEXT: rlwimi r5, r3, 0, 30, 27
328-
; AIX32-NEXT: lxvw4x vs0, r4, r7
329-
; AIX32-NEXT: stxvw4x vs0, 0, r5
330-
; AIX32-NEXT: ori r5, r6, 35584
331-
; AIX32-NEXT: lxvw4x vs0, r4, r5
327+
; AIX32-NEXT: rlwimi r4, r3, 0, 30, 27
328+
; AIX32-NEXT: lxvw4x vs0, r5, r7
329+
; AIX32-NEXT: stxvw4x vs0, 0, r4
330+
; AIX32-NEXT: ori r4, r6, 35584
331+
; AIX32-NEXT: lxvw4x vs0, r5, r4
332332
; AIX32-NEXT: stxvw4x vs0, 0, r3
333333
; AIX32-NEXT: bl .calleeInt[PR]
334334
; AIX32-NEXT: nop

llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -398,16 +398,16 @@ define dso_local signext i32 @array1() local_unnamed_addr #0 {
398398
; AIX32: # %bb.0: # %entry
399399
; AIX32-NEXT: mflr r0
400400
; AIX32-NEXT: stwu r1, -96(r1)
401-
; AIX32-NEXT: lwz r4, L..C0(r2) # @__ModuleStringPool
401+
; AIX32-NEXT: lwz r5, L..C0(r2) # @__ModuleStringPool
402402
; AIX32-NEXT: li r6, 372
403-
; AIX32-NEXT: li r5, 12
403+
; AIX32-NEXT: li r4, 12
404404
; AIX32-NEXT: addi r3, r1, 64
405405
; AIX32-NEXT: stw r0, 104(r1)
406-
; AIX32-NEXT: rlwimi r5, r3, 0, 30, 27
407-
; AIX32-NEXT: lxvw4x vs0, r4, r6
408-
; AIX32-NEXT: stxvw4x vs0, 0, r5
409-
; AIX32-NEXT: li r5, 360
410-
; AIX32-NEXT: lxvw4x vs0, r4, r5
406+
; AIX32-NEXT: rlwimi r4, r3, 0, 30, 27
407+
; AIX32-NEXT: lxvw4x vs0, r5, r6
408+
; AIX32-NEXT: stxvw4x vs0, 0, r4
409+
; AIX32-NEXT: li r4, 360
410+
; AIX32-NEXT: lxvw4x vs0, r5, r4
411411
; AIX32-NEXT: stxvw4x vs0, 0, r3
412412
; AIX32-NEXT: bl .calleeInt[PR]
413413
; AIX32-NEXT: nop
@@ -1148,7 +1148,7 @@ entry:
11481148

11491149
attributes #0 = { nounwind }
11501150

1151-
; AIXDATA: .csect L..__ModuleStringPool[RO],2
1151+
; AIXDATA: .csect L..__ModuleStringPool[RO],3
11521152
; AIXDATA: .align 3 # @__ModuleStringPool
11531153
; AIXDATA: .vbyte 4, 5 # 0x5
11541154
; AIXDATA: .vbyte 4, 7 # 0x7

0 commit comments

Comments
 (0)