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