[LLVMbugs] [Bug 10719] New: attempting to inline spill CRBITRC:%vreg

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Aug 22 13:14:03 PDT 2011


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

           Summary: attempting to inline spill CRBITRC:%vreg
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: FreeBSD
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: PowerPC
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: rdivacky at freebsd.org
                CC: llvmbugs at cs.uiuc.edu


I added this assert:


Index: PPCInstrInfo.cpp
===================================================================
--- PPCInstrInfo.cpp    (revision 138231)
+++ PPCInstrInfo.cpp    (working copy)
@@ -444,6 +444,7 @@
     else if (SrcReg == PPC::CR7LT || SrcReg == PPC::CR7GT ||
              SrcReg == PPC::CR7EQ || SrcReg == PPC::CR7UN)
       Reg = PPC::CR7;
+    assert(Reg != 0 && "not a physical register!");

     return StoreRegToStackSlot(MF, Reg, isKill, FrameIdx,
                                PPC::CRRCRegisterClass, NewMIs);

and the attached is crashing

selectOrSplit CRBITRC:%vreg130,9.456929e-04 = [2616d,4352d:0)  0 at 2616d
RS_Spill Cascade 0
Inline spilling CRBITRC:%vreg130,9.456929e-04 = [2616d,4352d:0)  0 at 2616d
>From original %vreg64,1.191038e-03 = [2208d,4352d:0)  0 at 2208d
Tracing value %vreg130:0 at 2616d
  copy of %vreg131:0 at 2208d
  hoist in BB#25: %vreg131:0 at 2208d
  def %vreg131:0 at 2208d  %vreg131<def> = CRSET; CRBITRC:%vreg131
Prefer to spill %vreg131:0 at 2208d
Merged spilled regs: SS#0 = [2616d,4352d:0)  0 at invalid
spillAroundUses %vreg130
        merged orig valno 0: SS#0 = [2208d,4352d:0)  0 at invalid
Checking redundant spills for 0 at 2208d in %vreg131,3.750000e-03 =
[2208d,2616d:0)  0 at 2208d
Merged to stack int: SS#0 = [2208d,4352d:0)  0 at invalid
Checking redundant spills for 0 at 2616d in %vreg130,9.456929e-04 =
[2616d,4352d:0)  0 at 2616d
Assertion failed: (Reg != 0 && "not a physical register!"), function
StoreRegToStackSlot, file PPCInstrInfo.cpp, line 447.

without the assert it will just crash later on during asm printing of the
instruction MFCRpseudo, but the real problem is that we're trying to spill a
CRBITRC:%vreg instead of a physical reg.

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