On 10 November 2015 at 17:33, Paolo Bonzini <pbonz...@redhat.com> wrote: > > > On 10/11/2015 16:57, Stefan Hajnoczi wrote: >> clang 3.7.0 on x86_64 warns about the following: >> >> disas/arm.c:1782:17: warning: shifting a negative signed value is >> undefined [-Wshift-negative-value] >> imm |= (-1 << 7); >> ~~ ^ >> >> Note that this patch preserves the tab indent in this source file >> because the surrounding code still uses tabs. >> >> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > > I would like to know a case where (except with ubsan) clang actually > uses the optimization. > > If not, this is just error message theatre (which is not news for clang) > and shouldn't have been part of -Wall.
It could be they're attempting to warn us now about the possibility that in a future version of clang they will start using this UB to optimize with. http://stackoverflow.com/questions/22883790/left-shift-of-negative-values reports that Intel's ICC will use this in dead-code-elimination optimization. One day clang might do that too. thanks -- PMM