aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2015-01-13 20:22:32 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2015-01-13 20:22:32 +0000
commit59b8926c6fe2f4320babf3fd7e7d1ca8731e3890 (patch)
treee39e09b979d73d5d016e7c962b1b08704e0bbd9b
parentee57ebbf2b503f9bf1cdad544090402c269538f7 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tm/pr64391.c10
-rw-r--r--gcc/trans-mem.c9
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: