This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/47725] [x32] error: unable to find a register to spill in class DIREG
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 28 Jul 2011 17:07:11 +0000
- Subject: [Bug middle-end/47725] [x32] error: unable to find a register to spill in class DIREG
- Auto-submitted: auto-generated
- References: <bug-47725-4@http.gcc.gnu.org/bugzilla/>
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.