This is the mail archive of the 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: [PATCH] Fix c++/23307, ICE on invalid

On Wed, 10 Aug 2005, Nathan Sidwell wrote:

> Richard Guenther wrote:
> > This fixes the ICE by changing an gcc_assert into returning
> > error_mark_node.  I seriously question the use of asserts
> > in paths where we might deal with erroneous input.
> The assert indicates that the program logic expected nothing odd there, even
> for incorrect source.  Have you satisfied yourself that the caller of
> cp_parser_temnplate_id has not screwed up.

I understand that - but it is usually very hard to convince yourself that
in any case you'll end up with correct state if you're in a path dealing
with errors.  Using assert in such places is asking for trouble ...

> I'm nervous of turning asserts into error checks, without understanding the
> context :)

... and returning error_mark_node instead cannot make things worse from
a user perspective.  It might at worst move the ICE to some other place.

And of course I didn't dig further than going up the callstack one or
two functions and seeing error_mark_node handled.  Somebody familiar 
with the C++ frontend / parser can verify where the logic went wrong,
though I doubt you can get the logic right for any sort of weird input ;)


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