Issue Details (XML | Word | Printable)

Key: PCC-31
Type: Bug Bug
Status: Closed Closed
Resolution: Cannot Reproduce
Priority: Major Major
Assignee: Anders Magnusson
Reporter: Gregory McGarry
Votes: 0
Watchers: 0

If you were logged in you would be able to see more operations.

XASM doesn't handle register spills

Created: 14/Feb/09 04:54 AM   Updated: 01/May/14 03:19 PM
Component/s: C frontend
Affects Version/s: None
Fix Version/s: None

Environment: OS X/i386 10.5

 Description  « Hide
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;


 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Anders Magnusson added a comment - 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.

Anders Magnusson added a comment - 01/May/14 03:19 PM
Seems to have been fixed in the time being.