[llvm-bugs] [Bug 31000] New: [WebAssembly] Assertion failure on emitting an unused result of an inline asm

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Nov 12 14:23:21 PST 2016


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: unassignedbugs at nondot.org
          Reporter: mail+llvm at tzik.jp
                CC: llvm-bugs at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20161112/ee3cf354/attachment.html>


More information about the llvm-bugs mailing list