Commit 9feb29df by Jakub Jelinek Committed by Jakub Jelinek

re PR c/54559 (, ICE in gimplify_expr, at gimplify.c:7592)

	PR c/54559
	* c-typeck.c (c_finish_return): Do convert to BOOLEAN_TYPE or
	COMPLEX_TYPE with in_late_binary_op set temporarily to true.

	* gcc.c-torture/compile/pr54559.c: New test.

From-SVN: r191270
parent 8bf4ee34
2012-09-13 Jakub Jelinek <jakub@redhat.com>
PR c/54559
* c-typeck.c (c_finish_return): Do convert to BOOLEAN_TYPE or
COMPLEX_TYPE with in_late_binary_op set temporarily to true.
2012-08-31 Jakub Jelinek <jakub@redhat.com>
PR c/54428
......
......@@ -8682,12 +8682,18 @@ c_finish_return (location_t loc, tree retval, tree origtype)
npc, NULL_TREE, NULL_TREE, 0);
tree res = DECL_RESULT (current_function_decl);
tree inner;
bool save;
current_function_returns_value = 1;
if (t == error_mark_node)
return NULL_TREE;
save = in_late_binary_op;
if (TREE_CODE (TREE_TYPE (res)) == BOOLEAN_TYPE
|| TREE_CODE (TREE_TYPE (res)) == COMPLEX_TYPE)
in_late_binary_op = true;
inner = t = convert (TREE_TYPE (res), t);
in_late_binary_op = save;
/* Strip any conversions, additions, and subtractions, and see if
we are returning the address of a local variable. Warn if so. */
......
2012-09-13 Jakub Jelinek <jakub@redhat.com>
PR c/54559
* gcc.c-torture/compile/pr54559.c: New test.
2012-09-13 Jason Merrill <jason@redhat.com>
PR c++/53839
......
/* PR c/54559 */
typedef double _Complex T;
T
foo (double x, double y)
{
return x + y * (T) (__extension__ 1.0iF);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment