summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-13 17:50:18 +0000
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-13 17:50:18 +0000
commitc579aed5c516561efc73a0a8d86f79e41fa8ae82 (patch)
treebe2141f867bda3e7120ff6fe1a389f08afe0be32
parent34a5d2a56d4b0a0ea74339c985c919aabfc530a4 (diff)
downloadppe42-gcc-c579aed5c516561efc73a0a8d86f79e41fa8ae82.tar.gz
ppe42-gcc-c579aed5c516561efc73a0a8d86f79e41fa8ae82.zip
PR tree-optimization/59149
* calls.c (flags_from_decl_or_type): Fail on non decl or type. * trans-mem.c (diagnose_tm_1): Do not call flags_from_decl_or_type if no type or decl. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205967 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/calls.c2
-rw-r--r--gcc/trans-mem.c3
3 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a238cac62a6..9aeeadbec52 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2013-12-13 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/59149
+ * calls.c (flags_from_decl_or_type): Fail on non decl or type.
+ * trans-mem.c (diagnose_tm_1): Do not call flags_from_decl_or_type
+ if no type or decl.
+
2013-12-13 Kenneth Zadeck <zadeck@naturalbridge.com>
* config/arc/arc.h (BITS_PER_UNIT): Removed.
diff --git a/gcc/calls.c b/gcc/calls.c
index 3963bc29754..2226e78a489 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -769,6 +769,8 @@ flags_from_decl_or_type (const_tree exp)
|| lookup_attribute ("transaction_pure", TYPE_ATTRIBUTES (exp))))
flags |= ECF_TM_PURE;
}
+ else
+ gcc_unreachable ();
if (TREE_THIS_VOLATILE (exp))
{
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index c9af68002ac..ba344887d91 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -677,7 +677,8 @@ diagnose_tm_1 (gimple_stmt_iterator *gsi, bool *handled_ops_p,
}
else if (direct_call_p)
{
- if (flags_from_decl_or_type (fn) & ECF_TM_BUILTIN)
+ if (IS_TYPE_OR_DECL_P (fn)
+ && flags_from_decl_or_type (fn) & ECF_TM_BUILTIN)
is_safe = true;
else if (replacement)
{
OpenPOWER on IntegriCloud