<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113776>113776</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AVR] AsmParser doesn't reject bad asm, again
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
workingjubilee
</td>
</tr>
</table>
<pre>
This code falls through to binary code emission, at which point it hits an `llvm_unreachable`. This may save you from getting any further if you've enabled the right CMake variable.
It is probably bad code that should get rejected way earlier.
```llvmir
target datalayout = "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"
target triple = "avr-unknown-unknown"
define void @main() addrspace(1) #0 {
call addrspace(0) void asm sideeffect alignstack "st ${0}, ${1}", "e,r,~{sreg},~{memory}"(ptr nonnull inttoptr (i16 37 to ptr), i8 0)
unreachable
}
attributes #0 = { "target-cpu"="atmega328p" }
```
And speaking of "should get rejected way earlier": It does IF you have debug assertions enabled!
<details><summary>Backtrace</summary>
```
llc: /root/build/lib/Target/AVR/AVRGenAsmWriter.inc:1424: static const char* llvm::AVRInstPrinter::getRegisterName(llvm::MCRegister, unsigned int): Assertion `*(AsmStrsptr+RegAsmOffsetptr[RegNo-1]) && "Invalid alt name index for register!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel <source>
1. Running pass 'Function Pass Manager' on module '<source>'.
2. Running pass 'AVR Assembly Printer' on function '@main'
#0 0x0000000003ba9ae8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3ba9ae8)
#1 0x0000000003ba749c SignalHandler(int) Signals.cpp:0:0
#2 0x0000780202242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007802022969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x0000780202242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007802022287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000078020222871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x0000780202239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x00000000023ddeda llvm::AVRInstPrinter::printOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x23ddeda)
#9 0x00000000023debb3 llvm::AVRInstPrinter::printInst(llvm::MCInst const*, unsigned long, llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x23debb3)
#10 0x000000000323fd02 llvm::MCTargetStreamer::prettyPrintAsm(llvm::MCInstPrinter&, unsigned long, llvm::MCInst const&, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x323fd02)
#11 0x00000000032a8faa (anonymous namespace)::MCAsmStreamer::emitInstruction(llvm::MCInst const&, llvm::MCSubtargetInfo const&) MCAsmStreamer.cpp:0:0
#12 0x00000000009691c5 (anonymous namespace)::AVRAsmParser::matchAndEmitInstruction(llvm::SMLoc, unsigned int&, llvm::SmallVectorImpl<std::unique_ptr<llvm::MCParsedAsmOperand, std::default_delete<llvm::MCParsedAsmOperand>>>&, llvm::MCStreamer&, unsigned long&, bool) AVRAsmParser.cpp:0:0
#13 0x0000000004bd205a (anonymous namespace)::AsmParser::parseAndMatchAndEmitTargetInstruction((anonymous namespace)::ParseStatementInfo&, llvm::StringRef, llvm::AsmToken, llvm::SMLoc) AsmParser.cpp:0:0
#14 0x0000000004bea616 (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) (.part.0) AsmParser.cpp:0:0
#15 0x0000000004bdf553 (anonymous namespace)::AsmParser::Run(bool, bool) AsmParser.cpp:0:0
#16 0x0000000002872b2f llvm::AsmPrinter::emitInlineAsm(llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::MCTargetOptions const&, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2872b2f)
#17 0x00000000028739d7 llvm::AsmPrinter::emitInlineAsm(llvm::MachineInstr const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x28739d7)
#18 0x000000000286cbe6 llvm::AsmPrinter::emitFunctionBody() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x286cbe6)
#19 0x00000000014923c5 llvm::AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x14923c5)
#20 0x0000000002b263d9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#21 0x00000000031213c0 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x31213c0)
#22 0x0000000003121771 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3121771)
#23 0x0000000003122027 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3122027)
#24 0x000000000086aefc compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#25 0x0000000000756ae6 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x756ae6)
#26 0x0000780202229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x0000780202229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x0000000000861c0e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x861c0e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWd9v2zgS_muYF8KGRNn68ZAHxan3AjTbIi5yj8FIGsncUKSOpNL45f72Aykpttxs0-wGiytSyyLFmW8-fhyOaDCGNxLxkqyvyPr6Anq7V_ryu9KPXDZ_9AUXiBeFqg6X3_bc0FJVSGsQwlC716pv9tQqWnAJ-jB0YsuN4UoStqFg6fc9L_e0U1xayi3dc2soSEriQIin9qGXGqHcQyGQxMGSeictHKiBJ6QH1dNaq5Y2aC2XDQV5oHWv7R415bXrJyx5QorSWaio3SPVvNlburmFR6RPoLnrWZLgmgT58HljKTe006qAQhxoAdWA3O7BUrNXvaicQ6rxDywtVvQ7HCiCFhz1zBCJg-HPhcL10GhBu8EVWBBwUL2lJLqmhDFcfA0XHYnyMCZRni54Olym24gN13jlr_V4X4_3Ml2A-0IYmzmymncCJyfwpBe9fJTqu5yuLwOGzwprLpE-KV5Rsgpa4JKwlLCMQlVp00GJhKWhayAsCihJroaBtAQhZg8F7iFvCExLDa8Q6xpLS0HwRhoL5aPDZCwlbEWSq4Ak104Ww13o79jQwJCwjSZs81-SXBmNzfCou2uxVfowPZx2VlOppOyFoFxaq1wDYSkPYxolTo2d1YRlzi5PqcM44j_V2kBIcn3KDFiredFbNGPkjtLkyqEbuF6UXe9ARA4K2BYbiFjaEcbo0dSkiVPLuayo6RDcmqKq9qT8XGfeTU5vLK0UGnqz9Wth7xZFhUXfUDAGteVKmkn8hIUzcUabCi1wYUj0iUQb07ct6AOJPl1B-Wi1m8JoQ9j22PGqtodbIUqHh7CtVsoSti16LirCtoIXhG2_eX4I2-b3d8Pnbyhz0_5bc4t6yaUbHa6YkzI1FiwvaamksbTcgyYsp24JkSgnUZ7f391IY79qLi3qoa1Be4cNNxb179A67R2fv91MXW7Ke-kTWuW04aY-ymk-UeWyDmE5YWlu2p3Vxivl6g6b3LRf6tqgdS1r1_K7WoRkfT0sg5iw2E3ajXwC4eQuLJXQIuWywmdaK031C4bQ6zShNXCB1Zgwvn7-lO8-UdMXLbcUqJtCjZ3S1il2b21nXDRsS9i24XbfF8tStY5fF-dwWXRaOaUQtuXG9GgI21KQLtRS9D6BIS01mD0tpike3e_8Wqz61uWfoSlYkiD7qlWjoaWgm75Fac04yapzXkrVdlygXuBzJ5R2wW1LAbJZHNW3sLqXj04QLo9shSjpQjkT0HXOUG-73i4NXTyn8QJMuzAHaeGZRNduegV1ylS9dmIc9Rc6YHe9lG6xdGDcaky2vSz9FH51DbcgoXFwEqokbVXVuwzIkpkxlozBs9cM5vd3Xhit2wImrQ326smXszhlyGRMIj4zBM_B9C8qIANMT_RrDmb44q165r_pIWEeH9Lw_UEZqxFaL6_NqFfqc_Hf4p-wq-B5hHVMfoRF4RnuZJWVdMcbCeJfICvh7KcjjKHZLMvOKSbw_18MsdFQkgYsYGzF1iwYgQ_p4DmNH-LVQnDZPy8a2Q8d5dKoZezh-SEzcNHcZhZndUk7u9cI1cMjF-J9Dvz4mYPVOehVEtPG-DjfC36VxDPb67ltliZ1RKFwq_tdlv3AmeX4B8th8W6bYTGzmcxtRhlm8fts-iEzm-mptlhUVVjBGzm9czdfOtQgq7OEfuN3Brc_-HR9ntU39M8X0oetoDGIWZTZWZRYFNGvRHnjI_nFEIWSzTzGndVcNndYz5tvN7u-GCqTG1mryVr8zxHk4n8hyGWYeWpkUV0FbIZ4KBR2Hs6RIrT24FnLTfsKTy_pOX6DqDmt8f8VXSMbM7rmGZlBWgM4fyCVPLSqN77KGMvtbApjKF5OCMSWe4np3u9bP1HaL1OS0ZmfH_cBB5-dwg-yOAvL9Vvw8_u73LRfQZsJfQu23Oey-vSTKHa3n1X5YyI4C2fXghD3WFqlb9pOuGrAVkNXL_l_enxw5V20OSXAI6lc_Tdlog19GVVhDb2wDxUKtPjWSFdm-79XaJ7m61UJ-7ZCKeF4PyXoddqjU9pXRcWC9ZuqOeO8c99zWd2ecP9t1MHpDLxh1ZvcWbDoikcnoR_n5PXclZv2m3pEefbwMM0ZfYOB1ZwBhDiM_woDL9A_JFS_YgYfO2xhA0K4Otznd59Glh1ouwx-IcD12RTX63X0zgDvejeBg6pO1PVzv_Fsg0sTVrB6PmuzzW1IPIJLPE_cf2vLmraJL93wgvsnT13_riqc7aHHziOqCfg1B-FfnrLxzfOjtsGBpVleT85ojLIq-Us03kK55xL9ojyJ9ONDcAhnIcwLujQuC4zfCGF6R7tS1WE8UvowgN7_DOCsFgtXGYvK9U8A6l5-kSOdE9DXqD72feTmP-I7DYDNaiVWsDiqMvqneNx770kkr4bwI_aTjPOKvVdzAJsXJSELozI4wbX96oZOb-DvRvQhpdQAasYmO0edJOEvoL71ZwdzIYxNH404ScIZ4ugMMQvYaZIQ2EB5mDafF-xDYTPi_ydwO1gz3LPNN0hjwLqko48XOsdjvR_y8ufP97cbJS0-T3WmEOXrOpztgUGyjgFj2gKXHxXcYHIW2_nrdlZl7zzZ8ENmNpNzm7gK6MODG_ZgLGj7cBLUL3vB1dxLejYrYRkgHex_FF-D0Rev09mhRd1yCf4Am9s9HY5USJTT3c1vu0-_3Q-Pb0bHVKPttURXYtMwyn5ybD6cTx9PsS-qy6jKogwu8DJMWJYlKQtXF_vLOE7K9SoLsqLAJIygXMUl1FjEq2C9wvX6gl-ygK3CgMUsjIJwtUzLJAgxxbAqgjLKSrIKsAUulk6qS6WbC3_EehmGUZLEFwIKFMb_SMaYxO_U9xLGyPr6Ql_609mibwxZBYIba45mLLfC_7qW39-R9fWxAPMH-5KwZPoBwP8QBa4A2FBogMuLXovLv340PEJ_umT_CwAA__9Cc4C-">