Ping, Ping: [Patch, fortran] PR27411 - crashes in sra_walk_expr and emit_move_insn
Paul Thomas
paulthomas2@wanadoo.fr
Sat May 13 21:35:00 GMT 2006
Roger,
>This is not an objection, I'm just curious. Could you explain the
>sequence of events whereby adding parenthesis around an expression
>in the source code avoids an ICE in emit_move_insn? I don't know
>enough fortran to understand "outputs%signal_number", or how this
>would cause the scalarizer to generate mismatched types that can
>survive thoughout tree-ssa, only to crash at RTL expansion time.
>
>
I am surprised that it survives through tree_ssa. Take a look at
Andrew's comment in the PR; it is spot on. gfortran is not following the
references far enough in translating the index array. In consequence, a
structure is taken as the index array - look at the code in the PR, or
better still, dump it yourself. After this, put some brackets around the
index array , which has the effect of creating an integer temporary and
this is visible in the code. Presumably, emit_move_insn is the bad thing
that happens when you try to use a structure as an index array?
>Not fully understanding the issues, I can't tell whether it would
>be helpful to add additional sanity checking to the gimplifier, or
>elsewhere in the middle-end, to help catch this earlier.
>
>
As I remarked when I submitted, this patch might not be considered to be
sufficient and that one should fix this in the middle-end. One the
otherhand, I have been contemplating an internal_parentheses operator
that makes temporaries for the scalarizer, in order to make gfortran a
bit more maintainable. This fix would fall naturally into such a framework.
I hope that this helps
Paul
More information about the Gcc-patches
mailing list