| // { dg-do run } |
| // { dg-options "-O2" } |
| |
| // Copyright (C) 2004 Free Software Foundation, Inc. |
| // Contributed by Nathan Sidwell 2 Dec 2004 <nathan@codesourcery.com> |
| |
| // PR 18318. ICE with template new[] |
| // Origin:Elliot Hughes <enh@jessies.org> |
| // Andrew Pinski <pinskia@gcc.gnu.org> |
| |
| struct Aint |
| { |
| ~Aint (); |
| Aint (); |
| }; |
| |
| Aint::Aint () {} |
| Aint::~Aint () {} |
| |
| static int count; |
| |
| template <class T> |
| struct A |
| { |
| unsigned Blksize() const; |
| |
| void f() |
| { |
| new T[Blksize()]; |
| } |
| }; |
| |
| template <class T> unsigned A<T>::Blksize () const |
| { |
| count++; |
| return 1; |
| } |
| |
| int main () |
| { |
| A<Aint> a; |
| a.f(); |
| |
| return count != 1; |
| } |