<< Back to previous view

[PCC-31] XASM doesn't handle register spills Created: 14/Feb/09  Updated: 01/May/14

Status: Closed
Project: pcc
Component/s: C frontend
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Gregory McGarry Assignee: Anders Magnusson
Resolution: Cannot Reproduce Votes: 0
Environment: OS X/i386 10.5


 Description   
The following code fragment fails to compile with -O (-xtemps):

typedef unsigned char uint8_t;

static void
deinterlace_line(uint8_t * dst,
    const uint8_t * lum_m4, const uint8_t * lum_m3,
    const uint8_t * lum_m2, const uint8_t * lum_m1,
    const uint8_t * lum,
    int size)
{
        for (; size > 3; size -= 4) {
                __asm__ volatile("movd" " %%" "mm1" ", %0":"=m"(dst[0]):);
                lum_m4 += 4;
                lum_m3 += 4;
                lum_m2 += 4;
                lum_m1 += 4;
                lum += 4;
                dst += 4;
        }

}



 Comments   
Comment by Anders Magnusson [ 16/Jun/10 01:22 PM ]
An UMUL reference through a register for memory arguments get spilled, and then it cannot be referenced.
Must investigate further.
Comment by Anders Magnusson [ 01/May/14 03:19 PM ]
Seems to have been fixed in the time being.
Generated at Tue Sep 23 02:21:55 CEST 2014 using JIRA Enterprise Edition, Version: 3.13.1-#333.