[LLVMbugs] [Bug 5391] New: assertion triggered in LiveIntervalAnalysis

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Wed Nov 4 05:56:59 PST 2009


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

           Summary: assertion triggered in LiveIntervalAnalysis
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Register Allocator
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: nunoplopes at sapo.pt
                CC: llvmbugs at cs.uiuc.edu


$ llc -o x a.ll
llc: LiveIntervalAnalysis.cpp:525: void
llvm::LiveIntervals::handlePhysicalRegisterDef(llvm::MachineBasicBlock*,
llvm::ilist_iterator<llvm::MachineInstr>, llvm::SlotIndex,
llvm::MachineOperand&, llvm::LiveInterval&, llvm::MachineInstr*): Assertion
`!mi->getOperand(DefIdx).isEarlyClobber() && "Two address instruction is an
early clobber?"' failed.


$ cat a.ll
%0 = type { i32, i32 }

define void @safe_address(i32 %res, i32 %size, i32 %offset) nounwind {
entry:
  %0 = call %0 asm "mull $3\0A\09addl $4,$0\0A\09adcl $1,$1",
"=&{ax},=&{dx},%0,rm,rm,~{dirflag},~{fpsr},~{flags}"(i32 %res, i32 %size, i32
%offset) nounwind
  ret void
}


reduced C code:
void safe_address(int res, int size, int offset) {
  unsigned long overflow = 0;
  __asm__ ("mull %3\n\taddl %4,%0\n\tadcl %1,%1" : "=&a"(res), "=&d" (overflow)
: "%0"(res), "rm"(size), "rm"(offset));
}


-- 
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