This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]