[Bug middle-end/47725] [x32] error: unable to find a register to spill in class DIREG
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Jul 28 17:07:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47725
Uros Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x32
Status|UNCONFIRMED |RESOLVED
URL|http://gcc.gnu.org/ml/gcc-p |
|atches/2011-02/msg00909.htm |
|l |
Resolution| |FIXED
Target Milestone|--- |4.7.0
--- Comment #22 from Uros Bizjak <ubizjak at gmail dot com> 2011-07-28 17:06:49 UTC ---
The testcase, referred in Comment 0 is:
struct _Unwind_Context
{
void *reg[17];
void *ra;
};
extern void bar (struct _Unwind_Context *);
void
__frame_state_for (void *pc_target)
{
struct _Unwind_Context context;
__builtin_memset (&context, 0, sizeof (struct _Unwind_Context));
context.ra = pc_target;
bar (&context);
}
Compiling with recent mainline works OK:
~/gcc-build/gcc/cc1 -O2 -fpic -mx32 pr47725.c
__frame_state_for:
.LFB0:
.cfi_startproc
subq $88, %rsp
.cfi_def_cfa_offset 96
movq %rdi, %rsi
xorl %eax, %eax
movq %rsp, %rdi
movl $9, %ecx
rep stosq
movq %rsp, %rdi
movl %esi, 68(%rsp)
call bar@PLT
addq $88, %rsp
.cfi_def_cfa_offset 8
ret
Fixed.
More information about the Gcc-bugs
mailing list