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

    <tr>
        <th>Summary</th>
        <td>
            lcc crash when using -fsanitize=cfi and -emit-llvm option 
        </td>
    </tr>

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

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

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

<pre>
    Hi All,
I have checked out the latest main tip of the llvm-project and regenerate the same issue.
Everything is fine when using AST directly by the SelectionDAG, but crash happens when compiling the llvm .bc file through llc.

I just add a debug log and dump the instruction which crashes. 
`  %1 = call i1 @llvm.type.test(ptr %vtable, metadata !"_ZTS2CA"), !nosanitize !15`

Actuall issue is that 'metadata ! "_ZTS2CA" , is populated as a MDString, and it's trying to convert that to MDNode. I have very little understanding with the SelectionDAG and DAG selection. If I encode this as a MDString will it work? Can you guys direct me on how to fix this issue. 


The crash is as bellow, 

```
FastISel missed call (in function: _Z10function_1P2CA)
[DEBUG-SANDUN] instrction dump:
  %1 = call i1 @llvm.type.test(ptr %vtable, metadata !"_ZTS2CA"), !nosanitize !15
Creating constant: t1: i64 = TargetConstant<327>
Creating new node: t3: i64,ch = CopyFromReg t0, Register:i64 %1
llc: /devtools/git-17/llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = llvm::MDNode; From = llvm::Metadata]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /tmp/llvm-build/bin/llc cfi_example.bc -o cfi_example.s -debug
1.      Running pass 'Function Pass Manager' on module 'cfi_example.bc'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@_Z10function_1P2CA'
 #0 0x00005585babb9e92 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /devtools/git-17/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
 #1 0x00005585babba2b3 PrintStackTraceSignalHandler(void*) /devtools/git-17/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
 #2 0x00005585babb7703 llvm::sys::RunSignalHandlers() /devtools/git-17/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #3 0x00005585babb972a SignalHandler(int) /devtools/git-17/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007f3653042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007f36530969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #6 0x00007f3653042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #7 0x00007f36530287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #8 0x00007f365302871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #9 0x00007f3653039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x00005585b8f3ef38 decltype(auto) llvm::cast<llvm::MDNode, llvm::Metadata>(llvm::Metadata*) /devtools/git-17/llvm-project/llvm/include/llvm/Support/Casting.h:579:38
#11 0x00005585ba852d4f llvm::SelectionDAGBuilder::getValueImpl(llvm::Value const*) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1891:25
#12 0x00005585ba851317 llvm::SelectionDAGBuilder::getValue(llvm::Value const*) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1707:29
#13 0x00005585ba8684ba llvm::SelectionDAGBuilder::visitTargetIntrinsic(llvm::CallInst const&, unsigned int) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:5016:20
#14 0x00005585ba86f3ca llvm::SelectionDAGBuilder::visitIntrinsicCall(llvm::CallInst const&, unsigned int) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:6065:5
#15 0x00005585ba884306 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8767:9
#16 0x00005585ba84f0e2 llvm::SelectionDAGBuilder::visit(unsigned int, llvm::User const&) /devtools/git-17/llvm-project/llvm/include/llvm/IR/Instruction.def:209:1
#17 0x00005585ba84e903 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1299:22
#18 0x00005585ba93fbbc llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, bool&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:726:17
#19 0x00005585ba94564f llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1691:11
#20 0x00005585ba93e6ac llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:517:7
#21 0x00005585b8b66add (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /devtools/git-17/llvm-project/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:192:14
#22 0x00005585b99e1670 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /devtools/git-17/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:93:33
#23 0x00005585ba215e46 llvm::FPPassManager::runOnFunction(llvm::Function&) /devtools/git-17/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1443:20
#24 0x00005585ba21611c llvm::FPPassManager::runOnModule(llvm::Module&) /devtools/git-17/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1489:13
#25 0x00005585ba21657d (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /devtools/git-17/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1558:20
#26 0x00005585ba2111f8 llvm::legacy::PassManagerImpl::run(llvm::Module&) /devtools/git-17/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:541:13
#27 0x00005585ba216e73 llvm::legacy::PassManager::run(llvm::Module&) /devtools/git-17/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1686:1
#28 0x00005585b896f8e9 compileModule(char**, llvm::LLVMContext&) /devtools/git-17/llvm-project/llvm/tools/llc/llc.cpp:751:34
#29 0x00005585b896d2ec main /devtools/git-17/llvm-project/llvm/tools/llc/llc.cpp:425:35
#30 0x00007f3653029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#31 0x00007f3653029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#32 0x00005585b896bf65 _start (/tmp/llvm-build/bin/llc+0x603f65)
./build.sh: line 4:  9897 Aborted (core dumped) /tmp/llvm-build/bin/llc cfi_example.bc -o cfi_example.s -debug

```

