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:
Richard Biener
2025-10-10 08:20:22 +02:00
parent ef29eabf55
commit aaa7ac48bd

View File

@@ -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)))