diff options
author | Tom de Vries <tom@codesourcery.com> | 2017-12-20 00:46:38 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2017-12-20 00:46:38 +0000 |
commit | 4b522b8f339f4e7844843d30f38ea9459d908e3c (patch) | |
tree | cd32dc6ce38614687f2e8641be27ecb2f2300692 /gcc/calls.c | |
parent | f00b0bad2afa3912e91910eaa1f6c7e74fe86683 (diff) | |
download | gcc-4b522b8f339f4e7844843d30f38ea9459d908e3c.zip gcc-4b522b8f339f4e7844843d30f38ea9459d908e3c.tar.gz gcc-4b522b8f339f4e7844843d30f38ea9459d908e3c.tar.bz2 |
Don't call targetm.calls.static_chain in non-static function
2017-12-20 Tom de Vries <tom@codesourcery.com>
PR middle-end/83423
* config/i386/i386.c (ix86_static_chain): Move DECL_STATIC_CHAIN test ...
* calls.c (rtx_for_static_chain): ... here. New function.
* calls.h (rtx_for_static_chain): Declare.
* builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
instead of targetm.calls.static_chain.
* df-scan.c (df_get_entry_block_def_set): Same.
From-SVN: r255849
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index da6c96b..6057aa6 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -2460,6 +2460,17 @@ rtx_for_function_call (tree fndecl, tree addr) return funexp; } +/* Return the static chain for this function, if any. */ + +rtx +rtx_for_static_chain (const_tree fndecl_or_type, bool incoming_p) +{ + if (DECL_P (fndecl_or_type) && !DECL_STATIC_CHAIN (fndecl_or_type)) + return NULL; + + return targetm.calls.static_chain (fndecl_or_type, incoming_p); +} + /* Internal state for internal_arg_pointer_based_exp and its helpers. */ static struct { |