This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Ada bootstrap failure due to loop optimization and builtin_stack_alloc
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 29 Jul 2004 14:15:22 +0200
- Subject: Re: Ada bootstrap failure due to loop optimization and builtin_stack_alloc
- References: <10407290221.AA06322@vlsi1.ultra.nyu.edu>
Hello,
> I found out what's going on. I tried reproducing it in C, but failed.
> It fails compiling the back_end.adb file in function Scan_Compiler_Arguments.
>
> You can see the problem by looking at argv.103 between t46.loop and t48.lim.
>
> Inside the loop, we have:
>
> __builtin_stack_alloc (&argv, iftmp.293_316);
>
> [ ... deleted ... ]
>
> if (T.101_186) goto <L53>; else goto <L56>;
>
> <L53>:;
> argv.103_273 = (character[...] *)&argv;
>
> The former actually *changes* what &argv returns. But the loop analyzer
> doesn't know that and views the last statement above as a loop invariant and
> moves it out of the loop. That's what's causing the SIGSEGV.
this sounds weird. What are the virtual operands on
__builtin_stack_alloc and the assignment statements?
Zdenek