Author: Paul Kirth
Date: 2023-12-15T10:38:10-08:00
New Revision: 6e996033dd3f68330f7ccc5eb2c368ebd8158959
URL:
https://github.com/llvm/llvm-project/commit/6e996033dd3f68330f7ccc5eb2c368ebd8158959
DIFF:
https://github.com/llvm/llvm-project/commit/6e996033dd3f68330f7ccc5eb2c368ebd8158959.diff
LOG: Revert "[StackColoring] Delete dead stack slots (#75351)"
This reverts commit 08b306dc8e7c0b2498f4f194a3c51686d56dbd20.
Added:
Modified:
llvm/lib/CodeGen/StackColoring.cpp
llvm/test/CodeGen/PowerPC/aix32-cc-abi-vaarg.ll
llvm/test/CodeGen/PowerPC/aix64-cc-abi-vaarg.ll
llvm/test/CodeGen/X86/StackColoring-tbaa.mir
llvm/test/DebugInfo/COFF/lexicalblock.ll
Removed:
llvm/test/CodeGen/RISCV/dead-stack-slot.ll
diff --git a/llvm/lib/CodeGen/StackColoring.cpp
b/llvm/lib/CodeGen/StackColoring.cpp
index fa01aa17b3a867..37f7aa9290054e 100644
--- a/llvm/lib/CodeGen/StackColoring.cpp
+++ b/llvm/lib/CodeGen/StackColoring.cpp
@@ -900,15 +900,6 @@ void StackColoring::remapInstructions(DenseMap
&SlotRemap) {
unsigned FixedMemOp = 0;
unsigned FixedDbg = 0;
- // Remove debug information for deleted slots.
- erase_if(MF->getVariableDbgInfo(), [&](auto &VI) {
-if (!VI.inStackSlot())
- return false;
-int Slot = VI.getStackSlot();
-return Slot >= 0 && Intervals[Slot]->empty() &&
- InterestingSlots.test(Slot) && !ConservativeSlots.test(Slot);
- });
-
// Remap debug information that refers to stack slots.
for (auto &VI : MF->getVariableDbgInfo()) {
if (!VI.Var || !VI.inStackSlot())
@@ -1259,15 +1250,8 @@ bool StackColoring::runOnMachineFunction(MachineFunction
&Func) {
// Do not bother looking at empty intervals.
for (unsigned I = 0; I < NumSlots; ++I) {
-int Slot = SortedSlots[I];
-if (Intervals[Slot]->empty()) {
- if (InterestingSlots.test(Slot) && !ConservativeSlots.test(Slot)) {
-RemovedSlots += 1;
-ReducedSize += MFI->getObjectSize(Slot);
-MFI->RemoveStackObject(Slot);
- }
+if (Intervals[SortedSlots[I]]->empty())
SortedSlots[I] = -1;
-}
}
// This is a simple greedy algorithm for merging allocas. First, sort the
@@ -1355,7 +1339,7 @@ bool StackColoring::runOnMachineFunction(MachineFunction
&Func) {
// Scan the entire function and update all machine operands that use frame
// indices to use the remapped frame index.
- if (RemovedSlots > 0) {
+ if (!SlotRemap.empty()) {
expungeSlotMap(SlotRemap, NumSlots);
remapInstructions(SlotRemap);
}
diff --git a/llvm/test/CodeGen/PowerPC/aix32-cc-abi-vaarg.ll
b/llvm/test/CodeGen/PowerPC/aix32-cc-abi-vaarg.ll
index 1b0a803734ae9f..bf66a1ed042d22 100644
--- a/llvm/test/CodeGen/PowerPC/aix32-cc-abi-vaarg.ll
+++ b/llvm/test/CodeGen/PowerPC/aix32-cc-abi-vaarg.ll
@@ -347,6 +347,7 @@ entry:
; 32BIT-LABEL: stack:
; 32BIT-DAG: - { id: 0, name: arg1, type: default, offset: 0, size: 4,
alignment: 4,
+; 32BIT-DAG: - { id: 1, name: arg2, type: default, offset: 0, size: 4,
alignment: 4,
; 32BIT-DAG: - { id: 2, name: '', type: default, offset: 0, size: 8,
alignment: 8,
; 32BIT-DAG: - { id: 3, name: '', type: default, offset: 0, size: 8,
alignment: 8,
diff --git a/llvm/test/CodeGen/PowerPC/aix64-cc-abi-vaarg.ll
b/llvm/test/CodeGen/PowerPC/aix64-cc-abi-vaarg.ll
index a8684fdfe1c568..ccf89aac2d5408 100644
--- a/llvm/test/CodeGen/PowerPC/aix64-cc-abi-vaarg.ll
+++ b/llvm/test/CodeGen/PowerPC/aix64-cc-abi-vaarg.ll
@@ -138,7 +138,9 @@
; 64BIT-LABEL: fixedStack:
; 64BIT-DAG: - { id: 0, type: default, offset: 112, size: 8, alignment:
16, stack-id: default,
-; 64BIT-LABEL: stack: []
+; 64BIT-LABEL: stack:
+; 64BIT-DAG: - { id: 0, name: arg1, type: default, offset: 0, size: 8,
alignment: 8,
+; 64BIT-DAG: - { id: 1, name: arg2, type: default, offset: 0, size: 8,
alignment: 8,
; 64BIT-LABEL: body: |
; 64BIT-DAG: liveins: $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10
@@ -303,7 +305,9 @@
; 64BIT-LABEL: fixedStack:
; 64BIT-DAG: - { id: 0, type: default, offset: 152, size: 8
-; 64BIT-LABEL: stack: []
+; 64BIT-LABEL: stack:
+; 64BIT-DAG: - { id: 0, name: arg1, type: default, offset: 0, size: 8
+; 64BIT-DAG: - { id: 1, name: arg2, type: default, offset: 0, size: 8
; 64BIT-LABEL: body: |
; 64BIT-DAG: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10,
$f11, $f12, $f13
diff --git a/llvm/test/CodeGen/RISCV/dead-stack-slot.ll
b/llvm/test/CodeGen/RISCV/dead-stack-slot.ll
deleted file mode 100644
index 49b0d2ab58c4f6..00
--- a/llvm/test/CodeGen/RISCV/dead-stack-slot.ll
+++ /dev/null
@@ -1,25 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
-; RUN: | FileCheck %s
-; RUN: llc -mtriple=riscv64 -verify-machineinstrs <