This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PR middle-end/44485 (error_mark instatement)
Hi,
On Sat, 12 Jun 2010, Richard Guenther wrote:
> > after function is found noreturn, we have to remove its return value.
> > ÂUse of the return value remains in the caller function body until
> > next removal of unreachable code. ÂFor this reason I added code
> > replacing SSA_NAME with error_mark.
> >
> > This unfortunately triggers ICE when fixup_cfg decide to update on of
> > the statements (this happens when the other statement is also call).
> >
> > THis patch just modify fixup_noreturn_call to remove those basic
> > blocks proactively. It also seems to fix the Ada problem with the same
> > symptom.
I think I have a better idea below.
> > + Â Â Â Â bitmap_head blocks;
> > + Â Â Â Â bitmap_initialize (&blocks, &bitmap_default_obstack);
>
> I know you like to replace all bitmaps by bitmap_head, but in this
> case please use a bitmap and the usual BITMAP_ALLOC/FREE.
>
> Ok with that change.
Actually I think it would be best (if the idea works) to replace the
defining statement of that SSA name with a gimple_nop (and take it out of
any BB), so that it becomes a normal valid use of an uninitialized SSA
name, without going over any of its uses or having to adjust them, or
allocating/freeing this bitmap.
Ciao,
Michael.