@@ -7475,47 +7475,52 @@ SDValue RISCVTargetLowering::lowerINIT_TRAMPOLINE(SDValue Op,
74757475
74767476 // auipc t2, 0
74777477 // Loads the current PC into t2.
7478- MCInst AUIPC_X7_0_Inst =
7479- MCInstBuilder(RISCV::AUIPC).addReg(RISCV::X7).addImm(0);
7480- uint32_t AUIPC_X7_0 = GetEncoding(AUIPC_X7_0_Inst);
7481- OutChains[0] =
7482- DAG.getTruncStore(Root, dl, DAG.getConstant(AUIPC_X7_0, dl, MVT::i64),
7483- Addr, MachinePointerInfo(TrmpAddr), MVT::i32);
7478+ OutChains[0] = DAG.getTruncStore(
7479+ Root, dl,
7480+ DAG.getConstant(
7481+ GetEncoding(MCInstBuilder(RISCV::AUIPC).addReg(RISCV::X7).addImm(0)),
7482+ dl, MVT::i64),
7483+ Addr, MachinePointerInfo(TrmpAddr), MVT::i32);
74847484
74857485 // ld t0, 24(t2)
74867486 // Loads the function address into t0. Note that we are using offsets
74877487 // pc-relative to the first instruction of the trampoline.
7488- MCInst LD_X5_TargetFunctionOffset_Inst =
7489- MCInstBuilder(RISCV::LD).addReg(RISCV::X5).addReg(RISCV::X7).addImm(FunctionAddressOffset);
7490- uint32_t LD_X5_TargetFunctionOffset =
7491- GetEncoding(LD_X5_TargetFunctionOffset_Inst);
74927488 Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
74937489 DAG.getConstant(4, dl, MVT::i64));
74947490 OutChains[1] = DAG.getTruncStore(
7495- Root, dl, DAG.getConstant(LD_X5_TargetFunctionOffset, dl, MVT::i64), Addr,
7496- MachinePointerInfo(TrmpAddr, 4), MVT::i32);
7491+ Root, dl,
7492+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::LD)
7493+ .addReg(RISCV::X5)
7494+ .addReg(RISCV::X7)
7495+ .addImm(FunctionAddressOffset)),
7496+ dl, MVT::i64),
7497+ Addr, MachinePointerInfo(TrmpAddr, 4), MVT::i32);
74977498
74987499 // ld t2, 16(t2)
74997500 // Load the value of the static chain.
7500- MCInst LD_X7_StaticChainOffset_Inst =
7501- MCInstBuilder(RISCV::LD).addReg(RISCV::X7).addReg(RISCV::X7).addImm(StaticChainOffset);
7502- uint32_t LD_X7_StaticChainOffset = GetEncoding(LD_X7_StaticChainOffset_Inst);
75037501 Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
75047502 DAG.getConstant(8, dl, MVT::i64));
75057503 OutChains[2] = DAG.getTruncStore(
7506- Root, dl, DAG.getConstant(LD_X7_StaticChainOffset, dl, MVT::i64), Addr,
7507- MachinePointerInfo(TrmpAddr, 8), MVT::i32);
7504+ Root, dl,
7505+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::LD)
7506+ .addReg(RISCV::X7)
7507+ .addReg(RISCV::X7)
7508+ .addImm(StaticChainOffset)),
7509+ dl, MVT::i64),
7510+ Addr, MachinePointerInfo(TrmpAddr, 8), MVT::i32);
75087511
75097512 // jalr t0
75107513 // Jump to the function.
7511- MCInst JALR_X5_Inst =
7512- MCInstBuilder(RISCV::JALR).addReg(RISCV::X0).addReg(RISCV::X5).addImm(0);
7513- uint32_t JALR_X5 = GetEncoding(JALR_X5_Inst);
75147514 Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
75157515 DAG.getConstant(12, dl, MVT::i64));
75167516 OutChains[3] =
7517- DAG.getTruncStore(Root, dl, DAG.getConstant(JALR_X5, dl, MVT::i64), Addr,
7518- MachinePointerInfo(TrmpAddr, 12), MVT::i32);
7517+ DAG.getTruncStore(Root, dl,
7518+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::JALR)
7519+ .addReg(RISCV::X0)
7520+ .addReg(RISCV::X5)
7521+ .addImm(0)),
7522+ dl, MVT::i64),
7523+ Addr, MachinePointerInfo(TrmpAddr, 12), MVT::i32);
75197524
75207525 // Now store the variable part of the trampoline.
75217526 SDValue FunctionAddress = Op.getOperand(2);
0 commit comments