public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* target/10282: ICE: unable to find a register to spill in class `Q_REGS'
@ 2003-03-31 23:36 gabor
0 siblings, 0 replies; only message in thread
From: gabor @ 2003-03-31 23:36 UTC (permalink / raw)
To: gcc-gnats
>Number: 10282
>Category: target
>Synopsis: ICE: unable to find a register to spill in class `Q_REGS'
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Mon Mar 31 23:26:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Gabor Greif
>Release: gcc (GCC) 3.4 20030325 (experimental)
>Organization:
>Environment:
Linux cantor 2.2.20 #1 Sat Apr 20 11:45:28 EST 2002 i686 unknown
>Description:
compiling attachment this way:
gcc -I. -O2 -fomit-frame-pointer -x c -fno-strict-aliasing bug2.c
I get:
bug2.c: In function `formatZformatZbuf_format_integer_METH_INT_next_digit':
bug2.c:248: error: unable to find a register to spill in class `Q_REGS'
bug2.c:248: error: this is the insn:
(insn:HI 294 427 296 10 0x4013e3c8 (set (mem:QI (plus:SI (plus:SI (subreg:SI (reg/v:DI 89 [ L_value_6 ]) 0)
(subreg:SI (reg/v:DI 88 [ L_value_5 ]) 4))
(const_int 16 [0x10])) [0 S1 A8])
(subreg:QI (reg/v:SI 5 edi [orig:84 L_PCTelement ] [84]) 0)) 48 {*movqi_1} (nil)
(expr_list:REG_DEAD (reg/v:SI 5 edi [orig:84 L_PCTelement ] [84])
(expr_list:REG_DEAD (reg/v:DI 89 [ L_value_6 ])
(expr_list:REG_DEAD (reg/v:DI 88 [ L_value_5 ])
(nil)))))
bug2.c:248: internal compiler error: in spill_failure, at reload1.c:1917
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
compile attachment (sorry for the size)
May be related to PR#9929 ?
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="bug2.c"
Content-Disposition: inline; filename="bug2.c"
typedef struct heapobj *heapptr_t;
typedef struct descriptor {
heapptr_t heapptr;
union {
long l;
float f;
void *ptr;
} dataword;
} descriptor_t;
typedef descriptor_t *(*entry_t)();
extern heapptr_t allocate(int bytes);
extern descriptor_t *allocate_stack(void);
extern void destroy(void* ptr);
extern heapptr_t make_trampoline(void *func, descriptor_t closure,
int nkeys, char *signature);
extern descriptor_t *catch(descriptor_t *(*fn)(descriptor_t *sp, void *state,
heapptr_t thunk),
descriptor_t *sp, heapptr_t func);
extern void throw(void *state, descriptor_t *stack_top);
extern descriptor_t *pad_cluster(descriptor_t *start, descriptor_t *end,
int min_values);
extern descriptor_t *values_sequence(descriptor_t *sp, heapptr_t vector);
extern heapptr_t make_double_float(double value);
extern double double_float_value(heapptr_t df);
extern heapptr_t make_extended_float(long double value);
extern long double extended_float_value(heapptr_t xf);
extern heapptr_t make_double_integer(long long value);
extern long long double_integer_value(heapptr_t xf);
extern heapptr_t initial_symbols;
extern void not_reached(void);
extern void no_core_dumps(void);
extern heapptr_t dylanZdylan_visceraZas_METH_7(descriptor_t *orig_sp, heapptr_t A0, long A1, heapp\
tr_t A2);
extern struct heapobj dylanZdylan_visceraZCLS_extended_integer_HEAP;
extern struct heapobj dylanZliteral_ROOT_4;
extern struct mv_result_0 dylanZdylan_visceraZfloorSLASH_METH(descriptor_t *orig_sp, heapptr_t A0,\
heapptr_t A1, heapptr_t A2);
extern struct heapobj dylanZliteral_ROOT_46;
extern long dylanZdylan_visceraZas_METH_8(descriptor_t *orig_sp, heapptr_t A0, heapptr_t A1, heapp\
tr_t A2);
struct mv_result_0 {
heapptr_t R0;
heapptr_t R1;
};
extern descriptor_t formatZliteral_2;
extern struct heapobj dylanZdylan_visceraZCLS_integer_HEAP;
extern descriptor_t formatZformatZCdigits;
extern struct heapobj dylanZliteral_ROOT_61;
extern struct heapobj formatZliteral_ROOT_4;
extern struct heapobj dylanZstr_ROOT_7;
void formatZformatZbuf_format_integer_METH_INT_next_digit(descriptor_t *orig_sp, heapptr_t A_bd , \
long A_radix , heapptr_t A_buf , heapptr_t A_next , heapptr_t A_size , heapptr_t A_arg )
{
descriptor_t *cluster_0_top;
heapptr_t L_arg1;
struct mv_result_0 L_temp;
heapptr_t L_quo;
heapptr_t L_rem;
long L_bignum_digit;
int L_res;
descriptor_t L_value;
long L_typed;
descriptor_t L_value_2;
descriptor_t L_value_3;
heapptr_t L_buffer;
descriptor_t L_temp_2;
long L_next_ele;
descriptor_t L_temp_3;
long L_limit;
descriptor_t L_temp_4;
long L_arg1_2;
int L_condition;
long L_PCTelement;
long L_value_4;
int L_condition_2;
long L_temp_5;
descriptor_t L_value_5;
descriptor_t L_value_6;
int L_condition_3;
descriptor_t L_value_7;
descriptor_t L_temp_6;
descriptor_t L_temp_7;
descriptor_t L_temp_8;
L_arg1 = dylanZdylan_visceraZas_METH_7(orig_sp, &dylanZdylan_visceraZCLS_extended_integer_HEAP\
, A_radix, &dylanZliteral_ROOT_4);
L_temp = dylanZdylan_visceraZfloorSLASH_METH(orig_sp, A_arg, L_arg1, &dylanZliteral_ROOT_46);
L_quo = L_temp.R0;
L_rem = L_temp.R1;
if (((*(long *)((char *)L_quo + 4)) == 1)) {
L_bignum_digit = (*(unsigned short *)((char *)L_quo + 8 + 0 * sizeof(unsigned short)));
L_res = (L_bignum_digit == 0);
}
else {
L_res = 0;
}
if (L_res) {
}
else {
formatZformatZbuf_format_integer_METH_INT_next_digit(orig_sp, A_bd, A_radix, A_buf, A_next\
, A_size, L_quo);
}
L_value = (*(descriptor_t *)((char *)A_next + 4));
L_typed = L_value.dataword.l;
L_value_2 = (*(descriptor_t *)((char *)A_size + 4));
if ((L_value_2.dataword.l == L_typed)) {
L_value_3 = (*(descriptor_t *)((char *)A_next + 4));
formatZformatZget_next_output_buffer_FUN(orig_sp, A_bd, L_value_3.dataword.l);
L_buffer = (*(heapptr_t *)((char *)A_bd + 8));
L_temp_2.heapptr = L_buffer;
L_temp_2.dataword.l = 0;
(*(descriptor_t *)((char *)A_buf + 4)) = L_temp_2;
L_next_ele = (*(long *)((char *)A_bd + 12));
L_temp_3.heapptr = formatZliteral_2.heapptr;
L_temp_3.dataword.l = L_next_ele;
(*(descriptor_t *)((char *)A_next + 4)) = L_temp_3;
L_limit = (*(long *)((char *)A_bd + 16));
L_temp_4.heapptr = formatZliteral_2.heapptr;
L_temp_4.dataword.l = L_limit;
(*(descriptor_t *)((char *)A_size + 4)) = L_temp_4;
}
L_arg1_2 = dylanZdylan_visceraZas_METH_8(orig_sp, &dylanZdylan_visceraZCLS_integer_HEAP, L_rem\
, &dylanZliteral_ROOT_4);
if ((L_arg1_2 < 0)) {
L_condition = 0;
}
else {
L_condition = (L_arg1_2 < (*(long *)((char *)formatZformatZCdigits.heapptr + 4)));
}
if (L_condition) {
L_PCTelement = (*(unsigned char *)((char *)formatZformatZCdigits.heapptr + 8 + L_arg1_2 * \
sizeof(unsigned char)));
L_value_4 = L_PCTelement;
L_condition_2 = dylanZdylan_visceraZPCTinstanceQUERY_METH_8(orig_sp, L_value_4, &dylanZlit\
eral_ROOT_61, &formatZliteral_ROOT_4);
if (L_condition_2) {
L_temp_5 = L_value_4;
L_value_5 = (*(descriptor_t *)((char *)A_next + 4));
L_value_6 = (*(descriptor_t *)((char *)A_buf + 4));
if ((L_value_5.dataword.l < 0)) {
L_condition_3 = 0;
}
else {
L_condition_3 = (L_value_5.dataword.l < (*(long *)((char *)L_value_6.heapptr + 12)\
));
}
if (L_condition_3) {
(*(unsigned char *)((char *)L_value_6.heapptr + 16 + L_value_5.dataword.l * sizeof\
(unsigned char))) = L_temp_5;
L_value_7 = (*(descriptor_t *)((char *)A_next + 4));
L_temp_6.heapptr = formatZliteral_2.heapptr;
L_temp_6.dataword.l = (L_value_7.dataword.l + 1);
(*(descriptor_t *)((char *)A_next + 4)) = L_temp_6;
return;
}
else {
dylanZdylan_visceraZelement_error_FUN(orig_sp, L_value_6, L_value_5.dataword.l);
not_reached();
}
}
else {
L_temp_7.heapptr = formatZliteral_2.heapptr;
L_temp_7.dataword.l = L_value_4;
L_temp_8.heapptr = &dylanZstr_ROOT_7;
L_temp_8.dataword.l = 0;
dylanZdylan_visceraZtype_error_with_location_FUN(orig_sp, L_temp_7, &dylanZliteral_ROO\
T_61, L_temp_8);
not_reached();
}
}
else {
dylanZdylan_visceraZelement_error_FUN(orig_sp, formatZformatZCdigits, L_arg1_2);
not_reached();
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-03-31 23:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-31 23:36 target/10282: ICE: unable to find a register to spill in class `Q_REGS' gabor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).