https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55095
--- Comment #12 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Author: mpolacek Date: Mon Jul 20 13:43:45 2015 New Revision: 225998 URL: https://gcc.gnu.org/viewcvs?rev=225998&root=gcc&view=rev Log: PR c++/55095 * c-common.c (c_fully_fold_internal): Warn about left shift overflows. Use EXPR_LOC_OR_LOC. (maybe_warn_shift_overflow): New function. * c-common.h (maybe_warn_shift_overflow): Declare. * c-opts.c (c_common_post_options): Set warn_shift_overflow. * c.opt (Wshift-overflow): New option. * c-typeck.c (digest_init): Pass OPT_Wpedantic to pedwarn_init. (build_binary_op): Warn about left shift overflows. * typeck.c (cp_build_binary_op): Warn about left shift overflows. * doc/invoke.texi: Document -Wshift-overflow and -Wshift-overflow=. * c-c++-common/Wshift-overflow-1.c: New test. * c-c++-common/Wshift-overflow-2.c: New test. * c-c++-common/Wshift-overflow-3.c: New test. * c-c++-common/Wshift-overflow-4.c: New test. * c-c++-common/Wshift-overflow-5.c: New test. * g++.dg/cpp1y/left-shift-1.C: New test. * gcc.dg/c90-left-shift-2.c: New test. * gcc.dg/c90-left-shift-3.c: New test. * gcc.dg/c99-left-shift-2.c: New test. * gcc.dg/c99-left-shift-3.c: New test. * gcc.dg/pr40501.c: Use -Wno-shift-overflow. * gcc.c-torture/execute/pr40386.c: Likewise. * gcc.dg/vect/pr33373.c: Likewise. * gcc.dg/vect/vect-shift-2-big-array.c: Likewise. * gcc.dg/vect/vect-shift-2.c: Likewise. Added: trunk/gcc/testsuite/c-c++-common/Wshift-overflow-1.c trunk/gcc/testsuite/c-c++-common/Wshift-overflow-2.c trunk/gcc/testsuite/c-c++-common/Wshift-overflow-3.c trunk/gcc/testsuite/c-c++-common/Wshift-overflow-4.c trunk/gcc/testsuite/c-c++-common/Wshift-overflow-5.c trunk/gcc/testsuite/g++.dg/cpp1y/left-shift-1.C trunk/gcc/testsuite/gcc.dg/c90-left-shift-2.c trunk/gcc/testsuite/gcc.dg/c90-left-shift-3.c trunk/gcc/testsuite/gcc.dg/c99-left-shift-2.c trunk/gcc/testsuite/gcc.dg/c99-left-shift-3.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/c-family/c-opts.c trunk/gcc/c-family/c.opt trunk/gcc/c/ChangeLog trunk/gcc/c/c-typeck.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.c-torture/execute/pr40386.c trunk/gcc/testsuite/gcc.dg/pr40501.c trunk/gcc/testsuite/gcc.dg/vect/pr33373.c trunk/gcc/testsuite/gcc.dg/vect/vect-shift-2-big-array.c trunk/gcc/testsuite/gcc.dg/vect/vect-shift-2.c