This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/24536] New: [4.1 Regression] Register allocation to mmx asms broken


We fail to allocate an mmx register to class 'X' since the last couple of weeks
(20051015 worked).  Testcase:

typedef union {
    long long q;
    unsigned long long uq;
} __attribute__ ((aligned (8))) mmx_t;
static mmx_t mmx_0x8080s = (mmx_t) 0x8080808080808080LL;
void dv_mb411_right_YUY2_mmx(void)
{
    short *cr_frame;
    int row;
    for (row = 0; row < 8; row++)
    {
        __asm__ __volatile__ ("movq" " %0, %%" "mm1" : : "X" (*cr_frame));
        __asm__ __volatile__ ("paddb" " %0, %%" "mm3" : : "X" (mmx_0x8080s));
    }
}

where we produce with -O2:

.L2:
#APP
        movq %bx, %mm1
        paddb %edx, %mm3
#NO_APP

which of course makes the assembler barf.


-- 
           Summary: [4.1 Regression] Register allocation to mmx asms broken
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: critical
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org
GCC target triplet: i686-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24536


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]