Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    1f6eac90
    re PR target/29776 (result of ffs/clz/ctz/popcount/parity are already sign-extended) · 1f6eac90
    Jakub Jelinek authored
    	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
    1f6eac90
    History
    re PR target/29776 (result of ffs/clz/ctz/popcount/parity are already sign-extended)
    Jakub Jelinek authored
    	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