Ada broken on i686-linux (some more progress)
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Mon Sep 13 07:39:00 GMT 2004
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
like:
/* 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. */
TREE_STATIC (var_decl)
= public_flag || (global_bindings_p () ? !extern_flag : static_flag);
More information about the Gcc
mailing list