Commit e7399b54 by Richard Biener Committed by Richard Biener

re PR ipa/92409 (r277920 causes ICE in gcc.dg/cast-function-1.c)

2019-11-08  Richard Biener  <rguenther@suse.de>

	PR ipa/92409
	* tree-inline.c (declare_return_variable): Properly handle
	type mismatches for the return slot.

From-SVN: r277972
parent 03a05fd3
2019-11-08 Richard Biener <rguenther@suse.de>
PR ipa/92409
* tree-inline.c (declare_return_variable): Properly handle
type mismatches for the return slot.
2019-11-08 Eric Botcazou <ebotcazou@adacore.com>
PR target/92095
......@@ -3593,7 +3593,9 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
vs. the call expression. */
if (modify_dest)
caller_type = TREE_TYPE (modify_dest);
else
else if (return_slot)
caller_type = TREE_TYPE (return_slot);
else /* No LHS on the call. */
caller_type = TREE_TYPE (TREE_TYPE (callee));
/* We don't need to do anything for functions that don't return anything. */
......@@ -3634,6 +3636,10 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
&& !DECL_GIMPLE_REG_P (result)
&& DECL_P (var))
DECL_GIMPLE_REG_P (var) = 0;
if (!useless_type_conversion_p (callee_type, caller_type))
var = build1 (VIEW_CONVERT_EXPR, callee_type, var);
use = NULL;
goto done;
}
......
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