re PR middle-end/32920 (error: type mismatch in binary expression)

2007-07-28  Richard Guenther  <rguenther@suse.de>

	PR middle-end/32920
	* fold-const.c (fold_cond_expr_with_comparison): Convert
	operand zero of MIN/MAX_EXPR to correct type.

	* gcc.c-torture/compile/pr32920.c: New testcase.

From-SVN: r127021
This commit is contained in:
Richard Guenther 2007-07-28 16:26:44 +00:00 committed by Krister Walfridsson
parent 5fcb93f138
commit 539d5e79b5
4 changed files with 29 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2007-07-28 Richard Guenther <rguenther@suse.de>
PR middle-end/32920
* fold-const.c (fold_cond_expr_with_comparison): Convert
operand zero of MIN/MAX_EXPR to correct type.
2007-07-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* calls.c (special_function_p, setjmp_call_p, alloca_call_p,

View File

@ -4958,7 +4958,9 @@ fold_cond_expr_with_comparison (tree type, tree arg0, tree arg1, tree arg2)
build_int_cst (type, 1), 0),
OEP_ONLY_CONST))
return pedantic_non_lvalue (fold_build2 (MIN_EXPR,
type, arg1, arg2));
type,
fold_convert (type, arg1),
arg2));
break;
case LE_EXPR:
@ -4970,7 +4972,9 @@ fold_cond_expr_with_comparison (tree type, tree arg0, tree arg1, tree arg2)
build_int_cst (type, 1), 0),
OEP_ONLY_CONST))
return pedantic_non_lvalue (fold_build2 (MIN_EXPR,
type, arg1, arg2));
type,
fold_convert (type, arg1),
arg2));
break;
case GT_EXPR:
@ -4982,7 +4986,9 @@ fold_cond_expr_with_comparison (tree type, tree arg0, tree arg1, tree arg2)
build_int_cst (type, 1), 0),
OEP_ONLY_CONST))
return pedantic_non_lvalue (fold_build2 (MAX_EXPR,
type, arg1, arg2));
type,
fold_convert (type, arg1),
arg2));
break;
case GE_EXPR:
@ -4994,7 +5000,9 @@ fold_cond_expr_with_comparison (tree type, tree arg0, tree arg1, tree arg2)
build_int_cst (type, 1), 0),
OEP_ONLY_CONST))
return pedantic_non_lvalue (fold_build2 (MAX_EXPR,
type, arg1, arg2));
type,
fold_convert (type, arg1),
arg2));
break;
case NE_EXPR:
break;

View File

@ -1,3 +1,7 @@
2007-07-28 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/compile/pr32920.c: New testcase.
2007-07-28 Simon Martin <simartin@users.sourceforge.net>
PR c++/30917

View File

@ -0,0 +1,7 @@
int a;
void
foo(void)
{
char buf[10];
a = a < sizeof(buf) ? a : sizeof (buf);
}