mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
tree-optimization/122225 - fix return stmt verification
The following fixes return stmt type verification by properly looking at DECL_RESULT to decide whether that's by reference, not trying to figure that from the actual argument. PR tree-optimization/122225 * tree-cfg.cc (verify_gimple_return): Look at DECL_RESULT for DECL_BY_REFERENCE.
This commit is contained in:
@@ -4786,6 +4786,7 @@ verify_gimple_return (greturn *stmt)
|
||||
{
|
||||
tree op = gimple_return_retval (stmt);
|
||||
tree restype = TREE_TYPE (TREE_TYPE (cfun->decl));
|
||||
tree resdecl = DECL_RESULT (cfun->decl);
|
||||
|
||||
/* We cannot test for present return values as we do not fix up missing
|
||||
return values from the original source. */
|
||||
@@ -4800,12 +4801,7 @@ verify_gimple_return (greturn *stmt)
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((TREE_CODE (op) == RESULT_DECL
|
||||
&& DECL_BY_REFERENCE (op))
|
||||
|| (TREE_CODE (op) == SSA_NAME
|
||||
&& SSA_NAME_VAR (op)
|
||||
&& TREE_CODE (SSA_NAME_VAR (op)) == RESULT_DECL
|
||||
&& DECL_BY_REFERENCE (SSA_NAME_VAR (op))))
|
||||
if (resdecl && DECL_BY_REFERENCE (resdecl))
|
||||
op = TREE_TYPE (op);
|
||||
|
||||
if (!useless_type_conversion_p (restype, TREE_TYPE (op)))
|
||||
|
||||
Reference in New Issue
Block a user