Hi,
Bootstrap with the reload-branch dies on ia64 in stage0 while
building unwind-ia64.c:
./xgcc -B./ -B/usr/local/ia64-unknown-linux-gnu/bin/ -isystem
/usr/local/ia64-unknown-linux-gnu/include -isystem
/usr/local/ia64-unknown-linux-gnu/sys-include -L/abuild/stevenb/build/gcc/../ld
-O2 -DIN_GCC -DUSE_LIBUNWIND_EXCEPTIONS -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem
./include -fPIC -DUSE_GAS_SYMVER -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../reload-branch/gcc
-I../../reload-branch/gcc/. -I../../reload-branch/gcc/../include
-I../../reload-branch/gcc/../libcpp/include -fexceptions -fvisibility=hidden
-DHIDE_EXPORTS -c ../../reload-branch/gcc/config/ia64/unwind-ia64.c -o
libgcc/./unwind-ia64.o
../../reload-branch/gcc/config/ia64/unwind-ia64.c: In function
'alloc_reg_state':
../../reload-branch/gcc/config/ia64/unwind-ia64.c:312: warning: pointer targets
in passing argument 1 of 'atomic_alloc' differ in signedness
../../reload-branch/gcc/config/ia64/unwind-ia64.c: In function 'free_reg_state':
../../reload-branch/gcc/config/ia64/unwind-ia64.c:328: warning: pointer targets
in passing argument 1 of 'atomic_free' differ in signedness
../../reload-branch/gcc/config/ia64/unwind-ia64.c: In function
'alloc_label_state':
../../reload-branch/gcc/config/ia64/unwind-ia64.c:345: warning: pointer targets
in passing argument 1 of 'atomic_alloc' differ in signedness
../../reload-branch/gcc/config/ia64/unwind-ia64.c: In function
'free_label_state':
../../reload-branch/gcc/config/ia64/unwind-ia64.c:361: warning: pointer targets
in passing argument 1 of 'atomic_free' differ in signedness
../../reload-branch/gcc/unwind.inc: In function '_Unwind_Backtrace':
../../reload-branch/gcc/unwind.inc:313: error: Attempt to delete
prologue/epilogue insn:
(insn/f 137 136 138 0 ../../reload-branch/gcc/unwind.inc:285 (set (reg:DI 33
r35)
(reg:DI 320 b0)) -1 (nil)
(nil))
../../reload-branch/gcc/unwind.inc:313: internal compiler error: in
propagate_one_insn, at flow.c:1689
Please submit a full bug report,
with preprocessed source if appropriate.
I've reduced the test case and attached it. I haven't looked into
this any further (I understand neither reload nor ia64 ;-), but if
it can't be reproduced on a cross, I can ask Andreas Schwab to look
at it a bit more...
Gr.
Steven
typedef enum
{
_URC_NO_REASON = 0,
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
_URC_FATAL_PHASE2_ERROR = 2,
_URC_FATAL_PHASE1_ERROR = 3,
_URC_NORMAL_STOP = 4,
_URC_END_OF_STACK = 5,
_URC_HANDLER_FOUND = 6,
_URC_INSTALL_CONTEXT = 7,
_URC_CONTINUE_UNWIND = 8
} _Unwind_Reason_Code;
struct _Unwind_Context { int i; };
typedef struct _Unwind_FrameState_d { int i; } _Unwind_FrameState;
typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
(struct _Unwind_Context *, void *);
extern void uw_update_context (struct _Unwind_Context *, _Unwind_FrameState *);
extern void uw_init_context_1 (struct _Unwind_Context *, void *);
extern _Unwind_Reason_Code uw_frame_state_for (struct _Unwind_Context *,
_Unwind_FrameState *);
_Unwind_Reason_Code
_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument)
{
struct _Unwind_Context context;
_Unwind_Reason_Code code;
do { __builtin_unwind_init(); uw_init_context_1 (&context, __builtin_ia64_bsp
()); } while (0);
while (1)
{
_Unwind_FrameState fs;
code = uw_frame_state_for (&context, &fs);
if (code != _URC_NO_REASON && code != _URC_END_OF_STACK)
return _URC_FATAL_PHASE1_ERROR;
if ((*trace) (&context, trace_argument) != _URC_NO_REASON)
return _URC_FATAL_PHASE1_ERROR;
if (code == _URC_END_OF_STACK)
break;
uw_update_context (&context, &fs);
}
return code;
}