aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-11-13 15:20:00 +0100
committerJan Hubicka <jh@suse.cz>2021-11-13 15:20:00 +0100
commite2dd12ab66d14ac76a92b4538af81f8361132ba0 (patch)
treecee2ae844d596479c28b09dfa893bd4828ed2aea /gcc/gimple.c
parentb7a23949b0dcc4205fcc2be6b84b91441faa384d (diff)
downloadgcc-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.c17
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)
{