diff options
author | Marek Polacek <polacek@redhat.com> | 2015-01-13 20:22:32 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2015-01-13 20:22:32 +0000 |
commit | 59b8926c6fe2f4320babf3fd7e7d1ca8731e3890 (patch) | |
tree | e39e09b979d73d5d016e7c962b1b08704e0bbd9b /gcc | |
parent | ee57ebbf2b503f9bf1cdad544090402c269538f7 (diff) | |
download | gcc-59b8926c6fe2f4320babf3fd7e7d1ca8731e3890.zip gcc-59b8926c6fe2f4320babf3fd7e7d1ca8731e3890.tar.gz gcc-59b8926c6fe2f4320babf3fd7e7d1ca8731e3890.tar.bz2 |
re PR middle-end/64391 (ICE: SIGSEGV in get_attrs_for (trans-mem.c:179) with -fgnu-tm and #pragma GCC ivdep)
PR middle-end/64391
* trans-mem.c (get_attrs_for): Return NULL_TREE if X is NULL_TREE.
* gcc.dg/tm/pr64391.c: New test.
From-SVN: r219555
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tm/pr64391.c | 10 | ||||
-rw-r--r-- | gcc/trans-mem.c | 9 |
4 files changed, 26 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 725d7a6..bdc3903 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-01-13 Marek Polacek <polacek@redhat.com> + + PR middle-end/64391 + * trans-mem.c (get_attrs_for): Return NULL_TREE if X is NULL_TREE. + 2015-01-13 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/64286 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9fbdbcc..a40d625 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-01-13 Marek Polacek <polacek@redhat.com> + + PR middle-end/64391 + * gcc.dg/tm/pr64391.c: New test. + 2015-01-13 H.J. Lu <hongjiu.lu@intel.com> * gcc.dg/tree-ssa/ssa-store-ccp-3.c: Exclude pie when nonpic is diff --git a/gcc/testsuite/gcc.dg/tm/pr64391.c b/gcc/testsuite/gcc.dg/tm/pr64391.c new file mode 100644 index 0000000..235118a --- /dev/null +++ b/gcc/testsuite/gcc.dg/tm/pr64391.c @@ -0,0 +1,10 @@ +/* PR middle-end/64391 */ +/* { dg-do compile } */ +/* { dg-options "-fgnu-tm" } */ + +void +foo (void) +{ +#pragma GCC ivdep + while (1); +} diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index b449760..21fa497 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -183,6 +183,9 @@ static void *expand_regions (struct tm_region *, static tree get_attrs_for (const_tree x) { + if (x == NULL_TREE) + return NULL_TREE; + switch (TREE_CODE (x)) { case FUNCTION_DECL: @@ -191,16 +194,16 @@ get_attrs_for (const_tree x) default: if (TYPE_P (x)) - return NULL; + return NULL_TREE; x = TREE_TYPE (x); if (TREE_CODE (x) != POINTER_TYPE) - return NULL; + return NULL_TREE; /* FALLTHRU */ case POINTER_TYPE: x = TREE_TYPE (x); if (TREE_CODE (x) != FUNCTION_TYPE && TREE_CODE (x) != METHOD_TYPE) - return NULL; + return NULL_TREE; /* FALLTHRU */ case FUNCTION_TYPE: |