aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2001-01-11 11:45:03 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2001-01-11 11:45:03 +0000
commit34e225a30bcb010bc46846eb3ea6ad9e1321034d (patch)
tree49914e127fb797eba1359d8a097931f007688023 /gcc
parent98979fe0b06dbc0c776d5f040762aab17add4914 (diff)
downloadgcc-34e225a30bcb010bc46846eb3ea6ad9e1321034d.zip
gcc-34e225a30bcb010bc46846eb3ea6ad9e1321034d.tar.gz
gcc-34e225a30bcb010bc46846eb3ea6ad9e1321034d.tar.bz2
pt.c (unify): Check array has a domain, before checking whether it is variable sized.
cp: * pt.c (unify): Check array has a domain, before checking whether it is variable sized. testsuite: * g++.old-deja/g++.pt/crash64.C: New test. From-SVN: r38902
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/pt.c1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash64.C24
3 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 526424f..d72b8b0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
+ * pt.c (unify): Check array has a domain, before checking
+ whether it is variable sized.
+
+2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
+
* decl.c (grokparms): Unobfuscate and get correct diagnostic for
parameters with pointers to arrays of unknown bound.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 13f9d20..b0f2b56 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -8605,6 +8605,7 @@ unify (tparms, targs, parm, arg, strict)
here. */
if (TREE_CODE (arg) == ARRAY_TYPE
&& !uses_template_parms (arg)
+ && TYPE_DOMAIN (arg)
&& (TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (arg)))
!= INTEGER_CST))
return 1;
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash64.C b/gcc/testsuite/g++.old-deja/g++.pt/crash64.C
new file mode 100644
index 0000000..8949411
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash64.C
@@ -0,0 +1,24 @@
+// Build don't link:
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 10 Jan 2001 <nathan@codesourcery.com>
+
+// Bug 1546. We ICE'd trying to unify an array of unknown bound,
+// checking to see if it was a variable sized array.
+
+template <class _Tp> class allocator {};
+
+template <class _Tp, class _Allocator>
+struct _Alloc_traits
+{
+ static const bool _S_instanceless = false;
+};
+
+template <class _Tp, class _Tp1>
+struct _Alloc_traits<_Tp, allocator<_Tp1> >
+{
+ static const bool _S_instanceless = true;
+};
+
+typedef char state [];
+bool y = _Alloc_traits<state, allocator<state> >::_S_instanceless;