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

    <tr>
        <th>Summary</th>
        <td>
            Clang frontend "crashes" with bad code in C++ (with extended asm for x86-64 and parameter pack)
        </td>
    </tr>

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

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

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

<pre>
    Hello,
by playing a bit with parameter pack and asm extended.

Command used:
```clang++ -emit-llvm -Xclang -disable-llvm-passes -c -o paramaterpack.out paramaterpack.cpp```

/tmp/paramaterpack-b9da8a.sh:
```
# Crash reproducer for clang version 13.0.1
# Driver args: "--driver-mode=g++" "-emit-llvm" "-Xclang" "-disable-llvm-passes" "-c" "-o" "paramaterpack.out" "paramaterpack.cpp"
# Original command:  "/usr/lib/llvm/13/bin/clang-13" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-llvm-bc" "-emit-llvm-uselists" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "paramaterpack.cpp" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-fno-rounding-math" "-mconstructor-aliases" "-munwind-tables" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/home/kamay/c++" "-resource-dir" "/usr/lib/llvm/13/bin/../../../../lib/clang/13.0.1" "-internal-isystem" "/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11" "-internal-isystem" "/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/x86_64-pc-linux-gnu" "-internal-isystem" "/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/backward" "-internal-isystem" "/usr/lib/llvm/13/bin/../../../../lib/clang/13.0.1/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/../../../../x86_64-pc-linux-gnu/include" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/kamay/c++" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-disable-llvm-passes" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "paramaterpack.out" "-x" "c++" "paramaterpack.cpp"
 "/usr/lib/llvm/13/bin/clang-13" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-llvm-bc" "-emit-llvm-uselists" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "paramaterpack.cpp" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-fno-rounding-math" "-mconstructor-aliases" "-munwind-tables" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/home/kamay/c++" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/kamay/c++" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-disable-llvm-passes" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "paramaterpack-84c38f.cpp"
 ```

paramaterpack-b9da8a.cpp:
```cpp
template <typename... T>
auto test(T... args)
{
    asm("mov rax, %0" ::"r"(args));
}

int main()
{
    test(1, 1);
    return 0;
}
```

