diff options
author | Jan Hubicka <jh@suse.cz> | 2021-11-13 15:20:00 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2021-11-13 15:20:00 +0100 |
commit | e2dd12ab66d14ac76a92b4538af81f8361132ba0 (patch) | |
tree | cee2ae844d596479c28b09dfa893bd4828ed2aea /gcc/gimple.c | |
parent | b7a23949b0dcc4205fcc2be6b84b91441faa384d (diff) | |
download | gcc-e2dd12ab66d14ac76a92b4538af81f8361132ba0.zip gcc-e2dd12ab66d14ac76a92b4538af81f8361132ba0.tar.gz gcc-e2dd12ab66d14ac76a92b4538af81f8361132ba0.tar.bz2 |
Remember fnspec based EAF flags in modref summary.
gcc/ChangeLog:
* attr-fnspec.h (attr_fnspec::arg_eaf_flags): Break out from ...
* gimple.c (gimple_call_arg_flags): ... here.
* ipa-modref.c (analyze_parms): Record flags known from fnspec.
(modref_merge_call_site_flags): Use arg_eaf_flags.
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r-- | gcc/gimple.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c index 1e0fad9..037c6e4 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -1567,22 +1567,7 @@ gimple_call_arg_flags (const gcall *stmt, unsigned arg) int flags = 0; if (fnspec.known_p ()) - { - if (!fnspec.arg_specified_p (arg)) - ; - else if (!fnspec.arg_used_p (arg)) - flags = EAF_UNUSED; - else - { - if (fnspec.arg_direct_p (arg)) - flags |= EAF_NO_INDIRECT_READ | EAF_NO_INDIRECT_ESCAPE - | EAF_NOT_RETURNED_INDIRECTLY | EAF_NO_INDIRECT_CLOBBER; - if (fnspec.arg_noescape_p (arg)) - flags |= EAF_NO_DIRECT_ESCAPE | EAF_NO_INDIRECT_ESCAPE; - if (fnspec.arg_readonly_p (arg)) - flags |= EAF_NO_DIRECT_CLOBBER | EAF_NO_INDIRECT_CLOBBER; - } - } + flags = fnspec.arg_eaf_flags (arg); tree callee = gimple_call_fndecl (stmt); if (callee) { |