3.4.0 vs 3.3.3

Shelly Adhikari shelly@interrasystems.com
Tue Apr 20 21:25:00 GMT 2004


Hello Guys,

Should I file a bug against gcc 3.4.0, the following compiles fine with 
gcc 3.3.3 but gives errors with gcc 3.4.0.

---------------------------------------------------------------------------------------------------------------------------

template <class A> class C;

template <class A> class B {
public:
    B() { }
    ~B() { }
protected:
    int abc;
    void g() {}
    friend void C<A>::f(B<A>* p);
};

template <class A> class C : public B<A> {
public:
    void f(B<A>* p) {
        p->g();
        int m = p->abc;
    }
};

int main() {
    B<int>*    y = new B<int>();
    C<int>    x;
    x.f(y);
}

---------------------------------------------------------------------------------------------------------------------------

shelly@redhat[180] /usr/local/gcc3.3.3/bin/g++ -v b.cxx
Reading specs from 
/usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/specs
Configured with: ../gcc-3.3.3/configure --prefix=/usr/local/gcc3.3.3 
--enable-languages=c,c++ --disable-shared
Thread model: posix
gcc version 3.3.3
 /usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/cc1plus -quiet 
-v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3 -D_GNU_SOURCE 
b.cxx -D__GNUG__=3 -quiet -dumpbase b.cxx -auxbase b -version -o 
/tmp/ccLfjLh3.s
GNU C++ version 3.3.3 (i686-pc-linux-gnu)
        compiled by GNU C version 3.3.3.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128849
ignoring nonexistent directory 
"/usr/local/gcc3.3.3/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/gcc3.3.3/include/c++/3.3.3
 /usr/local/gcc3.3.3/include/c++/3.3.3/i686-pc-linux-gnu
 /usr/local/gcc3.3.3/include/c++/3.3.3/backward
 /usr/local/include
 /usr/local/gcc3.3.3/include
 /usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/include
 /usr/include
End of search list.
 as --traditional-format -V -Qy -o /tmp/ccoasF3Y.o /tmp/ccLfjLh3.s
GNU assembler version 2.10.91 (i386-redhat-linux) using BFD version 
2.10.91.0.2
 /usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/collect2 -m 
elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o 
/usr/lib/crti.o 
/usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/crtbegin.o 
-L/usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3 
-L/usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/../../.. 
/tmp/ccoasF3Y.o -lstdc++ -lm -lgcc -lc -lgcc 
/usr/local/gcc3.3.3/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/crtend.o 
/usr/lib/crtn.o

---------------------------------------------------------------------------------------------------------------------------

shelly@redhat[181] /usr/local/gcc3.4.0/bin/g++ -v b.cxx
Reading specs from /usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/specs
Configured with: ../gcc-3.4.0/configure --prefix=/usr/local/gcc3.4.0 
--enable-languages=c,c++ --disable-shared
Thread model: posix
gcc version 3.4.0
 /usr/local/gcc3.4.0/libexec/gcc/i686-pc-linux-gnu/3.4.0/cc1plus -quiet 
-v -D_GNU_SOURCE b.cxx -quiet -dumpbase b.cxx -mtune=pentiumpro -auxbase 
b -version -o /tmp/ccsgk5Ye.s
ignoring nonexistent directory 
"/usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0
 /usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0/i686-pc-linux-gnu
 /usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/../../../../include/c++/3.4.0/backward
 /usr/local/include
 /usr/local/gcc3.4.0/include
 /usr/local/gcc3.4.0/lib/gcc/i686-pc-linux-gnu/3.4.0/include
 /usr/include
End of search list.
GNU C++ version 3.4.0 (i686-pc-linux-gnu)
        compiled by GNU C version 3.4.0.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128849
b.cxx: In instantiation of `C<int>':
b.cxx:9:   instantiated from `B<int>'
b.cxx:23:   instantiated from here
b.cxx:14: error: invalid use of undefined type `class B<int>'
b.cxx:4: error: declaration of `class B<int>'




More information about the Gcc mailing list