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]

Code generation Bug with egcs-1.0.2


Hi,

there is a problem code generation problem with the current egcs C++ 
compiler: some code gets generated more than once. The following sample 
file should be enough to illustrate the problem:

------------------------------ cut here ------------------------------
#include <string>

class A {
public:
    typedef enum {
	VAL1, VAL2, VAL3
    } result_t;

    static result_t afun(void);
};

A::result_t
A::afun(void) 
{
    return VAL1;
}

class B {
public:
    typedef enum {
	VAL4, VAL5, VAL6
    }
    result_t;

    static result_t bfun(void);
};

B::result_t
B::bfun(void)
{
    return VAL4;
}

int
main(int argc, char *argv[])
{
    if (A::afun() != A::VAL1 || B::bfun() != B::VAL4)
	return 1;
    return 0;
}
------------------------------ cut here ------------------------------

If the file is called symtest.cc compiling it results in the following
error:

> g++ symtest.cc -o symtest
symtest.cc:131:FATAL:Symbol ___ne__H1Z8result_t_RCX01T0_b already defined.
> g++ -v
Reading specs from /home/egcs-1.0.2/lib/gcc-lib/i386-pc-bsdi2.1/egcs-2.90.27/specs
gcc version egcs-2.90.27 980315 (egcs-1.0.2 release)

If you leave out the #include <string> everything is fine, so there is
something in the standard library that causes the effect.

The example should reproduce the problem on any platform, but if there
is anything I can do to help track down the problem, just ask.

Bye, Rolf.


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