diff options
Diffstat (limited to 'gcc/cppexp.c')
-rw-r--r-- | gcc/cppexp.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/cppexp.c b/gcc/cppexp.c index 5690436..a3ef965 100644 --- a/gcc/cppexp.c +++ b/gcc/cppexp.c @@ -270,13 +270,18 @@ cpp_classify_number (pfile, token) return CPP_N_INVALID; } - /* Traditional C only accepted the 'L' suffix. */ - if (result != CPP_N_SMALL && result != CPP_N_MEDIUM - && CPP_WTRADITIONAL (pfile) - && ! cpp_sys_macro_p (pfile)) - cpp_error (pfile, DL_WARNING, - "traditional C rejects the \"%.*s\" suffix", - (int) (limit - str), str); + /* Traditional C only accepted the 'L' suffix. + Suppress warning about 'LL' with -Wno-long-long. */ + if (CPP_WTRADITIONAL (pfile) && ! cpp_sys_macro_p (pfile)) + { + int u_or_i = (result & (CPP_N_UNSIGNED|CPP_N_IMAGINARY)); + int large = (result & CPP_N_WIDTH) == CPP_N_LARGE; + + if (u_or_i || (large && CPP_OPTION (pfile, warn_long_long))) + cpp_error (pfile, DL_WARNING, + "traditional C rejects the \"%.*s\" suffix", + (int) (limit - str), str); + } if ((result & CPP_N_WIDTH) == CPP_N_LARGE && ! CPP_OPTION (pfile, c99) |