]> gcc.gnu.org Git - gcc.git/commitdiff
pt.c (unify): Check array has a domain, before checking whether it is variable sized.
authorNathan Sidwell <nathan@codesourcery.com>
Thu, 11 Jan 2001 11:45:03 +0000 (11:45 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Thu, 11 Jan 2001 11:45:03 +0000 (11:45 +0000)
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

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/g++.old-deja/g++.pt/crash64.C [new file with mode: 0644]

index 526424fd77a60ae82be8dba276e7acf573281055..d72b8b0d56ef6117a5fe8a01045d09a461502462 100644 (file)
@@ -1,3 +1,8 @@
+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
index 13f9d203bfe5762287993f4dfd95845c317dcbb4..b0f2b560afc1aa29c187cf7176a447bdfb544301 100644 (file)
@@ -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 (file)
index 0000000..8949411
--- /dev/null
@@ -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;
This page took 0.084894 seconds and 5 git commands to generate.