[llvm] fix isCall flag for JAL and JALR, and the isBranch flag for C_JR (PR #161105)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 28 16:22:58 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: مصطفي محمود كمال الدين (moste00)
<details>
<summary>Changes</summary>
Fixes https://github.com/llvm/llvm-project/issues/161104
---
Full diff: https://github.com/llvm/llvm-project/pull/161105.diff
2 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfo.td (+8-6)
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfoC.td (+1)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.td b/llvm/lib/Target/RISCV/RISCVInstrInfo.td
index 9855c47a63392..3aa65cfb4c556 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td
@@ -752,13 +752,15 @@ def LUI : RVInstU<OPC_LUI, (outs GPR:$rd), (ins uimm20_lui:$imm20),
def AUIPC : RVInstU<OPC_AUIPC, (outs GPR:$rd), (ins uimm20_auipc:$imm20),
"auipc", "$rd, $imm20">, Sched<[WriteIALU]>;
-def JAL : RVInstJ<OPC_JAL, (outs GPR:$rd), (ins simm21_lsb0_jal:$imm20),
- "jal", "$rd, $imm20">, Sched<[WriteJal]>;
+ let isCall = 1 in {
+ def JAL : RVInstJ<OPC_JAL, (outs GPR:$rd), (ins simm21_lsb0_jal:$imm20),
+ "jal", "$rd, $imm20">, Sched<[WriteJal]>;
-def JALR : RVInstI<0b000, OPC_JALR, (outs GPR:$rd),
- (ins GPR:$rs1, simm12_lo:$imm12),
- "jalr", "$rd, ${imm12}(${rs1})">,
- Sched<[WriteJalr, ReadJalr]>;
+ def JALR : RVInstI<0b000, OPC_JALR, (outs GPR:$rd),
+ (ins GPR:$rs1, simm12_lo:$imm12),
+ "jalr", "$rd, ${imm12}(${rs1})">,
+ Sched<[WriteJalr, ReadJalr]>;
+ }
} // hasSideEffects = 0, mayLoad = 0, mayStore = 0
def BEQ : BranchCC_rri<0b000, "beq">;
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoC.td b/llvm/lib/Target/RISCV/RISCVInstrInfoC.td
index 24e7a0ee5a79f..fadea31075d37 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoC.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoC.td
@@ -488,6 +488,7 @@ def C_LDSP : CStackLoad<0b011, "c.ldsp", GPRNoX0, uimm9_lsb000>,
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
def C_JR : RVInst16CR<0b1000, 0b10, (outs), (ins GPRNoX0:$rs1),
"c.jr", "$rs1">, Sched<[WriteJalr, ReadJalr]> {
+ let isBranch = 1;
let isBarrier = 1;
let isTerminator = 1;
let rs2 = 0;
``````````
</details>
https://github.com/llvm/llvm-project/pull/161105
More information about the llvm-commits
mailing list