aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/doc/implement-c.texi8
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 58b789b..3405b1d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * doc/implement-c.texi (Integers Implementation): Make GCC's promises
+ about signed left shift stronger and clarify the cases when they're
+ broken.
+
2015-11-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Bernd Schmidt <bschmidt@redhat.com>
@@ -7682,6 +7688,9 @@
* fold-const.c (fold_binary_loc) : Move (-A) * (-B) -> A * B
to match.pd.
+* doc/implement-c.texi (Integers Implementation): Make GCC's promises
+about signed left shift stronger and clarify the cases when they're
+broken.
Move (a * (1 << b)) is (a << b) to match.pd.
Move convert (C1/X)*C2 into (C1*C2)/X to match.pd.
Move ~X & X, (X == 0) & X, and !X & X are zero to match.pd.
diff --git a/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi
index b8f8f29..7fa3fb4 100644
--- a/gcc/doc/implement-c.texi
+++ b/gcc/doc/implement-c.texi
@@ -266,9 +266,11 @@ both the sign and value bits, where the sign bit is considered
immediately above the highest-value value bit. Signed @samp{>>} acts
on negative numbers by sign extension.
-GCC does not use the latitude given in C99 and C11 only to treat certain
-aspects of signed @samp{<<} as undefined, but this is subject to
-change.
+As an extension to the C language, GCC does not use the latitude given in
+C99 and C11 only to treat certain aspects of signed @samp{<<} as undefined.
+However, @option{-fsanitize=shift} (and @option{-fsanitize=undefined}) will
+diagnose such cases. They are also diagnosed where constant
+expressions are required.
@item
@cite{The sign of the remainder on integer division (C90 6.3.5).}