[LLVMbugs] [Bug 4419] New: Register Scavenger assertion

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Fri Jun 19 15:52:05 PDT 2009


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

           Summary: Register Scavenger assertion
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Register Allocator
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: asl at math.spbu.ru
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=3108)
 --> (http://llvm.org/bugs/attachment.cgi?id=3108)
Reduced testcases

Consider the bytecode attached.

./llc bugpoint-reduced-simplified.bc -mattr=+vfp2 -mtriple=arm-linux-eabi -f
-float-abi=hard

yields:

llc: /home/asl/proj/llvm/src_arm/lib/CodeGen/RegisterScavenging.cpp:279: void
llvm::RegScavenger::forward(): Assertion `(isReserved(Reg) || isUnused(Reg) ||
IsImpDef || isImplicitlyDefined(Reg) || isLiveInButUnusedBefore(Reg, MI, MBB,
TRI, MRI)) && "Re-defining a live register!"' failed.

That's due to the following code:

        BL <ga:__ieee754_sqrtf>, %S0<kill>, %R0<imp-def,dead>,
%R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>,
%LR<imp-def,dead>, %D0<imp-def>, %D1<imp-def,dead>, %D2<imp-def,dead>,
%D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>,
%D7<imp-def,dead>, %CPSR<imp-def,dead>
        ADJCALLSTACKUP 0, 0, 14, %reg0, %SP<imp-def>, %SP<imp-use>
        %S1<def> = FLDS <cp#0>, 0, 14, %reg0, Mem:LD(4,4) [ConstantPool + 0]

S1 is imp-def on call due to imp-def on D0. It's redef'ed later on FLDS. This
sounds like livevars bug which triggers regscavenger assertion later.

I'm attaching both orioginal and reduced testcases.


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