diff options
| author | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-13 17:50:18 +0000 |
|---|---|---|
| committer | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-13 17:50:18 +0000 |
| commit | c579aed5c516561efc73a0a8d86f79e41fa8ae82 (patch) | |
| tree | be2141f867bda3e7120ff6fe1a389f08afe0be32 | |
| parent | 34a5d2a56d4b0a0ea74339c985c919aabfc530a4 (diff) | |
| download | ppe42-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/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/calls.c | 2 | ||||
| -rw-r--r-- | gcc/trans-mem.c | 3 |
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) { |

