Baffling error message and code

Jeff Law law@redhat.com
Thu Mar 18 23:30:00 GMT 2010


On 03/18/10 11:53, Steve Teale wrote:
> As I've said before, I am trying to get the GDC implementation that
> worked with 4.3, working with 4.4.
>
> The function it is compiling is to my mind not very well written - kind
> of mixed up. But the error message is even more confusing:
>
> -c ../../../libphobos/std/stream.d
> In file included from<builtin>:2:
> ../../../libphobos/std/stream.d: In member function ‘vreadf’:
> ../../../libphobos/std/stream.d:692: internal compiler error: in
> insert_into_preds_of_block, at tree-ssa-pre.c:3114
>
> The offending code in tree-ssa-pre.c is:
>
>    FOR_EACH_EDGE (pred, ei, block->preds)
>      {
>        pre_expr ae = avail[pred->src->index];
>        gcc_assert (get_expr_type (ae) == type ||
>            useless_type_conversion_p (type, get_expr_type (ae)));
>
> If anyone has any understanding of what is happening here and what the
> assert is intended to prevent, your help would be most welcome.
>    
Looks like it's trying to catch cases where types do not match.    I'm 
pretty sure PRE isn't going to insert type conversions, so the types 
must match -- presumably the assert indicates that code elsewhere is 
supposed to ensure the types match and when the assert triggers that 
indicates a bug elsewhere in PRE.

jeff



More information about the Gcc-help mailing list