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