diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2001-01-11 11:45:03 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2001-01-11 11:45:03 +0000 |
commit | 34e225a30bcb010bc46846eb3ea6ad9e1321034d (patch) | |
tree | 49914e127fb797eba1359d8a097931f007688023 /gcc | |
parent | 98979fe0b06dbc0c776d5f040762aab17add4914 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/crash64.C | 24 |
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; |