https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61725
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2014-07-07
CC| |jakub at gcc dot gnu.org
Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org
Target Milestone|--- |4.9.1
Summary|[4.9 Regression] |[4.9/4.10 Regression]
|__builtin_ffs(0) leads to |__builtin_ffs(0) leads to
|wrong code generation |wrong code generation
Ever confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This started with my r200731. I've been assuming and documentation agrees with
me that __builtin_ffs similarly to __builtin_{popcount,parity,clz,ctz} have
unsigned argument, but apparently builtins.def was defining __builtin_ffs with
signed argument, so the check for range that doesn't include zero I've added to
tree-vrp.c for ffs/popcount is only correct for popcount and not for ffs.