From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean McNeil To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: preprocessor/2948 Date: Mon, 28 May 2001 18:56:00 -0000 Message-id: <20010529015601.19250.qmail@sourceware.cygnus.com> X-SW-Source: 2001-05/msg00984.html List-Id: The following reply was made to PR preprocessor/2948; it has been noted by GNATS. From: Sean McNeil To: Neil Booth Cc: nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: preprocessor/2948 Date: Mon, 28 May 2001 18:54:22 -0700 Neil, This has puzzled me for a while and I've tried several additional things as we've been discussing this. I noticed that the cc1plus program installs handlers for various pragmas and discovered a #pragma implementation in PlotFile.cpp. When I remove this pragma, compilation is as I expected. HOWEVER.... there is no template code that exists within the ttt.ii file (after preprocessor) and adding a #pragma implementation to ttt.cc (copy of ttt.ii) doesn't reproduce the problem either. So I am still at a loss as to why 1) there is a #pragma implementation in this file (Something I do not expect anyone on the gcc team to answer :). 2) why code is generated for the pragma even though -fexternal-templates was not defined. I suppose what it boils down to is it's not a cpp problem, but a cc1plus problem. Should this be reassigned? Sean Neil Booth wrote: > Hi Sean, > > The command lines look identical in their effects to me. I honestly > have no idea what is going wrong. I'll leave your bug report open, of > course. > > If you could narrow it down by removing code and / or command line > options until the difference in behaviour vanishes, it would help a > lot. Otherwise this kind of thing, by its very nature, is hard to > get a grip on. > > Neil. > > Sean McNeil wrote:- > > > Here is the information you requested. > > > I've also tried running the code through with the -E option twice > > to see if the cpp is changing the code in any way in the second > > pass-through. The only difference was in some white space and diff > > -cb shows no differences. I was under the impression that the cpp > > is now a library invoked directly from the different modules > > (C,C++,etc.). Could it be that the format/switches used between how > > the cpp is invoked with the -E option and without it are different? > > The -v option indicates that cpp0 is not called so it must now get > > used by cc1plus directly. > > > > [root@blue libstdcxx]# arm-wrs-vxworks-g++ -S -v -mcpu=arm8 -mapcs-32 > > -mlittle-endian -ansi -nostdinc -fno-implicit-templates -DVXW_EXPLICIT_TEMPLATES > > -O2 -mno-sched-prolog -I/usr/wind/target/h -DCPU=ARMARCH4 -DARMEL -fno-exceptions > > -o /tmp/ttt-bad.s PlotFile.cpp > > Reading specs from > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/specs > > Configured with: ../configure --prefix=/usr/wind/host/x86-freebsd > > --target=arm-wrs-vxworks > > Thread model: vxworks > > gcc version 3.1 20010525 (experimental) > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/cc1plus -nostdinc -v > > -I/usr/wind/target/h -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 > > -D__vxworks -D__arm__ -D__svr4__ -Acpu=arm -Amachine=arm -D__CHAR_UNSIGNED__ > > -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D__ARM_ARCH_4__ -D__APCS_32__ -D__ARMEL__ > > -D__CPU__=ARMARCH4 -D__arm__ -DVXW_EXPLICIT_TEMPLATES -DCPU=ARMARCH4 -DARMEL > > PlotFile.cpp -D__GNUG__=3 -D_GNU_SOURCE -D__DEPRECATED -D__GXX_ABI_VERSION=100 > > -D__STRICT_ANSI__ -trigraphs -$ -quiet -dumpbase PlotFile.cpp -mcpu=arm8 -mapcs-32 > > -mlittle-endian -mno-sched-prolog -ansi -O2 -ansi -version -fno-implicit-templates > > -fno-exceptions -o /tmp/ttt-bad.s > > GNU CPP version 3.1 20010525 (experimental) (cpplib) (ARM/COFF) > > GNU C++ version 3.1 20010525 (experimental) (arm-wrs-vxworks) > > compiled by GNU C version 2.95.3 [FreeBSD] 20010315 (release). > > #include "..." search starts here: > > #include <...> search starts here: > > /usr/wind/target/h > > End of search list. > > > > > > [root@blue libstdcxx]# arm-wrs-vxworks-g++ -E -v -mcpu=arm8 -mapcs-32 > > -mlittle-endian -ansi -nostdinc -fno-implicit-templates -DVXW_EXPLICIT_TEMPLATES > > -O2 -mno-sched-prolog -I/usr/wind/target/h -DCPU=ARMARCH4 -DARMEL -fno-exceptions > > -o /tmp/ttt.ii PlotFile.cpp > > Reading specs from > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/specs > > Configured with: ../configure --prefix=/usr/wind/host/x86-freebsd > > --target=arm-wrs-vxworks > > Thread model: vxworks > > gcc version 3.1 20010525 (experimental) > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/cpp0 -lang-c++ > > -D_GNU_SOURCE -D__GNUG__=3 -D__DEPRECATED -D__GXX_ABI_VERSION=100 > > -D__STRICT_ANSI__ -trigraphs -$ -nostdinc -v -I/usr/wind/target/h -D__GNUC__=3 > > -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__vxworks -D__arm__ -D__svr4__ > > -Acpu=arm -Amachine=arm -D__CHAR_UNSIGNED__ -D__OPTIMIZE__ -D__STDC_HOSTED__=1 > > -D__ARM_ARCH_4__ -D__APCS_32__ -D__ARMEL__ -D__CPU__=ARMARCH4 -D__arm__ > > -DVXW_EXPLICIT_TEMPLATES -DCPU=ARMARCH4 -DARMEL PlotFile.cpp -o /tmp/ttt.ii > > GNU CPP version 3.1 20010525 (experimental) (cpplib) (ARM/COFF) > > #include "..." search starts here: > > #include <...> search starts here: > > /usr/wind/target/h > > End of search list. > > > > [root@blue libstdcxx]# arm-wrs-vxworks-g++ -S -v -mcpu=arm8 -mapcs-32 > > -mlittle-endian -ansi -nostdinc -fno-implicit-templates -DVXW_EXPLICIT_TEMPLATES > > -O2 -mno-sched-prolog -I/usr/wind/target/h -DCPU=ARMARCH4 -DARMEL -fno-exceptions > > -o /tmp/ttt.s /tmp/ttt.ii > > Reading specs from > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/specs > > Configured with: ../configure --prefix=/usr/wind/host/x86-freebsd > > --target=arm-wrs-vxworks > > Thread model: vxworks > > gcc version 3.1 20010525 (experimental) > > /usr/wind/host/x86-freebsd/lib/gcc-lib/arm-wrs-vxworks/3.1/cc1plus -fpreprocessed > > /tmp/ttt.ii -quiet -dumpbase ttt.ii -mcpu=arm8 -mapcs-32 -mlittle-endian > > -mno-sched-prolog -ansi -O2 -ansi -version -fno-implicit-templates -fno-exceptions > > -o /tmp/ttt.s > > GNU CPP version 3.1 20010525 (experimental) (cpplib) (ARM/COFF) > > GNU C++ version 3.1 20010525 (experimental) (arm-wrs-vxworks) > > compiled by GNU C version 2.95.3 [FreeBSD] 20010315 (release).