This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Bug report


This is a bug I've found : 

** Version :
gcc version 2.95.2 19991024 (release)

** System :
Pentium II 233Mhz
Suse Linux 6.2

** Command line :
gcc -v --save-temps IMGbug.cc

** Output :
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cpp -lang-c++ -v
-D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__
-Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__
-D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Acpu(i386)
-Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686
-D__i686__ -D__pentiumpro -D__pentiumpro__ IMGbug.cc IMGbug.ii
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:

/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
 /usr/local/include

/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../i686-pc-linux-gnu/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search
path:
End of omitted list.
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus IMGbug.ii
-quiet -dumpbase IMGbug.cc -version -o IMGbug.s
GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnu) compiled
by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release).
IMGbug.cc: In instantiation of `Img::A<I,O><int,int>':
IMGbug.cc:32:   instantiated from `Img::B<int,int>'
IMGbug.cc:64:   instantiated from here
IMGbug.cc:10: Internal compiler error.
IMGbug.cc:10: Please submit a full bug report.
IMGbug.cc:10: See
<URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for
instructions.

** 
please find the attached file : IMGbug.ii

great work people!
regards,

Francois Morvillier
# 1 "IMGbug.cc"
namespace Img {
  template <class I, class O> class A;
  template <class I, class O> class B;
}

 


template <class I, class O> 
class Img::A {
public :
  virtual A<I, O>* clone() const = 0;
  
  virtual O operator()(I x, I y) const = 0;
};

namespace Img {
  template <class I, class O>
  class B : public A<I, O> {
  public :
    B(A<I, O>*);
    B(const B<I, O>&);
    virtual ~B();
    
    B<I, O>& operator=(const B<I, O>&);
    virtual B<I, O>* clone() const;
    
    virtual O operator()(I x, I y) const;
    
  private :
    A<I, O>* ref;
  };
}


template <class I, class O>
Img::B<I, O>::B(A<I, O>* i) : ref(i->clone()) {}

template <class I, class O>
Img::B<I, O>::B(const B<I, O>& i) : ref(i.ref->clone()) {}

template <class I, class O>
Img::B<I, O>& Img::B<I, O>::operator=(const B<I, O>& i) {
  if (this==&i) return *this;
  delete ref;
  ref = i.ref->clone();
  return *this;
}

template <class I, class O>
Img::B<I, O>::~B() { delete ref; }

template <class I, class O>
Img::B<I, O>* Img::B<I, O>::clone() const {
  return new B<I, O>(ref);
}

template <class I, class O>
O Img::B<I, O>::operator()(I x, I y) const {
  return (*ref)(x, y);
}

void main() {
  Img::B<int, int> I(0);
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]