[Bug target/85512] [8 Regression] gcc generating non-existing sshr with immh == 0

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Apr 24 11:19:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85512

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to ktkachov from comment #2)
> Indeed a SSHR by zero is not valid.
> One would hope that the optimisers would have eliminated the shift by zero

It can't be guaranteed.  The reason the __builtin_add_overflow_p is not
optimized into constant earlier is the UB in it, where it uses uninitialized
argument, so we don't fold it into constant at gimple nor during combine, but
later.
Given that this will happen rarely, we don't need to optimize it perfectly, it
is fine to force the shift count into a register, at least the constraints need
to be accurate though, I think it is fine if the predicates allow the 0, RA
should be able to cope with it hopefully.


More information about the Gcc-bugs mailing list