Backtrace:
```
clang++ -emit-llvm -Xclang -disable-llvm-passes -c -o paramaterpack.out paramaterpack.cpp                                                       ░▒▓ 100%   144.4 Mbps  ▓▒░─╯
paramaterpack.cpp:4:29: error: cannot compile this l-value expression yet
    asm("mov rax, %0" ::"r"(args));
                            ^~~~
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang++ -emit-llvm -Xclang -disable-llvm-passes -c -o paramaterpack.out paramaterpack.cpp
1.      <eof> parser at end of file
2.      Per-file LLVM IR generation
3.      paramaterpack.cpp:2:6: Generating code for declaration 'test'
 #0 0x00007e253c189972 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm/13/bin/../lib64/libLLVM-13.so+0xce9972)
 #1 0x00007e253c187524 llvm::sys::RunSignalHandlers() (/usr/lib/llvm/13/bin/../lib64/libLLVM-13.so+0xce7524)
 #2 0x00007e253c0b8148 (/usr/lib/llvm/13/bin/../lib64/libLLVM-13.so+0xc18148)
 #3 0x00007e253b086d70 (/lib64/libc.so.6+0x3dd70)
 #4 0x00007e253c30de51 llvm::PointerType::get(llvm::Type*, unsigned int) (/usr/lib/llvm/13/bin/../lib64/libLLVM-13.so+0xe6de51)
 #5 0x00007e25435be34b clang::CodeGen::CodeGenFunction::EmitUnsupportedLValue(clang::Expr const*, char const*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1da534b)
 #6 0x00007e25435d1245 clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1db8245)
 #7 0x00007e254371da90 clang::CodeGen::CodeGenFunction::EmitAsmInput(clang::TargetInfo::ConstraintInfo const&, clang::Expr const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f04a90)
 #8 0x00007e2543721b16 clang::CodeGen::CodeGenFunction::EmitAsmStmt(clang::AsmStmt const&) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f08b16)
 #9 0x00007e254372cd79 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f13d79)
#10 0x00007e254377d9fa clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f649fa)
#11 0x00007e254378c5ba clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f735ba)
#12 0x00007e25437bf06c clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1fa606c)
#13 0x00007e25437bb70d clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1fa270d)
#14 0x00007e25437c2ba7 clang::CodeGen::CodeGenModule::EmitDeferred() (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1fa9ba7)
#15 0x00007e25437c3397 clang::CodeGen::CodeGenModule::Release() (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1faa397)
#16 0x00007e254382842a (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x200f42a)
#17 0x00007e2543778c0f (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x1f5fc0f)
#18 0x00007e254251d065 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0xd04065)
#19 0x00007e2543e42ec9 clang::FrontendAction::Execute() (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x2629ec9)
#20 0x00007e2543ddbe25 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x25c2e25)
#21 0x00007e2543eb30fa clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x269a0fa)
#22 0x00006368b1021cc9 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm/13/bin/clang-13+0x16cc9)
#23 0x00006368b101fe4e (/usr/lib/llvm/13/bin/clang-13+0x14e4e)
#24 0x00007e2543aed755 (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x22d4755)
#25 0x00007e253c0b8253 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm/13/bin/../lib64/libLLVM-13.so+0xc18253)
#26 0x00007e2543aef1b2 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x22d61b2)
#27 0x00007e2543ac2675 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x22a9675)
#28 0x00007e2543ac2e5d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x22a9e5d)
#29 0x00007e2543acfb29 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/lib/llvm/13/bin/../lib64/libclang-cpp.so.13+0x22b6b29)
#30 0x00006368b101ce86 main (/usr/lib/llvm/13/bin/clang-13+0x11e86)
#31 0x00007e253b0722fc (/lib64/libc.so.6+0x292fc)
#32 0x00007e253b0723a8 __libc_start_main (/lib64/libc.so.6+0x293a8)
#33 0x00006368b101e5ea _start (/usr/lib/llvm/13/bin/clang-13+0x135ea)
clang-13: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 13.0.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/13/bin
clang-13: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-13: note: diagnostic msg: /tmp/paramaterpack-b9da8a.cpp
clang-13: note: diagnostic msg: /tmp/paramaterpack-b9da8a.sh
clang-13: note: diagnostic msg: 

********************
```

Of course, this is intentionally wrong code.
This also cause a segmentation fault in g++ for probably the same reason.

