[llvm] [ReachingDefAnalysis] Test RDA on live-in registers. (PR #175389)
Mikhail Gudim via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 11 08:29:25 PST 2026
https://github.com/mgudim updated https://github.com/llvm/llvm-project/pull/175389
>From fa213f2c4e2a8ef8910ddcca3119dc8eb51e20e7 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Sat, 10 Jan 2026 12:45:13 -0800
Subject: [PATCH] [ReachingDefAnalysis] Test RDA on live-in registers.
We plan to track live-in registers in RDA. Precommit a test for that.
---
llvm/test/CodeGen/RISCV/rda-liveins.mir | 112 ++++++++++++++++++++++++
1 file changed, 112 insertions(+)
create mode 100644 llvm/test/CodeGen/RISCV/rda-liveins.mir
diff --git a/llvm/test/CodeGen/RISCV/rda-liveins.mir b/llvm/test/CodeGen/RISCV/rda-liveins.mir
new file mode 100644
index 0000000000000..2e06c4f1afc7d
--- /dev/null
+++ b/llvm/test/CodeGen/RISCV/rda-liveins.mir
@@ -0,0 +1,112 @@
+# 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: 2: PseudoBR %bb.3
+ ; CHECK-EMPTY:
+ ; CHECK-NEXT: $x10:{ }
+ ; CHECK-NEXT: %stack.0:{ }
+ ; CHECK-NEXT: 3: SD $x10, %stack.0, 0 :: (store (s64))
+ ; CHECK-EMPTY:
+ ; CHECK-NEXT: 4: PseudoBR %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
+ PseudoBR %bb.3
+
+ bb.2:
+ liveins: $x10
+ SD $x10, %stack.0, 0 :: (store (s64))
+ PseudoBR %bb.3
+
+ bb.3:
+ liveins: $x10
+ PseudoRET implicit $x10
+...
More information about the llvm-commits
mailing list