This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ICE in change_address at emit_rtl.c


On 23-Nov-2001, Neil Booth <neil@daikokuya.demon.co.uk> wrote:
> Gabriel Dos Reis wrote:-
> > Neil Booth <neil@daikokuya.demon.co.uk> writes:
> > 
> > | I've not been able to find a satisfactory fix; since I'm not a fan of
> > | error_mark_node-s I don't want to introduce yet more checks for them.
> > | I hate the error_mark_node stuff; it would be nice if it could go
> > | away.
> > 
> > What should be the alternative?
> 
> Generate something that is valid, even if it's not what the user
> specified.  e.g. if it's an invalid typedef, typedef it to int (or
> something more intelligent if possible) rather than error_mark_node.

But that will cause spurious flow-on errors when the
type is used in some way for which `int' is not valid.

The only way to avoid all such spurious flow-on errors is to have a type
(or expression, declaration, etc.) for which *all* operations are valid.

And if you have such a type (or expression, declaration, etc.), then
whatever you end up calling it, you will have reinvented something
very similar to the error_mark_node approach.

The main way in which it could usefully vary, IMHO, is that you might
want to have different nodes for error_mark_type, error_mark_expr,
error_mark_decl, etc.

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]