[llvm] [ReachingDefAnalysis] Test RDA on live-in registers. (PR #175389)

via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 10 12:51:49 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-risc-v

Author: Mikhail Gudim (mgudim)

<details>
<summary>Changes</summary>

We plan to track live-in registers in RDA. Precommit a test for that.

---
Full diff: https://github.com/llvm/llvm-project/pull/175389.diff


1 Files Affected:

- (added) llvm/test/CodeGen/RISCV/rda-liveins.mir (+116) 


``````````diff
diff --git a/llvm/test/CodeGen/RISCV/rda-liveins.mir b/llvm/test/CodeGen/RISCV/rda-liveins.mir
new file mode 100644
index 0000000000000..2651382c40aa5
--- /dev/null
+++ b/llvm/test/CodeGen/RISCV/rda-liveins.mir
@@ -0,0 +1,116 @@
+# RUN: llc %s -mtriple=riscv64 --passes='print<reaching-def>'  -o - 2>&1 | FileCheck %s
+
+---
+name:            test0
+tracksRegLiveness: true
+body:             |
+  ; CHECK-LABEL: Reaching definitions for for machine function: test0
+  ; CHECK-NEXT: RDA results for test0
+  ; CHECK-NEXT: implicit $x10:{ }
+  ; CHECK-NEXT: 0: PseudoRET implicit $x10
+
+  bb.0.entry:
+    liveins: $x10
+    PseudoRET implicit $x10
+
+...
+
+---
+name:            test1
+tracksRegLiveness: true
+body:             |
+  ; CHECK-LABEL: Reaching definitions for for machine function: test1
+  ; CHECK-NEXT: RDA results for test1
+  ; CHECK-NEXT: $x10:{ }
+  ; CHECK-NEXT: 0: $x10 = ADDI $x10, 1
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: implicit $x10:{ 0 }
+  ; CHECK-NEXT: 1: PseudoRET implicit $x10
+  bb.0.entry:
+    liveins: $x10
+    $x10 = ADDI $x10, 1
+    PseudoRET implicit $x10
+
+...
+
+---
+name:            test2
+tracksRegLiveness: true
+body:             |
+  ; CHECK-LABEL: Reaching definitions for for machine function: test2
+  ; CHECK-NEXT: RDA results for test2
+  ; CHECK-NEXT: $x10:{ }
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: 0: BEQ $x10, $x0, %bb.2
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: $x10:{ }
+  ; CHECK-NEXT: 1: $x10 = ADDI $x10, 1
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: implicit $x10:{ 1 }
+  ; CHECK-NEXT: 2: PseudoRET implicit $x10
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: implicit $x10:{ }
+  ; CHECK-NEXT: 3: PseudoRET implicit $x10
+  bb.0.entry:
+    liveins: $x10
+    BEQ $x10, $x0, %bb.2
+
+  bb.1:
+    liveins: $x10
+    $x10 = ADDI $x10, 1
+    PseudoRET implicit $x10
+
+  bb.2:
+    liveins: $x10
+    PseudoRET implicit $x10
+...
+
+---
+name:            test3
+tracksRegLiveness: true
+stack:
+  - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8,
+      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
+      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
+body:             |
+  ; CHECK-LABEL: Reaching definitions for for machine function: test3
+  ; CHECK-NEXT: RDA results for test3
+  ; CHECK-NEXT: $x10:{ }
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: 0: BEQ $x10, $x0, %bb.2
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: $x10:{ }
+  ; CHECK-NEXT: 1: $x10 = ADDI $x10, 1
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: 2: BEQ $x0, $x0, %bb.3
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: $x10:{ 1 }
+  ; CHECK-NEXT: %stack.0:{ }
+  ; CHECK-NEXT: 3: SD $x10, %stack.0, 0 :: (store (s64))
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: $x0:{ }
+  ; CHECK-NEXT: 4: BEQ $x0, $x0, %bb.3
+  ; CHECK-EMPTY: 
+  ; CHECK-NEXT: implicit $x10:{ 1 }
+  ; CHECK-NEXT: 5: PseudoRET implicit $x10
+  bb.0.entry:
+    liveins: $x10
+    BEQ $x10, $x0, %bb.2
+
+  bb.1:
+    liveins: $x10
+    $x10 = ADDI $x10, 1
+    BEQ $x0, $x0, %bb.3
+
+  bb.2:
+    liveins: $x10
+    SD $x10, %stack.0, 0 :: (store (s64))
+    BEQ $x0, $x0, %bb.3
+
+  bb.3:
+    liveins: $x10
+    PseudoRET implicit $x10
+...

``````````

</details>


https://github.com/llvm/llvm-project/pull/175389


More information about the llvm-commits mailing list