Ada broken on i686-linux (some more progress)

Laurent GUERBY laurent@guerby.net
Mon Sep 13 21:48:00 GMT 2004


With HEAD after Arnaud commit and Zdenek patch, I now get on x86:

../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-regexp.adb -o g-regexp.o
g-regexp.adb: In function `GNAT.REGEXP.COMPILE.CREATE_SECONDARY_TABLE':
g-regexp.adb:1087: error: Definition in block 5 does not dominate use in block 110
for SSA_NAME: D.1826_717
in statement:
ivtmp.864D.4683_228 = &(*table.51D.1822_144)[J99b.52D.1827_3]{lb: 1 sz: D.1826_717 * 4}[0];

+===========================GNAT BUG DETECTED==============================+
| 4.0.0 20040913 (experimental) (i686-pc-linux-gnu) verify_ssa failed.     |
| Error detected at g-regexp.adb:1389:1                                    |


and on x86_64:

cd rts; ../../xgcc -B../../ -shared -fPIC \
        -o libgnat-3.5.so \
...

-Wl,-soname,libgnat-3.5.so \
         -lm
s-fatlfl.o(.bss+0x0): In function `system.fat_lflt.fat_long_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
s-fatllf.o(.bss+0x0): In function `system.fat_llf.fat_long_long_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:538: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
s-fatsfl.o(.bss+0x0): In function `system.fat_sflt.fat_short_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
collect2: ld returned 1 exit status
make[5]: *** [gnatlib-shared-default] Error 1

Laurent

On Mon, 2004-09-13 at 05:17, Richard Kenner wrote:
>     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