[LLVMbugs] [Bug 9601] New: inline asm with float constant triggers assertion

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Mar 31 17:10:47 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=9601

           Summary: inline asm with float constant triggers assertion
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: nlewycky at google.com
                CC: llvmbugs at cs.uiuc.edu


This bugpoint produced module:

target datalayout =
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-unknown-linux-gnu"

define void @test() {
entry:
  %0 = call float asm sideeffect "xchg $0, $1",
"=r,*m,0,~{memory},~{dirflag},~{fpsr},~{flags}"(i32* undef, float 2.000000e+00)
nounwind
  unreachable
}

triggers an assertion in the backend: 

$ llvm/Debug+Asserts/bin/llc b.ll
llc: SelectionDAGBuilder.cpp:334: void getCopyToParts(llvm::SelectionDAG&,
llvm::DebugLoc, llvm::SDValue, llvm::SDValue*, unsigned int, llvm::EVT,
llvm::ISD::NodeType): Assertion `PartVT.isInteger() && ValueVT.isInteger() &&
"Unknown mismatch!"' failed.
0  llc             0x00000000014af34d
1  llc             0x00000000014af140
2  libpthread.so.0 0x00007fa5a0c308f0
3  libc.so.6       0x00007fa59ff1fa75 gsignal + 53
4  libc.so.6       0x00007fa59ff235c0 abort + 384
5  libc.so.6       0x00007fa59ff18941 __assert_fail + 241
6  llc             0x0000000000eb41eb
7  llc             0x0000000000eb6921
8  llc             0x0000000000ee0d31
llvm::SelectionDAGBuilder::visitInlineAsm(llvm::ImmutableCallSite) + 5965
9  llc             0x0000000000edd1b7
llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) + 107
10 llc             0x0000000000eb7b02 llvm::SelectionDAGBuilder::visit(unsigned
int, llvm::User const&) + 1260
11 llc             0x0000000000eb7580
llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) + 128
12 llc             0x0000000000ef8d96
llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::Instruction
const>, llvm::ilist_iterator<llvm::Instruction const>, bool&) + 68
13 llc             0x0000000000efb71a
llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 2604
14 llc             0x0000000000ef83c1
llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 731
15 llc             0x0000000001056a29
llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 95
16 llc             0x00000000013dcfbc
llvm::FPPassManager::runOnFunction(llvm::Function&) + 448
17 llc             0x00000000013dd202
llvm::FPPassManager::runOnModule(llvm::Module&) + 102
18 llc             0x00000000013dd535
llvm::MPPassManager::runOnModule(llvm::Module&) + 459
19 llc             0x00000000013dda38 llvm::PassManagerImpl::run(llvm::Module&)
+ 130
20 llc             0x00000000013ddf8d llvm::PassManager::run(llvm::Module&) +
39
21 llc             0x0000000000a19b6f main + 2455
22 libc.so.6       0x00007fa59ff0ac4d __libc_start_main + 253
23 llc             0x0000000000a18ac9
Stack dump:
0.      Program arguments: llvm/Debug+Asserts/bin/llc b.ll 
1.      Running pass 'Function Pass Manager' on module 'b.ll'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@test'

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list