Projects
openEuler:24.03:SP1:Everything:64G
gcc
_service:tar_scm:0089-StructReorderFields-Fix-g...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:0089-StructReorderFields-Fix-gimple-call-not-rewritten.patch of Package gcc
From 302b7e15d6308c29c215db4c9901342e1106381a Mon Sep 17 00:00:00 2001 From: huang-xiaoquan <huangxiaoquan1@huawei.com> Date: Mon, 29 Apr 2024 11:00:12 +0800 Subject: [PATCH] [StructReorderFields] Fix gimple call not rewritten due to empty function node Add parameter type escape for empty functions or inline functions. --- gcc/ipa-struct-reorg/ipa-struct-reorg.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gcc/ipa-struct-reorg/ipa-struct-reorg.cc b/gcc/ipa-struct-reorg/ipa-struct-reorg.cc index e08577c0c..2257d3528 100644 --- a/gcc/ipa-struct-reorg/ipa-struct-reorg.cc +++ b/gcc/ipa-struct-reorg/ipa-struct-reorg.cc @@ -4366,6 +4366,17 @@ ipa_struct_reorg::maybe_record_call (cgraph_node *node, gcall *stmt) argtype = argtype ? TREE_CHAIN (argtype) : NULL_TREE; } + + /* Types escapes via a argument at empty or inlined function. */ + cgraph_node *callee = node->get_edge (stmt)->callee; + if (!gimple_call_builtin_p (stmt, BUILT_IN_FREE) + && gimple_call_num_args (stmt) + && callee && (!callee->has_gimple_body_p () || callee->inlined_to)) + { + for (unsigned i = 0; i < gimple_call_num_args (stmt); i++) + mark_type_as_escape (TREE_TYPE (gimple_call_arg (stmt, i)), + escape_var_arg_function); + } } void @@ -8068,6 +8079,11 @@ ipa_struct_reorg::rewrite_functions (void) if (dump_file && (dump_flags & TDF_DETAILS)) { fprintf (dump_file, "\nNo rewrite:\n"); + if (current_function_decl == NULL) + { + fprintf (dump_file, "\ncurrent_function_decl == NULL\n"); + continue; + } if (current_function_decl) dump_function_to_file (current_function_decl, dump_file, dump_flags | TDF_VOPS); -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2