https://llvm.org/bugs/show_bug.cgi?id=31000
Bug ID: 31000 Summary: [WebAssembly] Assertion failure on emitting an unused result of an inline asm Product: libraries Version: trunk Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P Component: Backend: WebAssembly Assignee: unassignedb...@nondot.org Reporter: mail+l...@tzik.jp CC: llvm-bugs@lists.llvm.org Classification: Unclassified The WebAssembly backend hits an assertion failure when a result of inline assembly is unused. Here is a repro case and the stack trace. --- foo.ll target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" target triple = "wasm32" define void @f() { A: %t = xor i1 1, 0 br i1 %t, label %B, label %X B: %y = tail call i32 asm "i32.ctz $0=, $1", "=r,r"(i32 0) br label %X X: %r = phi i32 [ 0, %A ], [ %y, %B ] ret void } ---- llc: /home/tzik/backpack/dev/llvm/src/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp:112: std::string (anonymous namespace)::WebAssemblyAsmPrinter::regToString(const llvm::MachineOperand &): Assertion `WAReg != WebAssemblyFunctionInfo::UnusedReg' failed. #0 0x00007f11258d989c llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/tzik/backpack/dev/llvm/src/llvm/lib/Support/Unix/Signals.inc:402:11 #1 0x00007f11258d9d89 PrintStackTraceSignalHandler(void*) /home/tzik/backpack/dev/llvm/src/llvm/lib/Support/Unix/Signals.inc:466:1 #2 0x00007f11258d8113 llvm::sys::RunSignalHandlers() /home/tzik/backpack/dev/llvm/src/llvm/lib/Support/Signals.cpp:45:5 #3 0x00007f11258da0e4 SignalHandler(int) /home/tzik/backpack/dev/llvm/src/llvm/lib/Support/Unix/Signals.inc:256:1 #4 0x00007f1124d5be20 __restore_rt (/lib64/libpthread.so.0+0x10e20) #5 0x00007f11241752e7 gsignal (/lib64/libc.so.6+0x332e7) #6 0x00007f112417676a abort (/lib64/libc.so.6+0x3476a) #7 0x00007f112416e30d (/lib64/libc.so.6+0x2c30d) #8 0x00007f112416e3c2 (/lib64/libc.so.6+0x2c3c2) #9 0x00007f1129aa9cde (anonymous namespace)::WebAssemblyAsmPrinter::regToString(llvm::MachineOperand const&) /home/tzik/backpack/dev/llvm/src/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp:112:3 #10 0x00007f1129aa96cd (anonymous namespace)::WebAssemblyAsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) /home/tzik/backpack/dev/llvm/src/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp:274:13 #11 0x00007f112853d891 EmitGCCInlineAsmStr(char const*, llvm::MachineInstr const*, llvm::MachineModuleInfo*, int, int, llvm::AsmPrinter*, unsigned int, llvm::raw_ostream&) /home/tzik/backpack/dev/llvm/src/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp:409:21 #12 0x00007f112853cabd llvm::AsmPrinter::EmitInlineAsm(llvm::MachineInstr const*) const /home/tzik/backpack/dev/llvm/src/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp:482:5 #13 0x00007f1128515171 llvm::AsmPrinter::EmitFunctionBody() /home/tzik/backpack/dev/llvm/src/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:879:9 #14 0x00007f1129aaa268 llvm::AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) /home/tzik/backpack/dev/llvm/src/llvm/include/llvm/CodeGen/AsmPrinter.h:230:5 #15 0x00007f1129aa8b1f (anonymous namespace)::WebAssemblyAsmPrinter::runOnMachineFunction(llvm::MachineFunction&) /home/tzik/backpack/dev/llvm/src/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp:63:5 #16 0x00007f1127cfbc61 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/tzik/backpack/dev/llvm/src/llvm/lib/CodeGen/MachineFunctionPass.cpp:62:8 #17 0x00007f112744239f llvm::FPPassManager::runOnFunction(llvm::Function&) /home/tzik/backpack/dev/llvm/src/llvm/lib/IR/LegacyPassManager.cpp:1511:23 #18 0x00007f11274426b5 llvm::FPPassManager::runOnModule(llvm::Module&) /home/tzik/backpack/dev/llvm/src/llvm/lib/IR/LegacyPassManager.cpp:1532:16 #19 0x00007f1127442e4a (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/tzik/backpack/dev/llvm/src/llvm/lib/IR/LegacyPassManager.cpp:1588:23 #20 0x00007f1127442976 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/tzik/backpack/dev/llvm/src/llvm/lib/IR/LegacyPassManager.cpp:1691:16 #21 0x00007f1127443361 llvm::legacy::PassManager::run(llvm::Module&) /home/tzik/backpack/dev/llvm/src/llvm/lib/IR/LegacyPassManager.cpp:1722:3 #22 0x000000000041d019 (llc+0x41d019) #23 0x000000000041b502 (llc+0x41b502) #24 0x00007f1124162620 __libc_start_main (/lib64/libc.so.6+0x20620) #25 0x000000000041afa9 (llc+0x41afa9) Stack dump: 0. Program arguments: llc -filetype asm foo.ll 1. Running pass 'Function Pass Manager' on module 'foo.ll'. 2. Running pass 'WebAssembly Assembly Printer' on function '@f' -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs