re PR middle-end/35265 (__builtin_popcount expansion bug)

2008-02-20  Richard Guenther  <rguenther@suse.de>

	PR middle-end/35265
	* builtins.c (validate_arg): If we want an INTEGER_TYPE,
	be happy with INTEGRAL_TYPE_P.

	* gcc.dg/builtins-66.c: New testcase.

From-SVN: r132485
This commit is contained in:
Richard Guenther 2008-02-20 17:25:52 +00:00 committed by Richard Biener
parent a99c05392b
commit 4cd8e76f1d
4 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2008-02-20 Richard Guenther <rguenther@suse.de>
PR middle-end/35265
* builtins.c (validate_arg): If we want an INTEGER_TYPE,
be happy with INTEGRAL_TYPE_P.
2008-02-20 Richard Guenther <rguenther@suse.de>
* fold-const.c (split_tree): Associate floatig-point expressions

View File

@ -5192,6 +5192,7 @@ expand_builtin_fabs (tree exp, rtx target, rtx subtarget)
return NULL_RTX;
arg = CALL_EXPR_ARG (exp, 0);
CALL_EXPR_ARG (exp, 0) = arg = builtin_save_expr (arg);
mode = TYPE_MODE (TREE_TYPE (arg));
op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL);
return expand_abs (mode, op0, target, 0, safe_from_p (target, arg, 1));
@ -10749,6 +10750,8 @@ validate_arg (const_tree arg, enum tree_code code)
return false;
else if (code == POINTER_TYPE)
return POINTER_TYPE_P (TREE_TYPE (arg));
else if (code == INTEGER_TYPE)
return INTEGRAL_TYPE_P (TREE_TYPE (arg));
return code == TREE_CODE (TREE_TYPE (arg));
}

View File

@ -1,3 +1,8 @@
2008-02-20 Richard Guenther <rguenther@suse.de>
PR middle-end/35265
* gcc.dg/builtins-66.c: New testcase.
2008-02-20 Richard Guenther <rguenther@suse.de>
* gcc.dg/fold-reassoc-1.c: New testcase.

View File

@ -0,0 +1,11 @@
/* { dg-do compile } */
enum { E0 = 0, E1 = 1, E2 = 2 } e;
int
foo (void)
{
return __builtin_popcount ((int) e);
}
/* { dg-final { scan-assembler-not "__builtin_popcount" } } */