From 46249384a8a5492493dbae34f9b61f6375f1bb2e Mon Sep 17 00:00:00 2001 From: hubicka Date: Fri, 30 Aug 2013 08:11:41 +0000 Subject: [PATCH] * tree.c (set_call_expr_flags): Fix handling of TM_PURE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202098 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/tree.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5720a2a..171988a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-08-29 Jan Hubicka + + * tree.c (set_call_expr_flags): Fix handling of TM_PURE. + 2013-08-30 Richard Biener PR tree-optimization/58228 diff --git a/gcc/tree.c b/gcc/tree.c index f0ee309..5ed0d1d 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -9794,7 +9794,10 @@ build_common_tree_nodes (bool signed_char, bool short_double) } } -/* Modify DECL for given flags. */ +/* Modify DECL for given flags. + TM_PURE attribute is set only on types, so the function will modify + DECL's type when ECF_TM_PURE is used. */ + void set_call_expr_flags (tree decl, int flags) { @@ -9818,8 +9821,7 @@ set_call_expr_flags (tree decl, int flags) DECL_ATTRIBUTES (decl) = tree_cons (get_identifier ("leaf"), NULL, DECL_ATTRIBUTES (decl)); if ((flags & ECF_TM_PURE) && flag_tm) - DECL_ATTRIBUTES (decl) = tree_cons (get_identifier ("transaction_pure"), - NULL, DECL_ATTRIBUTES (decl)); + apply_tm_attr (decl, get_identifier ("transaction_pure")); /* Looping const or pure is implied by noreturn. There is currently no way to declare looping const or looping pure alone. */ gcc_assert (!(flags & ECF_LOOPING_CONST_OR_PURE) -- 2.7.4