aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Marlier <patrick.marlier@gmail.com>2012-02-06 14:42:07 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2012-02-06 14:42:07 +0000
commitfe924d9ff03ae0e13ab26745c0020cc1fdaf9577 (patch)
tree97054f27aaa12ac7e5ee10d94fffd54a10b611ca
parent1d30a09a480a436248a9f86c933e8b9c71cc0b46 (diff)
downloadgcc-fe924d9ff03ae0e13ab26745c0020cc1fdaf9577.zip
gcc-fe924d9ff03ae0e13ab26745c0020cc1fdaf9577.tar.gz
gcc-fe924d9ff03ae0e13ab26745c0020cc1fdaf9577.tar.bz2
re PR middle-end/52047 ([trans-mem] ICE: SIGSEGV in execute_tm_mark (trans-mem.c:2270) with -O -fgnu-tm -fprefetch-loop-arrays)
PR middle-end/52047 * trans-mem.c (expand_call_tm): Add an assertion. * calls.c (flags_from_decl_or_type): Add ECF_TM_PURE to 'no vops' functions. From-SVN: r183936
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/calls.c2
-rw-r--r--gcc/trans-mem.c4
3 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 97ceef1..bf5e93b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-02-06 Patrick Marlier <patrick.marlier@gmail.com>
+
+ PR middle-end/52047
+ * trans-mem.c (expand_call_tm): Add an assertion.
+ * calls.c (flags_from_decl_or_type): Add ECF_TM_PURE to 'no vops'
+ functions.
+
2012-02-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50955
diff --git a/gcc/calls.c b/gcc/calls.c
index 53c0335..19b2bfa 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -716,7 +716,7 @@ flags_from_decl_or_type (const_tree exp)
{
if (is_tm_builtin (exp))
flags |= ECF_TM_BUILTIN;
- else if ((flags & ECF_CONST) != 0
+ else if ((flags & (ECF_CONST|ECF_NOVOPS)) != 0
|| lookup_attribute ("transaction_pure",
TYPE_ATTRIBUTES (TREE_TYPE (exp))))
flags |= ECF_TM_PURE;
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index de7a913..d760db3 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -1,5 +1,5 @@
/* Passes for transactional memory support.
- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -2267,6 +2267,8 @@ expand_call_tm (struct tm_region *region,
}
node = cgraph_get_node (fn_decl);
+ /* All calls should have cgraph here. */
+ gcc_assert (node);
if (node->local.tm_may_enter_irr)
transaction_subcode_ior (region, GTMA_MAY_ENTER_IRREVOCABLE);