Ada bootstrap failure on x86

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Thu Jul 22 18:25:00 GMT 2004


    I still got a bootstrap failure but at a different place:

    stage2/xgcc -Bstage2/ -B/home/guerby/work/gcc/install/install-20040721T203639/i686-pc-linux-gnu/bin/ -c -g -O2      -gnatpg -gnata -I- -I. -Iada -I/home/guerby/work/gcc/version-head/gcc/ada /home/guerby/work/gcc/version-head/gcc/ada/erroutc.adb -o ada/erroutc.o
    +===========================GNAT BUG DETECTED==============================+
    | 3.5.0 20040721 (experimental) (i686-pc-linux-gnu) Storage_Error heap exhausted|
    | Error detected at erroutc.adb:996:8                                      |

I don't get that one.  Can you take a quick look and see if you can find
the miscompilation?

    I noticed there's another set_mem_alias_set (targ, 0) with an identical
    comment at line 355 of expr.c

That line number looks like a typo, but when I search I see three occurrences
of the code.  In one of them the setting of aliase set zero is conditional
on flag_optimize_sibling_calls, but not that other two.  That seems wrong.

But, even though I probably wrote that code, it seems fundamentally wrong
to use set_mem_attributes on stores into the outgoing argument area since
the same location is going to be used for arguments of different types.

Can you try with all three of those calls gone?

I think the right approach might well be to make an alias set just for
the outgoing args and always use that alias set without /u.

I'm concerned about the sibcall comment, though, but don't understand it
or know if it still applies with the tree optimizer.  But if the goal were
really to avoid such conflicts, none of them can be /u.  However,
incoming args can be, so do we have another bug here?



More information about the Gcc-patches mailing list