]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR target/29776 (result of ffs/clz/ctz/popcount/parity are already sign-extended)
authorJakub Jelinek <jakub@redhat.com>
Sat, 6 Jul 2013 09:34:17 +0000 (11:34 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 6 Jul 2013 09:34:17 +0000 (11:34 +0200)
commit1f6eac9041e87e273c2b955a309ed44364f41544
tree5c06ed10d38755e166140f77dd83928e972b3462
parent5504e5d864f7b9c83727669847396c639abdf77b
re PR target/29776 (result of ffs/clz/ctz/popcount/parity are already sign-extended)

PR target/29776
* fold-const.c (tree_call_nonnegative_warnv_p): Return true
for BUILT_IN_C{LZ,LRSB}*.
* tree.h (CASE_INT_FN): Add FN##IMAX case.
* tree-vrp.c (extract_range_basic): Handle
BUILT_IN_{FFS,PARITY,POPCOUNT,C{LZ,TZ,LRSB}}*.  For
BUILT_IN_CONSTANT_P if argument isn't (D) of PARM_DECL,
fall thru to code calling set_value*.
* builtins.c (expand_builtin): Remove *IMAX cases.
(fold_builtin_bitop): For BUILT_IN_CLRSB* return NULL_TREE
if width is bigger than 2*HWI.

* libgcc2.c (__floattisf): Avoid undefined signed overflow.

* gcc.dg/tree-ssa/vrp89.c: New test.

From-SVN: r200731
gcc/ChangeLog
gcc/builtins.c
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/vrp89.c [new file with mode: 0644]
gcc/tree-vrp.c
gcc/tree.h
libgcc/ChangeLog
libgcc/libgcc2.c