re PR c++/58834 (ICE on __builtin_shuffle within template function)
authorMarc Glisse <marc.glisse@inria.fr>
Fri, 1 Nov 2013 15:23:24 +0000 (16:23 +0100)
committerMarc Glisse <glisse@gcc.gnu.org>
Fri, 1 Nov 2013 15:23:24 +0000 (15:23 +0000)
2013-11-01  Marc Glisse  <marc.glisse@inria.fr>

PR c++/58834
gcc/cp/
* pt.c (type_dependent_expression_p): Handle null argument.

gcc/testsuite/
* g++.dg/ext/pr58834.C: New file.

From-SVN: r204296

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/pr58834.C [new file with mode: 0644]

index 66ef9e3576f0bd4e5ae2671681e01eeb2b4d417c..e1dbb3b15cf2f50295e73588a6687a3ae7a519f3 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-01  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR c++/58834
+       * pt.c (type_dependent_expression_p): Handle null argument.
+
 2013-11-01  Jakub Jelinek  <jakub@redhat.com>
 
        * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_UNIFORM>: Go to
index 6f4987ce8e3d259a6aba0b7af2c35a0734cf80cc..8c1553feca20c7715c868fe45e2e2e723907d0a6 100644 (file)
@@ -20506,7 +20506,7 @@ type_dependent_expression_p (tree expression)
   if (!processing_template_decl)
     return false;
 
-  if (expression == error_mark_node)
+  if (expression == NULL_TREE || expression == error_mark_node)
     return false;
 
   /* An unresolved name is always dependent.  */
index 03eb1b3c909fc31308697d253415ac779b4faf56..e9bd852816fc8ea13fe9fc8bce4e6b8a5c1932eb 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-01  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR c++/58834
+       * g++.dg/ext/pr58834.C: New file.
+
 2013-11-01  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.dg/gomp/declare-simd-2.c (f12, f13, f14, f15, f16, f17): New
diff --git a/gcc/testsuite/g++.dg/ext/pr58834.C b/gcc/testsuite/g++.dg/ext/pr58834.C
new file mode 100644 (file)
index 0000000..0293033
--- /dev/null
@@ -0,0 +1,5 @@
+template<typename> void foo()
+{
+  int i __attribute__((vector_size(2*sizeof(int))));
+  (void) __builtin_shuffle(i, i);
+}