summaryrefslogtreecommitdiff
path: root/gcc/cgraph.h
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 14:06:20 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 14:06:20 +0000
commit3c97c75dbc59497ed3a56c20eb66a50f554c4a6a (patch)
tree4e831ce4ac2924d53233e6215470e4dbd88eea9a /gcc/cgraph.h
parent781e865e57a326f2336833e05f25de3ce4dc1fb3 (diff)
downloadgcc-3c97c75dbc59497ed3a56c20eb66a50f554c4a6a.tar.gz
PR target/47237
* cgraph.h (cgraph_local_info): New field can_change_signature. * ipa-cp.c (ipcp_update_callgraph): Only compute args_to_skip if callee signature can change. (ipcp_estimate_growth): Call sequence simplify only if calle signature can change. (ipcp_insert_stage): Only compute args_to_skip if signature can change. (cgraph_function_versioning): We can not change signature of functions that don't allow that. * lto-cgraph.c (lto_output_node): Stream local.can_change_signature. (lto_input_node): Likewise. * ipa-inline.c (compute_inline_parameters): Compute local.can_change_signature. * ipa-split.c (visit_bb): Never split away APPLY_ARGS. * tree-sra.c (ipa_sra_preliminary_function_checks): Give up on functions that can not change signature. * i386.c (ix86_function_regparm, ix86_function_sseregparm, init_cumulative_args): Do not use local calling conventions for functions that can not change signature. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169290 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r--gcc/cgraph.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 33b31679535..2df3fa54d9f 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -114,6 +114,10 @@ struct GTY(()) cgraph_local_info {
Currently computed and used only by ipa-cp. */
unsigned versionable : 1;
+ /* False when function calling convention and signature can not be changed.
+ This is the case when __builtin_apply_args is used. */
+ unsigned can_change_signature : 1;
+
/* True when function should be inlined independently on its size. */
unsigned disregard_inline_limits : 1;