[gnu.g++.bug] g++ 1.34.2 parameter passing bug

paolo@semto.UUCP (Paolo Zeppegno) (05/02/89)

I'm not c++ guru, but I think the following program should not compile
(for people not familiar with InterViews Banner is a subclass of Interactor)
g++ 1.34.2 compiles this without a warning..

#include <InterViews/world.h>
#include <InterViews/banner.h>

test(Interactor p)
{
    printf("%d\n", sizeof p);
}

main()
{
    Banner *foo = 0;
    printf("%d\n", sizeof *foo);
    test(*foo);
}

g++ version 1.34.2
 /usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dvax -Dunix -D__vax__ -D__unix__ prova.c /tmp/cc003707.cpp
GNU CPP version 1.34
 /usr/local/lib/gcc-c++ /tmp/cc003707.cpp -quiet -dumpbase prova.c -g -version - o /tmp/cc003707.s
GNU C++ version 1.32.0 (vax) compiled by GNU C version 1.34.

tiemann@YAHI.STANFORD.EDU (Michael Tiemann) (05/03/89)

   Date: 2 May 89 16:15:25 GMT
   From: mcvax!i2unix!semto!paolo@uunet.uu.net  (Paolo Zeppegno)
   Organization: Systems & Management (Torino - Italy)
   Sender: bug-g++-request@prep.ai.mit.edu

   I'm not c++ guru, but I think the following program should not compile
   (for people not familiar with InterViews Banner is a subclass of Interactor)
   g++ 1.34.2 compiles this without a warning..

   #include <InterViews/world.h>
   #include <InterViews/banner.h>

   test(Interactor p)
   {
       printf("%d\n", sizeof p);
   }

   main()
   {
       Banner *foo = 0;
       printf("%d\n", sizeof *foo);
       test(*foo);
   }

   g++ version 1.34.2
    /usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dvax -Dunix -D__vax__ -D__unix__ prova.c /tmp/cc003707.cpp
   GNU CPP version 1.34
    /usr/local/lib/gcc-c++ /tmp/cc003707.cpp -quiet -dumpbase prova.c -g -version - o /tmp/cc003707.s
   GNU C++ version 1.32.0 (vax) compiled by GNU C version 1.34.

First, I claim that it should compile, since you can make an
interactor from a banner, since interactor is a public base class of
banner.  This is a legal, default conversion.

Second, you have the 1.34.2 driver, but the compiler being accessed is
version 1.32.0.  You should run the installation procedure so that the
latest compiler (c++) is accessed by the latest driver (g++).  Then
you should get consistent (1.34, 1.34.2) version numbers.

Michael