aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cppexp.c')
-rw-r--r--gcc/cppexp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index b3a7ce6..44ee26b 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -377,9 +377,11 @@ cpp_interpret_integer (pfile, token, type)
"integer constant is too large for its type");
/* If too big to be signed, consider it unsigned. Only warn for
decimal numbers. Traditional numbers were always signed (but
- we still honour an explicit U suffix). */
+ we still honour an explicit U suffix); but we only have
+ traditional semantics in directives. */
else if (!result.unsignedp
- && !CPP_OPTION (pfile, traditional)
+ && !(CPP_OPTION (pfile, traditional)
+ && pfile->state.in_directive)
&& !num_positive (result, precision))
{
if (base == 10)