aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-12-14 17:53:57 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-12-14 17:53:57 +0100
commit20cdc2be22a6e32fd6a0fbedae32473e3698961a (patch)
treec56a297fcbcb5b2a3c120a9cbdc79b0ad1dc5625 /gcc/cgraph.c
parent7cb792f51087a104ac286ca9483c25849e437733 (diff)
downloadgcc-20cdc2be22a6e32fd6a0fbedae32473e3698961a.zip
gcc-20cdc2be22a6e32fd6a0fbedae32473e3698961a.tar.gz
gcc-20cdc2be22a6e32fd6a0fbedae32473e3698961a.tar.bz2
cgraph.h (cgraph_set_nothrow_flag, [...]): New prototypes.
* cgraph.h (cgraph_set_nothrow_flag, cgraph_set_readonly_flag, cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New prototypes. * cgraph.c (cgraph_set_nothrow_flag, cgraph_set_readonly_flag, cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New functions. * except.h (set_nothrow_function_flags): Remove prototype. * except.c (set_nothrow_function_flags): Use cgraph_set_nothrow_flag. Make static. * ipa-pure-const.c (propagate): Use cgraph_set_nothrow_flag, cgraph_set_readonly_flag, cgraph_set_pure_flag and cgraph_set_looping_const_or_pure_flag. (local_pure_const): Likewise. From-SVN: r155220
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 0ed097a..fc7ba1a 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2208,4 +2208,53 @@ cgraph_make_node_local (struct cgraph_node *node)
}
}
+/* Set TREE_NOTHROW on NODE's decl and on same_body aliases of NODE
+ if any to NOTHROW. */
+
+void
+cgraph_set_nothrow_flag (struct cgraph_node *node, bool nothrow)
+{
+ struct cgraph_node *alias;
+ TREE_NOTHROW (node->decl) = nothrow;
+ for (alias = node->same_body; alias; alias = alias->next)
+ TREE_NOTHROW (alias->decl) = nothrow;
+}
+
+/* Set TREE_READONLY on NODE's decl and on same_body aliases of NODE
+ if any to READONLY. */
+
+void
+cgraph_set_readonly_flag (struct cgraph_node *node, bool readonly)
+{
+ struct cgraph_node *alias;
+ TREE_READONLY (node->decl) = readonly;
+ for (alias = node->same_body; alias; alias = alias->next)
+ TREE_READONLY (alias->decl) = readonly;
+}
+
+/* Set DECL_PURE_P on NODE's decl and on same_body aliases of NODE
+ if any to PURE. */
+
+void
+cgraph_set_pure_flag (struct cgraph_node *node, bool pure)
+{
+ struct cgraph_node *alias;
+ DECL_PURE_P (node->decl) = pure;
+ for (alias = node->same_body; alias; alias = alias->next)
+ DECL_PURE_P (alias->decl) = pure;
+}
+
+/* Set DECL_LOOPING_CONST_OR_PURE_P on NODE's decl and on
+ same_body aliases of NODE if any to LOOPING_CONST_OR_PURE. */
+
+void
+cgraph_set_looping_const_or_pure_flag (struct cgraph_node *node,
+ bool looping_const_or_pure)
+{
+ struct cgraph_node *alias;
+ DECL_LOOPING_CONST_OR_PURE_P (node->decl) = looping_const_or_pure;
+ for (alias = node->same_body; alias; alias = alias->next)
+ DECL_LOOPING_CONST_OR_PURE_P (alias->decl) = looping_const_or_pure;
+}
+
#include "gt-cgraph.h"