This is the mail archive of the
mailing list for the GCC project.
Re: Ada broken on i686-linux (some more progress)
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: laurent at guerby dot net
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 12 Sep 04 23:17:44 EDT
- Subject: Re: Ada broken on i686-linux (some more progress)
Thanks for looking into this, I confirm that with HEAD plus your patch
below stage2 completes, then it ICEs later while building the RTS
on some code which doesn't look loop-related.
Correct, it's not.
../../xgcc -B../../ -c -g -O2 -fPIC -W -Wall -gnatpg g-exctra.adb -o g-exctra.o
g-exctra.adb:69: error: Found a virtual definition for a GIMPLE register
while verifying SSA_NAME decorator_traceback_31 in statement
# gnat__exception_traces__current_decoratorD.447_26 = V_MAY_DEF <gnat__exception_traces__current_decoratorD.447_15>;
# D.462_30 = V_MAY_DEF <D.462_20>;
# decorator_tracebackD.454_31 = V_MAY_DEF <decorator_tracebackD.454_14>;
# D.464_27 = V_MAY_DEF <D.464_25>;
# VUSE <D.461_24>;
D.464 = gnat__exception_traces__current_decorator.1_16 (D.461);
I can't remember anymore exactly what's fixed by what, but I think this is
fixed by a change to utils.c that Arno has but was waiting for other things
to be fixed. In create_var_decl.c, the setting of TREE_STATIC should look
/* If it's public and not external, always allocate storage for it.
At the global binding level we need to allocate static storage for the
variable if and only if it's not external. If we are not at the top level
we allocate automatic storage unless requested not to. */
= public_flag || (global_bindings_p () ? !extern_flag : static_flag);