I also attached a complete project zip file with build.sh that could used to regenerate the issue.
[data_to_llvm.zip](https://github.com/llvm/llvm-project/files/13874746/data_to_llvm.zip)

Thanks,
Sandun. 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWk1v27jT_zTMhYghkXo95ODYdTdAs0_QpIvFXgyKoixuadIQqSTeT_9gKCmW1PTfpNtmCxRqzJeZ-c0MZ4YaMWvlTgtxgeJLFK_PWOtq01zcMl22etOY_V-iaNhZYcrjxW8SL5VCZIWCNQqWV7hm9wLzWvDPosSmddjVAivmhHV4z6TGTh6wqbphdb8_PzTmb8EdZrrEjdgJLRrmhJ-3bC-wtLYVi478u3vRHF0t9Q5LiyupBX6ohcathaHl7R0uZSO4U0dcHD2JW6EEd9Lo9fI9IitctA7zhtka1-xwENp2BLjZH6QCIoNceFFwXEkFkjSm3dVYKd6LMWD9u7UOs7LEDJeiaHdYmZ3HUbb7g6cktXVN6wXAD7Xkdcdc2AXuSSUBxojEIUZ0jTlTCssQoygAGRbueBALUB0i2cE1sPDesUIJgLIXjpXMMYxIiAjZ_nV3S1ZLRAgiOcwjEmpjmZZO_iPgVxijJBgjWHLXeo6gYtCoq5nDiKRj0nhCGwNlafHBHFqwaomZxQxfr29dI_UOZkEB0iGSWuyao9epwdzoe9G4joMz-Hr9uynFAvcOA3bFSjqnBG51KRrrmC5h74N09ReW9DzgfzsMLvBVha-w0NyUYDJpp4LhBwlAHX4wzWdEN3jFND6aFu_ao-29Bu8FNhrX5gEkrORjR6dzQDxWXPe8q0XvSx23QihlHrzqx2uToP_nf26YdVe3QuG9tFaUnckRyaTGVas9FkSXePtXGAy_t-GNV37eE4wv1-8uP70_v13-vv70O4rXnZt1Xgauh2jP-y1dyzNcNYI5UDc3GkzoAIsL4SmTyAtyx5qdcKun-RUlKaLvZvu1eMDalMLvp_1-RFa89kRW5nCESPRR7LALQKSPYietEw2iS8-JxGFHUikO2xHZlOLeGaMsIpuddOdhishmHIL6n4hspOaqLcVp4LY9HEwDK1bMgoCLGtFlnGZAuhRcgToRyVjrDCK5jyBgBbrkzKsYhEUEjIhRfOmd-s54KKel3ZlA9BLD6vlkbxIUr4Hn0lrReIOjJJCWIbq6M6BGkv3BlGdDEkQSOL1eBLq6O3bzMMmaXbsX2kEklhqiH3OygGDncYTe1CmumFSi7KPezYd3y9t32LbFXjrMMAS8RoBa4LjUzh0siEo2nX7rtlhwAD3ocKZqf6zAFl3A6DTuT3p3pgrGP7uG8SH23zrGP0_dO1igIL9pzK5h-ydItre22x8GpkUrVYnIppDaD3HMK7kVj2x_UALi_LmZjFh87uN5xyUELh9brcEvD8xaiJCb_mziGxi4ZprtRAMqMxrvTdkqOBbplA0iaY-FPEfyzyyBmHaO6DsIbVej1PEU-3oOQ2SAbSgKngsWaR8BEKEBDh6DIAjiOIsLVhS5yMnIs-zRdn_cNFI7r-Y70Dsi2WlRwx62xrpGsL13rBWW2nVu9opzpWQxOUyftHyEAbnTTNmF1HBUUwLnnZATgHAGgJGC4pm0HY3fmC4VGCK7N7IcDtyPFzGHgx-eJCQzCdM0oM-p-GOrJ4La_jz-KxEH2fgBjkYYxKC-4CQcnds_JQzP9fXTzBmFdKqrqBcnrWgS0yAiMQmw10NP8DFLtkl0rqRuH893uu0m-MKaRYLIZfDotzzlQ6AZT2nmSV5xfHB1I1i5_Sy7FPtyBn7_hEEyFzpKE7yzHulrhY_SZEI7ndImWVpRzAoIrK-i7DdOKGdfUA6LV9MMiwnNfEqT5iJPXkfTbzmVM4SGkwiVVVRUNHtBWqWrL5InWT2XM33ee2b8O-LDi0uDHNElzU4Yp0Esi0kZVSNZx-XtJeQrX8ogutwJ9wdTrbjaH9QEhR_tCq3vD3QrU4r3AtLi9Ka0eUaeIcBkORR0JD5hIzNsIQ3T12D7NXClQQq4Rn45jZxZkkUFewmue2ml6wrdKw33Dyv5BOOKKQUJfoDpM2qr_b27_Bep9Ttgx0GYjBIGwI5msCvKXw77CTBg_FVBJ0ECWXLkwvEUcxbRIHkx5pdAfStoWZqAG4-8OJlCi6pAkBdDQySbmmgcYD9Z0Xw_xC9C6dVHeJzq3kUpKu-a-amCAEDpDJDIJ9XWNwGdlo6L7Lc3VUjyfFTqArRsAi2nVVHwr0C7uhVqPHrJrOSXyvDPE4hSSeu20omGOdNsH7aFhDvSar6iFI7JniDcvLfmAIymS0f6Ak9wTetTbsWU9X90VXc_AVl3NDca-7WlK4xRP9kPwHa9E6Qk8cnn5AP51AeiOPlqpTD3gaVSJzewEz94urG-hZ-P8IWJLxfC0_klwczJRcK-7eRNq_9PXzNeSy0GLNOqbj73VgjjEALuyYBkUuplRZKwsoQSmWmjj3vTWqzZXtiDv2TnnfR_Zsl6-f7O_EeYu2IFkc2fWdI9QYpBosGUOYFndEI6KfzyXIRJGuCvinfDrB0BexbRjzTfM-x7JDncSSk9AZlWeiSMRTRO_5sb2Dy85vnpEHwi_CB2jB9HfAcrRBGdFmwkmkmfhCF_gfTX_kXV1KH6oZ8keeYz-Ujv8VzyOP3mUbn-VeDEcTYzRDKDE4ZVNjKE8pT6t20nev5qN-B4O_njKJxZI51bQ6T02-L_B6KHSZZMakIyKZyyPKkykfdtPfHkGLxmjb9TLqdVyIcPf1yvjHbi8bsS47BMKd49h9Qeg4LpKF7mMylLInjXFv0hDCMCtxp6utY8vfsd3gDlZf7Kl21-y_htzdPr2CeaIgrwdgvbttaxxm17RK_iIqIpFzJTVVElMe7o96T_1xt-TzQJaJXET1QXsAAWLmyN6BIrqQWO4C-cZ3mKl4VpnPDhh5tG-F6DKHtv-GHthGe7gkNHmSlrMHOO8VqUmHkHVsIJPHTJ_5GHrivtW0gDmq6tyk2rStxaUWJn5r30cRsdxZclc2zrzNb3Av-RBxSvEcle3cQBUcARQ5qlURpB6fAF5Sej9k1TpqEy7T8Y6D4qGLqrZ-UFLXOaszNxEaZBlAU5yYOz-iKMIx5neZnSlFYV5WFMGM-SPBBplmUlOZMXJCBREAZ5GAVZkC5KXlJaxiwKgqhKSYaiQOyZVAsvl2l2Z14jF2kapcmZYoVQ1n_wQIgWD526ECEoXp81F73ZdxZFAVxH7ImKk06JC8V537YafY9wXg0tUkTXvJK-0XUu9tKd-y8MuisMPmsbdfH97TMP4P8DAAD__8txYXM">