[llvm] [StackSlotColoring] Ignore non-spill objects in RemoveDeadStores. (PR #80242)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 31 23:06:56 PST 2024
================
@@ -0,0 +1,125 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
+# RUN: llc %s -mtriple=riscv64 -run-pass=greedy,virtregrewriter,stack-slot-coloring -o - | FileCheck %s
+
+--- |
+ define void @foo() {
+ entry:
+ ; Dummy test just to hold the alloca
+ %alpha = alloca i32, i32 0, align 4
+ ret void
+ }
+
+...
+---
+name: foo
+alignment: 4
+tracksRegLiveness: true
+frameInfo:
+ maxAlignment: 4
+ localFrameSize: 4
+stack:
+ - { id: 0, name: alpha, size: 1, alignment: 4, local-offset: -4 }
+machineFunctionInfo:
+ varArgsFrameIndex: 0
+ varArgsSaveSize: 0
+body: |
+ bb.0.entry:
+ ; To trick stack-slot-colouring to run its dead-store-elimination phase,
+ ; which is at fault, we need the register allocator to run, and spill in two
+ ; places that can have their slots merged. Achieve this by volatile-loading
+ ; data into all allocatable GPRs except $x31. Then, volatile storing them
+ ; later, leaving regalloc only $x31 to play with in the middle.
+ $x1 = LW %stack.0.alpha, 0 :: (volatile load (s32) from %ir.alpha)
----------------
arsenm wrote:
you can replace all the MMO IR references with %stack.0 and drop the IR section
https://github.com/llvm/llvm-project/pull/80242
More information about the llvm-commits
mailing list