ojr@itk.unit.no (07/04/89)
I'm not quite sure if this is a bug, but anyway:
If I use typedefs in enum declaration the compiler has problems when
generating overloaded function symbols. The problem goes away if I use
an enum declaration of the type:
enum e1 {e11, e12};
-----------------------------------------------
Configuaration:
config.g++ sun3-os4
g++ version 1.35.1-
SUN3
SUNOS 4.0.1
-----------------------------------------------
Repeat by:
cat > test1.h <<EOF1
typedef enum { e11, e12 } e1;
EOF1
cat > test2.h << EOF2
typedef enum { e21, e22 } e2;
EOF2
cat > test1.cc << EOF3
#include "test2.h"
void p(e2);
overload func;
void func(e2 i)
{
}
EOF3
cat > test2.cc <<EOF4
#include "test1.h"
#include "test2.h"
overload func;
void func(e2);
main()
{
func(e21);
}
EOF4
cat > doit <<EOF5
g++ -c test1.cc
g++ -c test2.cc
g++ test1.o test2.o
nm test1.o test2.o
EOF5
------------------------------------------------
Running the script gives:
sh doit
test2.o: Undefined symbol _func_E$_1 referenced from text
test1.o:
00000000 T _func_E$_0
00000000 t gcc_compiled.
test2.o:
U _func_E$_1
00000000 T _main
00000000 t gcc_compiled.
Compilation finished at Mon Jul 3 17:56:11
Ornulf Jan Rodseth Telephone
SINTEF Dep. of Automatic Control (+47 7) 594351 Direct
N-7034 TRONDHEIM (+47 7) 594375 Switchboard
NORWAY (+47 7) 594399 Fax
ojr%regtek.unit.uninett@tor.nta.no (EAN) ojr@itk.unit.no (ARPA)