On Tue, Jul 08, 2014 at 03:24:52PM -0400, Jason Merrill wrote:
> I don't think we want to warn about e.g. 1-1, only about literal 0.
Well, at least literal 0 and '\0'. In any case, it seems both the C and C++
FEs fold the arguments too early, already during the parsing of the argument
list. In the C FE, there is original_code in the c_expr struct, so perhaps
I could somehow propagate it to the caller for the first few arguments
and test that original_code is INTEGER_CST in addition to integer_zerop
to check for literal 0.
But in the C++ FE there isn't something like that. Do you think we
shouldn't warn even if e.g. the last argument is a template parameter
that turns out to be 0, so warn only during parsing and check for literal
0 and not warn again during instantiation? Any suggestions how to find out
if it was literal 0 or something that folded to 0 in the C++ FE?
Jakub