<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63922>63922</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Extension zhinx not working for fastcc
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          eopXD
      </td>
    </tr>
</table>

<pre>
    LLVM IR:

```
; llc -mtriple=riscv32 -mattr=+zhinx
define half @caller_half(half %x) nounwind {
entry:
 %0 = tail call fastcc half @h(half %x)
  ret half %0
}

define internal fastcc half @h(half %x) nounwind {
  ret half %x
}
```

Error looks less trivial than #63917 

```
Stack dump:
0.      Program arguments: bin/llc -mtriple=riscv32 -mattr=+zhinx test.ll
1.      Running pass 'Function Pass Manager' on module 'test.ll'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@caller_half'
 #0 0x0000000006c0249a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /scratch/eopc/upstream-llvm-project2/llvm/lib/Support/Unix/Signals.inc:602:22
 #1 0x0000000006c028a0 PrintStackTraceSignalHandler(void*) /scratch/eopc/upstream-llvm-project2/llvm/lib/Support/Unix/Signals.inc:675:1
 #2 0x0000000006c002e9 llvm::sys::RunSignalHandlers() /scratch/eopc/upstream-llvm-project2/llvm/lib/Support/Signals.cpp:104:20
 #3 0x0000000006c01ebc SignalHandler(int) /scratch/eopc/upstream-llvm-project2/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007f145aba6cf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #5 0x00007f145961aaff raise (/lib64/libc.so.6+0x4eaff)
 #6 0x00007f14595edea5 abort (/lib64/libc.so.6+0x21ea5)
 #7 0x0000000006b39972 bindingsErrorHandler(void*, char const*, bool) /scratch/eopc/upstream-llvm-project2/llvm/lib/Support/ErrorHandling.cpp:221:55
 #8 0x0000000004e12924 llvm::RISCVTargetLowering::analyzeOutputArgs(llvm::MachineFunction&, llvm::CCState&, llvm::SmallVectorImpl<llvm::ISD::OutputArg> const&, bool, llvm::TargetLowering::CallLoweringInfo*, bool (*)(llvm::DataLayout const&, llvm::RISCVABI::ABI, unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&, bool, bool, llvm::Type*, llvm::RISCVTargetLowering const&, std::optional<unsigned int>)) const /scratch/eopc/upstream-llvm-project2/llvm/lib/Target/RISCV/RISCVISelLowering.cpp:14956:3
 #9 0x0000000004e15e6d llvm::RISCVTargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const /scratch/eopc/upstream-llvm-project2/llvm/lib/Target/RISCV/RISCVISelLowering.cpp:15537:22
#10 0x0000000006903a6d llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:10338:24
#11 0x00000000068f740c llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8038:3
#12 0x00000000068f7de0 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8168:27
#13 0x00000000068fa766 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8722:16
#14 0x00000000068c7707 llvm::SelectionDAGBuilder::visit(unsigned int, llvm::User const&) /scratch/eopc/upstream-llvm-project2/llvm/include/llvm/IR/Instruction.def:209:1
#15 0x00000000068c6f35 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1193:22
#16 0x00000000069b3d14 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:689:79
#17 0x00000000069b95af llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1705:33
#18 0x00000000069b28ec llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:483:7
#19 0x0000000004e6f5dc llvm::RISCVDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /scratch/eopc/upstream-llvm-project2/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.h:39:3
#20 0x0000000005b4e37f llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /scratch/eopc/upstream-llvm-project2/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:33
#21 0x0000000006269a45 llvm::FPPassManager::runOnFunction(llvm::Function&) /scratch/eopc/upstream-llvm-project2/llvm/lib/IR/LegacyPassManager.cpp:1435:20
#22 0x0000000006269ca7 llvm::FPPassManager::runOnModule(llvm::Module&) /scratch/eopc/upstream-llvm-project2/llvm/lib/IR/LegacyPassManager.cpp:1481:13
#23 0x000000000626a0ce (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /scratch/eopc/upstream-llvm-project2/llvm/lib/IR/LegacyPassManager.cpp:1550:20
#24 0x000000000626544a llvm::legacy::PassManagerImpl::run(llvm::Module&) /scratch/eopc/upstream-llvm-project2/llvm/lib/IR/LegacyPassManager.cpp:535:13
#25 0x000000000626a8f3 llvm::legacy::PassManager::run(llvm::Module&) /scratch/eopc/upstream-llvm-project2/llvm/lib/IR/LegacyPassManager.cpp:1678:1
#26 0x00000000040e52cf compileModule(char**, llvm::LLVMContext&) /scratch/eopc/upstream-llvm-project2/llvm/tools/llc/llc.cpp:754:66
#27 0x00000000040e2d15 main /scratch/eopc/upstream-llvm-project2/llvm/tools/llc/llc.cpp:416:35
#28 0x00007f1459606d85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#29 0x00000000040e1a6e _start (bin/llc+0x40e1a6e)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWVtv66oS_jXkBTXC4OtDHnJpeiK12lXbXZ23iGCccEogAtzL_vVH2E586WV17-7VtarKscd4mO-b8cyAqbViqzifgGgGosWIlm6nzYTrw38Xo43OXyaXl_dXcHUDyBSgBUDHY4ya__qSzKCUDJ7tnREHyQFZGGHZI8HwbE-dM4AsAJ79tRPquX4i54VQHO6oLCAIEaNScrP2lwCntRRHzwBnUOlSPQmVQ5DM6me5cublZJAfiCAgC-iokNBrggW1jrGT9t1AZ_MgNNzBo_yIJFl0cTZmCuW4UfSHit8wtj_L83CWAY_V8dwYbaDU-sFCya2FzohHQSV0O6ogwCQmWZDAD_xx6yh7gHm5P5xoQmOAsmujt4buITXbcs-Vs4BM4UYogJefdR903LqxlLXWwGu9KZUSagsP1FoIcLIsFXNCK3jtBVdU0S03ACdQK7jXeSm5H3XUg5NxrQu_petmdTs_u4eL6cUZIOeL6QW8ps47A66UdaasJ7rlkldnzSzF0QKAk2F0JaewIQiiZ3T8ixnCYUahlI97zxqZ2hdbn1wboVzF6Z2hjAOctoMMfVpr6wyne4BjgOc-WHwoALy0zFDHdgAvuT4wgJfloR555p8_Oxj9P84crth_3PsfsQF4eVseDto4gJd_KvHsBWKrqLRjoRgg0xhhQKYYtziCIY6UIjgwutbxH6py6Z2RPmqRAzz9uZYmESDToDUUDwxFmGdvEX5Tqp69FuD037L0aCI7-JcjQKEnE7U2koGNAd8wOGTvZ_s4DEifubCxKimCMKIbGrMCwfXacOu04WvjYEWR1x6H9e_B7Qyn-djqMQJ4hp4DzArUpj-ASdTVmsUBpUUBDRWWv1bHvKK4UhRyWhQ9RXFPUcRzTiNIN_otuzqKcMBp1FOU9NjfkCxLsM9QuVBbWyXGN0J4DtmOGsi0sq4RbLSW_5aH2mmF2jZxg3EAyDSKWsvTruUhD3CGw05s-0R2f0fNlrtL_cSNUNv6BlVUvvzF_yjdoXRTs7W99HJF2U4ofkypTYpp78_nt446_kp-u6dS3nPmtFntDxKQeXtvdbuoT05zAnJ-ZC9u2evqe8vyOZXyKFmpQneor73us0sPzYI6eklfdOl60w1Yms5W9ZU_wXNYqqpJyevM2h1-dX_3A8F8fk_ltOpyasGlZrWt3VEnRqZmu5R0a-9ePqL5SM8bNL0ceEPDh67vwbcurwfqg_cx9d7qYSbnFZFZ_dQXYro2AuBlZdLxd3XLT348psUwi2JApqSN72wQ3xGP88_Ed3XlQ6UXCZ-Lp78R1LeLeypLXnEVfy9XUUSSTkX2BbnfWWSI0B5ZH_J0p_8ZU1-HPNc5v-C-Gzw1VIvpxeByVgqZc3Oqn4SkHnzYgu-3I2mRhIh1vfhaWX1DekQr9agf6Ebyr4fLjFrBZlKzh05p-EpJ-Af8pKiih7Ts4CE7OUefYee9-PCiGbX8nYx6fC8-TFu_BVNBXAVS0lJFBlTRJI4_Q9WjsMK9Sjle4BcNHaK-G2KCfesexC3EsA-RJQlKPg0R4PT92vin5ebLUIVissx5K1jd-EO79BrnvKga6KztVz2uaIArLkj0d3B1anNnnffLPBcEGRmk-Lif4jckD8J3EPqi0ZW2r1sPqZDCurVw3FCnTa-61bdy7qhoNCmd83XdMNh-d9fy5QPCmfrlL6i01UnVNfsq2ZFVg2rZb2ZOnau-w-HeSY2349RHc5K1zk4Gzs4iWnzS2dMqPTf-7jf3p42Sb4zrDswgQX59TjrFKR3gxCl_r3S3OE2p_lCvFio_WMR8J9Aw9S9vp7AMetm4iHI27GUX04s7_Wtxvt-CHo0b77wDs16HgXvNZ7QJOUm6wTqw8ppa28H3JrCf4Lk3rGi8lQX9oMT9fhLHGQ27tWR57R8-bjN-F5KqEF7yLWUvnelPyycSdbaVPAg8BMFo8gkQV9V-aT_KGtHPBZB6LwQdL5ABAIpYtUtElVYve11aqOie20O1QZo1pv5mqKIIDdwSDlBFYdjdApaVpmYXuNVXrz4bON8OI6qCq-ubaOibtCA_RvHrEARxkvb6RdzrpkLEI8wKyPT-ICQ_RQvbUVMtTQYbLJeX91dzrRx__koRdVpLW38JqY-NsUkU-p6gbdpxMjAW50EE91Sof3XeMKh2YKJ23rS_XYviPI3gei3Fhq2to8atGyPe33ElNE_bHVevNBuACWjMYa3Oazp9Hap3fuv7rYLjd6dRPiF5RjI64pMgTrMYo5Cko90kRZgUGKM0ivIgKFCSJYSGeZyEm5QFOBqJCUaYoCRIggwhkoyjJN3kJI5wERVFEnIQIr6nQo49X2NttiNhbcknMckwHkm64dJW3y8xVvwJVjcBxiBajMyk4nxTbi0IkW9abavFCSf55PzZcWV9E1Z_3lLawSdtHoTawkKb5ovfqDRysnPuUJVKvAR4uRVuV27GTO87od_xsF89eVO8aytT_x8AAP__GIQK5Q">