I wanted to upload the files as described in #frontend-crash them as attachments in Github, but I couldn't do it due to unsupported file formats (well, technically I could rename the files or compress them but since they are not very long I thought to do it here)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW19T4zgS_zThReWULceO88BDCIThjjkoYGf3LSVLcuJbx05ZNiTf_rolx7FMmAEmO3sPS2WCkeTuX7f6j6TWxIXYnX-RWVYM6GzgXg7cabwjm4zt0nxJGInTiryk1YpsWMnWspIlPPE_CcsFYWpN5LaSuZBiaN4137NivcYBtZJi4DeNg9A1H56xfDmgF_AhjlynlZNlz2vi_KE7iCNSxeJM6lZnw5SSijicOIXBwAADQhgWddVr4ZtNy6WLZ0Dn1XoD39ZwJ54IFrGhWr3GuH_PJ7OSqRUp5aYsRM1B_KQoiUH6LEuVFjnx_KE79A6vXJYpdBFWLhVQJgNKHUfoNmddCDnwLxvxoUf3tkrYN_zR6Mj8dUQh-y6-fyiah1cqOtqOiqL0gPiuTJdpzjLCzcwhbHwLVFarEr6zNMZvDXHu-fAVpzl8a5wONjR4uLd_rMp0k8nmr20ULsKRs-FOlub11lnm9SvhnZi_bgMTylJVqb4uklLKo_oBLadJKstOJ2elcJ5ZVksnBxtuaa1ZmjtJmpnm7yjKjC5lVnBWwYzracyaDlVBW4t8naCbOJsizYEGTDXL9gOdBOiuHFmWedE25YVTFnUuwNsc7G7p8CJXVVnzqigdlqWsM-nrOn9Jc-FUKHXbWoG9ycrhm_qgcycctd11LjudS5mDog6wu9ZXlZJVDqgtM6pOt1IgbESinBdW5mnHOGVcL5dg2sAAm8G4RdyKxwuYD7YEzsV6k2ZGeyJFxYD1rApU-_xPUPgOjcn2ilKqoi651ONN2w_tcTh8_WXGNh41b5y14aFnCQzfSdVOVXJ9nM-SA7T5URuee94QKMJDmvOsFihP493Os_cL-Rx_7Zdxj8FbwDLEx1j-zAQeoLyTIzhv9onX3q-bY9iPv_IWBsymZc5fY_nwCwZ877VEQBqTEMPAn9eMl0WnA7z4M06amLiQpRCxmzZv0naCtNxp0iRQGw3pwfUSvt0Cfi43yE8dCL5u4kUGPETKlnmhINi-ygZHMuPlYnE9my2-TL9dLS5_nz7M6WI2v1lMH78CkBbEj9Kms20ebLHfzqb_ZM1_subfmjX_8fG-j7_DhZ1oxP0o6Xnysa3E0R0EvvZ6mwONugXiMuynKkkG_qzabSS6zXA4JE8D_8qMYHVVkEoq0G70hF1660AnDcXxRYMIfmDPBYMA5Lp4JiUD2WYgTeBqqQADfCgtdRCK9lTg41_saV12pQF3I-jPmuQxdg0oD9l4XULYWcqqLnPiHqF-THUXoLGqZFy-td36SzeG5HM_gys6mISDibd_oPsHn3guqD2AIfNBNBlELjxdDSI6uICu0Wg4Il_jjTLd48H0oqXlv6JlqI-Ahn4IBtP5EXNr7GwE_3AmpkT7JT5wludFRYxvS1KtUkUyE7xhhw7xQOmN6k5WJ7Ok7yotuBqM9x89-v72avp4RVQdw7TisUK9xD11UVYETH9VVRulGc4xR9ZLNcQ5HhYlLvj0WUOzkgHRJOF6Sx635gTAN3qDzkFOKYjZNmCzOaVQBU8xHpKyzonikGGr5rjiscKzDFGvD_7rDo0M92WxBN2jK9ZrmVd6K__XHl1o_l7DH4KFLBIIEThQ4XFCRSSIUyQEk68ZTPdgIZNgK7m9_faV3DwQnah0kDcD_WbgMXui8C9E6a6bl0ASDqlan3QICaIZSmAdYxMPxu1ax3eJu3XhZyxp4HMvmkzGlOi0qE0IlqXm4b6EWKPV_WTmLDoMKtnLAmI-5E-wyBDnDcaCrRFtn-_ZMEAn5mz8jRqApdVQQeK7cCHPIKI2uCFkrwd5HNDRMcgPdf6YLmGV_QXMKIMEZ6LkaVAhUwsVtVC5ceSNopOw8pCSxcrvsordKBRjt2HVocOBwjDUNHwBIywSIwut7woZeB0d3puF3BNkO9MAayxrynUPneJc17kCLUtxwkmXIeKxAAcdwCM_iKU_iht31oBmYPBg_9Yf8zrn2oV04xW4-2-5qjcYtaS4_YbRFcB2iFxBqCV6CdrIxles2_A54cxuAXwVJwTHgYSeYAFIYIkY2iIKj46Cj4v4DrlOKUYcAUpLjLElxhgknbgfF2Oq1jf5BvdxXUGe9Gr_Jk-K_eu4XYAFkG7bi6hD0PemVVXC9CwWsMD1PPNHzFTKF0BPL-hnOPfWYGxYIDfMJaYbFoDdEbDrwb0S5vR9P9FjwpMqPXFHoFNL6ZGtdOrFXvgppT9W657Om8aOck8qSgRILVEmPVG4GE8-LsoMllK4w0Tov6fVCjL2Iy82PcfojrKsJy6KrGdFFt_pcqn97DErPh30jivE80Hew2Ie0p1rK2QsJgn7uEL2LReF2NlK6Ap_2uiQhCPAagnj2cJEPIg_KEyzypHYaQtynRUxyy5hxYNTd0hW7ftNUH-L2_V-YC-YnFIjY8hdtkaorZE4cUP-I418LUSdycPkGsn38C9lkuapkfg9-jHtTd44sQWwEMSx5PV78sZjV3xO3v8rOSmIYck5suXkNGbjj8oJEsIeUYqfWLm-AXcCaCy4QQ-u708-BPdBZpIpeXqkDIBYSO11UkSjEWUnY0hdNwF6FsPeigaClpucUMIgAXoWQyub08ATbmitBO9xRzl9fOrFcblmvfRlfp9uOoQ7AigWVjtdyxGV3ErX87LI8YrBtJuPtpLX1althYZ0Asy76KidO4WI4TfpLQBg313eQKxnOZcWvgaypeSeOKdNDzTgFABaEtgJU8a-a2f_ButBkOfmuP71SscS9LQBkIYT5tqpnu4TW-iHsMhzqcfRMri3aE4sD4F5WpZs9yCTZtl8WIyY9XVvFzYjz0UqPiDAoVyD_hbyno34Nk4vkSP5CbojeM2iaycAJsU4CE6ncCpGQM9iGPSPIOBXJ_3pmzAPUhcndjM04201aE9KWCKznTUrSbOcWJR6ZlDppDloxnk5zUGKhyAtKcKe2hIvpl2DNzdxGpFm3qy98WIFlqPGdWi809ULllmNj3rrp4c2-7a_Yas4PcRtbeDa7k9pNiHo01K4nd4Yp-E4eFPhh-pTP_zoWbBiTu9FfaXsjS36d4ZOmyB7akWwCchpKSLqK0IG4qOK-FcRq7e1AL23qbK3mh37W4NVfJNY_LxZb9A2W3PZMCz1zfQR2_sVZx0_nF5_oB5Lf5Oe_pKYTt7Cetl5tlLYkdz1lt5_rf5Op7k4jKmVgtpT-H0K4jIKdWHvE3nIg3ct4p59XDymNOHfPS6mExhhkaB9Ej6LyGKBr0EUZGW16IB9iyi8YxHt510ZSEYMuU-I7cPbLfm2yyqy6RpP0izg9lclScJgXSTMJVm5TStTO_F8PeO1ksR5xhqXkpKkncVVl9PRm6TmrBIZH7sGYoasSskEMfcqYOCmUOnWdOl1WgbALlMN_gfaeCV1XlS4mCWHgjxZq6Wm1EzAT3w6ReGmMDh9eprOvpCnL1dkfnd7e_f7zX-uyfzm9uqRPN3p5ovfrsnD1f3dw9NgX6q7P1b0i7BQ-Xbhrx1QSqIzKPSyqiX5ThV89z5xW8o7BTG1-sTcnGqGjlXx7xIw8LpUur6qC834QZcwK6JsR17ARUwJcbi3UxjDMlUQztAjGHjDEouqpq6YsDqrgAbZl1ax8AgzG7MYqGHFV7G1JGDrqsiti-Y35IXlOIXgYPUmK8AZcDiWQoGhIkLirMe6uIRnw3vndUwJGcaucRirKsZXusqLA6_BletYr6PqitygvJnIsfpJREHAw0UtNcdDNUizRNwwgQod_0VmegddSb7KU6710lACQfAKSAcp3iiHvIRleoMJ-aoUtln4504bK9b3ceENVgvKvSF4JL1c6fK5AbWSJe4fzsS5Lyb-hJ1VaZXJ85kdtfAeDMpuLtHooBUzYWIWiD5rZgAlMAHNXO_Xd_1xWsz1KO1f9v8IQNZ1mZ3btfylVuUQpDsEHVMcL4v_QqaFP1OlakQzDwI6Cc5W5zSOvUhI5iUsClkcUteXIxfrmFLwcRCfZSyWmTofBHiXJ5cvRJPAmwrB5Vl6Tl1K3cANXc_zgmjIeCBihgel1JOxlIORKyHbZO0Vg7Py3Fykq5cKOvXFuUMnRBEsT0rNDuizGjRfnv9RV2z7b7wvdaa5n2v0_wPEiYEL">