From a37a22da2d9304489f6e4b91d0a357c25e0a0a79 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 26 Nov 2015 10:16:56 +0000 Subject: [PATCH] implement-c.texi (Integers Implementation): Make GCC's promises about signed left shift stronger and clarify the cases when... 2015-11-26 Paolo Bonzini * doc/implement-c.texi (Integers Implementation): Make GCC's promises about signed left shift stronger and clarify the cases when they're broken. From-SVN: r230931 --- gcc/ChangeLog | 9 +++++++++ gcc/doc/implement-c.texi | 8 +++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58b789b81d9..3405b1d4538 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-11-26 Paolo Bonzini + + * 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 Bernd Schmidt @@ -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 b8f8f29b54d..7fa3fb4087f 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).} -- 2.30.2