On 08/12/2015 09:39 AM, Marek Polacek wrote:
This patch fixes a defect in -Wshift-overflow.  We should only warn
about left-shifting 1 into the sign bit when -Wshift-overflow=2.  But
this doesn't apply only for 1 << 31, but also for 2 << 30, etc.
In C++14, never warn about this.

Neither existing tests nor documentation require updating, I think.

Bootstrapped/regtested on x86_64-linux, ok for trunk?

2015-08-12  Marek Polacek  <pola...@redhat.com>

        PR c++/55095
        * c-common.c (maybe_warn_shift_overflow): Properly handle
        left-shifting 1 into the sign bit.

        * c-c++-common/Wshift-overflow-6.c: New test.
        * c-c++-common/Wshift-overflow-7.c: New test.
        * g++.dg/cpp1y/left-shift-2.C: New test.
I didn't realize C++14 fixed this bit of lameness. I'd read that it was under consideration when I was looking at Mikael's sext_hwi patch, but didn't follow up on the current status.

OK for the trunk.

jeff

Reply via email to