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

    <tr>
        <th>Summary</th>
        <td>
            Clang crash on llvm::AsmPrinter::emitInlineAsm(llvm::MachineInstr const*) const
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Compiler Explorer: https://godbolt.org/z/sdEsMMTdv
- start crashing on clang 10.0.0
- generated by fuzzer

console:
```console
<source>:2:30: warning: unknown attribute 'noclone' ignored; did you mean 'noinline'? [-Wunknown-attributes]
    2 | int __attribute__((noinline, noclone)) test(double y) {
      |                              ^~~~~~~
      | noinline
fatal error: error in backend: Nested variants found in inline asm string: 'fis$(tp$(l ($1)$| DWORD PTR [$1]$)
        mov$(l ($1), $0$| $0, DWORD PTR [$1]$)'
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -fno-verbose-asm -c --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -O2 <source>
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '<source>'.
4.      Running pass 'X86 Assembly Printer' on function '@test'
 #0 0x0000000003fbcfa8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fbcfa8)
 #1 0x0000000003fba3d4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fba3d4)
 #2 0x0000000003eff106 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3eff106)
 #3 0x0000000003fb18be llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fb18be)
 #4 0x0000000000d9b940 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x0000000003f09f63 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3f09f63)
 #6 0x0000000004f3f7fd llvm::AsmPrinter::emitInlineAsm(llvm::MachineInstr const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4f3f7fd)
 #7 0x0000000004f38149 llvm::AsmPrinter::emitFunctionBody() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4f38149)
 #8 0x00000000028f0824 llvm::X86AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x28f0824)
 #9 0x00000000032c2873 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#10 0x00000000038eb15f llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x38eb15f)
#11 0x00000000038eb511 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x38eb511)
#12 0x00000000038ebd81 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x38ebd81)
#13 0x0000000004271c91 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4271c91)
#14 0x000000000496df03 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x496df03)
#15 0x00000000066638dc clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x66638dc)
#16 0x000000000496e308 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x496e308)
#17 0x0000000004c61c75 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4c61c75)
#18 0x0000000004bde97e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4bde97e)
#19 0x0000000004d55741 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4d55741)
#20 0x0000000000d9e07f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xd9e07f)
#21 0x0000000000d94c5a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#22 0x00000000049d59c9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#23 0x0000000003eff044 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3eff044)
#24 0x00000000049d5fdf clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#25 0x0000000004997eed clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4997eed)
#26 0x0000000004998f7e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4998f7e)
#27 0x00000000049a1bc5 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x49a1bc5)
#28 0x0000000000d9a52f clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xd9a52f)
#29 0x0000000000c4ea64 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xc4ea64)
#30 0x000075bb55029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#31 0x000075bb55029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#32 0x0000000000d94705 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xd94705)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Compiler returned: 70
```
code:
```c
int __attribute__((noinline, noclone)) test(double y) {
  int a, b;
 asm("fis{tp{l (%1)| DWORD PTR [%1]}\n\tmov{l (%1), %0| %0, DWORD PTR [%1]}"
      : "=r"(a)
      : "r"(&b), "t"(y)
      : "st");
 return a;
}

int main() {
  int t ;

  if (test(t) != t)
 __builtin_abort();
  return 0;
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWktz47gR_jXwBSUVCL4PPtCylczWTMZlO7t7U4EEKCNDAgwAytYe8ttTAEnxYY3HSTR7iWumLOHR-PpDo7uBNtGa7wVj1yC8AeHtFWnNs1TXOY-Kq1zS4_VG1g2vmIJ3r00lFVPAz-CzMY0GfgbwFuDtXtJcVmYt1R7g7R8AbzW901--PNEDQNkKakOUgYUi-pmLPZQCFhURe-ihNVojN2TPBFPEMArzIyzbP_5gCqAMoKyQQsuK2bVQBiLU_RtaUQb8jZatKhjw74CfYeBnPrIQX4gSXOztx1Z8E_JFQGKM4nlrGAQ4FrKopGAAx5DvhVSMAv8GUk7hUbawZkR0o7iouBsG_C0E4c3qt17c6iROg_AWoAxCCDEE8QZyYeBud-rf7QBOAE5GYRt4Wj4FOIWGaQNwQmWbVwwebROIb3qZ0Ml89weEd_9yP7Mpp_VQVhJDKsiUkm7_3AfIBcxJ8Y0Jatv-xrTl_0AUJ8JoWMpWUDumEwKJrqE2qucU4LjkGuAA4MQ03e8KOj0Dz2kVWAi3v319uIX3Tw-WOtcV3rrBqdvetJaHc3M3EOAA9TK6j-_KwjFA2f3nu-zxDuo2r7mBBObtHirWSGWgkUuT5ea5zdeFrAHeVtVh-LVqlPwHKwzAW651yzTAW0gcD0XVUgbNM-ss2VFnFCncdjaKNUoWTGtGYW-QeONmEq1lwZ1tq1ZAXSjemDVA2aMhxTdI27rprButAUrvldwrUkOi9m3NhNEd2VvZWExFfxhXbDiMeOvO0opozZThUuiVUa34BvA252Lohqs9fSGqXAVwtYcraSWSprFyW9O0Zq3hqhRydWAql5qt7F6vCrha7YtiZaSsimfCBfBv30ViB2tBGv0sDVyVhaykWlFO9kJqw4t-DcfevPkrhrNzjDLPcgH8DZMl8O9gQ5RmChIDmaBQlrDk7vRjO2wjKRscCJcCoMy3zQ-tsA4ANkRra67bVhS2H97bhi9EkL1FHVt_VEvaVs4tzHDg2O5TcE7a70kEM61ZnVdHeK-4MCdh5bCQFReg7mxbA4UA-wiiVzT8-GVelCSBzgD9DPiZPurugxPpLOSps7FkHKTIy05qoxipAY6snXFhnM-wR-h_NBWAb9BrD6w7pha2t4BNfBqcg72pGBFt81U88r0gFcBJK1yAobCSVvhlQVoYI0g8A8nK0kPRBOTGGt4DK-SBqeNGCsNeTdfzVyJoxe5euXXCF-eyAzLC9BdceknOzpuAcyjdlym4DcylrC7NpYUxggymIBFN8zRA8PPnX7_c2dDREaYATg6SU4AzC6p4JgrayGz6hgFlUXi7mnCxLhrr6pD73y0TzrlAaRn5Ey46971z0WvXRa_pQXh6sYGpXzL6ScQ4TCMx0RRxUPplXNIJ4kzXgzdw31nNzScXQDNdz8B_IcUzF-yT0GZKW9p9vpwGPcZRg3ihQeIF6Q80GHznjaRHB-yCDPcIRnzJFB9OSpTgqa_5PYmWEFUrvoqezwHqOa7HvuiiKvQgRxXSmVnjAifx1KwXcGxAmihyVoO30NcNUWaN7Lcz8hZnzbrweehJWO6F5QTU9t7OG-LifwznQsetg9Xnh9j3vCXo0PM-APqLC-hzG-ibLg849LwRMF4CpskUcMX2pDj2Dn6E_qluqhP8Pwk2TSawZ0EpwLFXpF53TRu9wE13WfjqUkaAk0n3cEu03oyIgvXueDaCsr8w8bVxwPr-Uc1Hd7N4YOW8edA-W0jroWS9EU6nfBJGtZof2AMrN8LcGwX8zdh9KPuztuUVezxqw2qX6m2gNrTraQX_Z8t2zWKmTbuaF8UN2w3J12QSZSVpK7OjrGKG_WCivavenVdpI4Vua7ub2WXdbLen447PInyQRrRE_nt4JpnSkyJCVy7b_rvgC1PIHp-G5OrCRtuDHFWYZQ9RFPkJLaYq3NtrQ_b4NAf4yGoySxd-QtrQgxmhRgu2mY-SM8ejN-g-5WNFa9hg4xeOuh2EEeA8Kygir4jDKcCtspt6OnJThBfH1q0-YptlBEFOWRoz-J73Ocvf95W5tJ12CEf8s3QgoGEYBzPn2iMd1TjIgrxF_dbJXthFdMhOuDFaXAIYistTNj-LUplS5Gi9t7-ZXwN6N7e8GpyuDReE3-Eb0XsL9EEREjhQvfGe3Jmf6PBYk6r6lRVG9uH4jCqLqGVl9M5ucg1JIVX8wNTbHAzjuRugYVqkjoyJ0OH9YKccn663O2LdGyfws4JUVU6Kb7tSWJijiXQL9-ay8Tayromgy9N6dt9OkUy6EE2qWQwb4_Mpdp0m7HbF66vndV9yonmxGx4KHYWzwbZhZxThRg_dC3Gkqqz5SzXpt0Mmd8rxntRNATiuSJ1TAnA8UoWT4c3hF5mf2Qx_-V6AguBD7wUPrXgkJauOMy7f37dLPymgIBhNPViaVUlL-P9sFosL0vn9D-espTFj9Lusuf0ib2LfQOXMUS8m2gGzV4qPDc0WbxqXfhfoFB6NaJGipEk5j7IfoeMXmevvc_GLzD9zbWZcvOd_T3vfEG63vX_9-ih9vYH8ZBItTSOJ8zQqJV5ehN8DfDv5PEsBzsT-75H_J5J40ezTETPSlixiNQlx78CGXGOA7RxH1h_7H0fiC2YXFtOIeJbToSJgJAqgxXq5JTuhpyVPtYM4zPMwRDilKepXq3gO8PY1iXZRsKq4aF9Xe9F2HcVay3XUPVTZKaNAbymQBQjudnbOzhVtdxOFPrwECyZL4GUSFqMQdsIvuTdWbLfoYNdjsbOrgJV9yg-L3sJLwitG4Qs3z5C9cms2lMHYMdpqBlcHaCTUjEE-ycftEqeSuGKmVYK58mmMpgVqV7mmb8rWAGWXrA1bWcR5N-C7FuLemAHGJdcgvjENiG_6ymro8vq3JdnQlVHjWxBuBAg3ppaH5SRXjg1RV4sNz9ViT0IwHivQrnCJgX-r7C-ckP59dNrbdwEc5aeVsOkaj2fG664v7fXtNgCS7qsF4P5owPLSu40lXQb2Y11DadXsCe6rPh7wb6Hpl97t8pZXhosdyaUyQzbXiesXR7PFh62-otc-Tf2UXLFrLw5xHAdpEFw9X9M8jaMwD8sChyxOvZAQFqXUK30ceSWOrvg1RjhEsRd7cRgGwdpDNPdDj3rIx0mcRiBArCa8Wlvvt5Zqf-VK1ddekPpRclWRnFXa_T0Hxv0ZwSC8vVLXrsKdt3sNAlRxbfQownBTseuNOypdfVuKn1DWuGpVdf3fl-J7FQ_X-N8BAAD__9aDoMg">