This is the mail archive of the
mailing list for the GCC project.
Re: PATCH RFA: C++ frontend: Don't warn about shifts which will not be run
"Joseph S. Myers" <firstname.lastname@example.org> writes:
> On Fri, 12 Jun 2009, Ian Lance Taylor wrote:
>> -/* Nonzero means the expression being parsed will never be evaluated.
>> - This is a count, since unevaluated expressions can nest. */
>> +/* Nonzero means the expression being parsed will never be
>> + evaluated. */
> Pre-existing condition, but this is not accurate. skip_evaluation is a
> *heuristic* to avoid spurious warnings; it's set inside sizeof even though
> we don't know until after the whole expression/type inside sizeof has been
> parsed whether it's actually sizeof(VLA) which is evaluated.
> I'm not convinced the distinction you are making here between
> unexecuted/unevaluated is a very well-defined one for C, although such
> concepts do appear in the standard to some extent (6.9 considers only
> expressions inside sizeof-non-VLA while 6.6#3 has a less precisely defined
> "not evaluated" for constant expressions that includes at least the
> example 2 || 1 / 0). The implementations of these two distinct concepts
> in GCC are quite complicated, and separate from the heuristic
Thanks for the comments but I'm not clear on what the recommendation is.
Are you saying that my patch should be modified? Or are you saying that
I should restrict the change to the C++ frontend? Or are you saying
What I'm trying to do here is fundamentally a near-trivial modification
to the C++ frontend. I'd like to do this in the simplest possible