Hi Help!
cc1plus is coredump only for GCC 3.4.2 1) BAD See Node_gcc342.cc Node_gcc342.ii $ g++ -v -save-temps -O0 -o Node_gcc342 Node_gcc342.cc Using built-in specs. Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 3.4.2 [FreeBSD] 20040728 /usr/libexec/cc1plus -E -quiet -v -D_LONGLONG Node_gcc342.cc -O0 -o Node_gcc342.ii ignoring duplicate directory "/usr/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/3.4 /usr/include/c++/3.4/backward /usr/include End of search list. /usr/libexec/cc1plus -fpreprocessed Node_gcc342.ii -quiet -dumpbase Node_gcc342.cc -auxbase Node_gcc342 -O0 -version -o Node_gcc342.s GNU C++ version 3.4.2 [FreeBSD] 20040728 (i386-fbsdproj-freebsd) compiled by GNU C version 3.4.2 [FreeBSD] 20040728. GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 g++: Internal error: Illegal instruction (program cc1plus) Please submit a full bug report. See <URL:http://gcc.gnu.org/bugs.html> for instructions. 2) Good On GCC 3.3.3 - compile is Ok See Node_gcc333.cc Node_gcc333.ii $ g++ -v -save-temps -O0 -o Node_gcc333 Node_gcc333.cc Using built-in specs. Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 3.3.3 [FreeBSD] 20031106 /usr/libexec/cc1plus -E -D__GNUG__=3 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3 -D_LONGLONG Node_gcc333.cc -O0 Node_gcc333.ii ignoring duplicate directory "/usr/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/3.3 /usr/include/c++/3.3/backward /usr/include End of search list. /usr/libexec/cc1plus -fpreprocessed Node_gcc333.ii -quiet -dumpbase Node_gcc333.cc -auxbase Node_gcc333 -O0 -version -o Node_gcc333.s GNU C++ version 3.3.3 [FreeBSD] 20031106 (i386-undermydesk-freebsd) compiled by GNU C version 3.3.3 [FreeBSD] 20031106. GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 /usr/bin/as -v -o Node_gcc333.o Node_gcc333.s GNU assembler version 2.13.2 [FreeBSD] 2002-11-27 (i386-obrien-freebsd5) using BFD version 2.13.2 [FreeBSD] 2002-11-27 /usr/bin/ld -V -dynamic-linker /libexec/ld-elf.so.1 -o Node_gcc333 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib Node_gcc333.o -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o GNU ld version 2.13.2 [FreeBSD] 2002-11-27 Supported emulations: elf_i386_fbsd Please help %-) -- System Administrator RMTelecom Andrey M Linkevich NOC
extern "C" { void bcopy(const void *, void *, int); } class TestNodeKey; class TestNodeValue; template <typename T> class NodePart { public: NodePart(void); NodePart(const NodePart<T>& Src); }; template <typename T> inline NodePart<T>::NodePart(void) { } template <typename T> inline NodePart<T>::NodePart(const NodePart<T>& Src) { ::bcopy(&Src, this, sizeof(T)); } class TestNodeKey : public NodePart<TestNodeKey> { public: char C __attribute__ ((packed)); }; class TestNodeValue : public NodePart<TestNodeValue> { public: long L __attribute__ ((packed)); }; template <typename K, typename V> class Node { public: K Key __attribute__ ((packed)); V Value __attribute__ ((packed)); Node(void); Node(const Node<K, V>& Src); }; template <typename K, typename V> inline Node<K, V>::Node(void) { } template <typename K, typename V> inline Node<K, V>::Node(const Node<K, V>& Src) { this->Key = Src.Key; this->Value = Src.Value; } class TestNode : public Node<TestNodeKey, TestNodeValue> { public: }; int main (int ArgC, char* ArgV[]) { TestNode TN1; TestNode TN2 = TN1; // TestNode TN2; // TN2 = TN1; return 0; }
# 1 "Node_gcc342.cc" # 1 "<built-in>" # 1 "<command line>" # 1 "Node_gcc342.cc" extern "C" { void bcopy(const void *, void *, int); } template <typename T> class NodePart { public: NodePart(void); NodePart(const NodePart<T>& Src); }; template <typename T> inline NodePart<T>::NodePart(void) { } template <typename T> inline NodePart<T>::NodePart(const NodePart<T>& Src) { ::bcopy(&Src, this, sizeof(T)); } class TestNodeKey : public NodePart<TestNodeKey> { public: char C __attribute__ ((packed)); }; class TestNodeValue : public NodePart<TestNodeValue> { public: long L __attribute__ ((packed)); }; template <typename K, typename V> class Node { public: K Key __attribute__ ((packed)); V Value __attribute__ ((packed)); Node(void); Node(const Node<K, V>& Src); }; template <typename K, typename V> inline Node<K, V>::Node(void) { } template <typename K, typename V> inline Node<K, V>::Node(const Node<K, V>& Src) { this->Key = Src.Key; this->Value = Src.Value; } class TestNode : public Node<TestNodeKey, TestNodeValue> { public: }; int main (int ArgC, char* ArgV[]) { TestNode TN1; TestNode TN2 = TN1; return 0; }
extern "C" { void bcopy(const void *, void *, int); } class TestNodeKey; class TestNodeValue; template <typename T> class NodePart { public: NodePart(void); NodePart(const NodePart<T>& Src); }; template <typename T> inline NodePart<T>::NodePart(void) { } template <typename T> inline NodePart<T>::NodePart(const NodePart<T>& Src) { ::bcopy(&Src, this, sizeof(T)); } class TestNodeKey : public NodePart<TestNodeKey> { public: char C __attribute__ ((packed)); }; class TestNodeValue : public NodePart<TestNodeValue> { public: long L __attribute__ ((packed)); }; template <typename K, typename V> class Node { public: K Key __attribute__ ((packed)); V Value __attribute__ ((packed)); Node(void); Node(const Node<K, V>& Src); }; template <typename K, typename V> inline Node<K, V>::Node(void) { } template <typename K, typename V> inline Node<K, V>::Node(const Node<K, V>& Src) { this->Key = Src.Key; this->Value = Src.Value; } class TestNode : public Node<TestNodeKey, TestNodeValue> { public: }; int main (int ArgC, char* ArgV[]) { TestNode TN1; TestNode TN2 = TN1; // TestNode TN2; // TN2 = TN1; return 0; }
# 1 "Node_gcc333.cc" # 1 "<built-in>" # 1 "<command line>" # 1 "Node_gcc333.cc" extern "C" { void bcopy(const void *, void *, int); } class TestNodeKey; class TestNodeValue; template <typename T> class NodePart { public: NodePart(void); NodePart(const NodePart<T>& Src); }; template <typename T> inline NodePart<T>::NodePart(void) { } template <typename T> inline NodePart<T>::NodePart(const NodePart<T>& Src) { ::bcopy(&Src, this, sizeof(T)); } class TestNodeKey : public NodePart<TestNodeKey> { public: char C __attribute__ ((packed)); }; class TestNodeValue : public NodePart<TestNodeValue> { public: long L __attribute__ ((packed)); }; template <typename K, typename V> class Node { public: K Key __attribute__ ((packed)); V Value __attribute__ ((packed)); Node(void); Node(const Node<K, V>& Src); }; template <typename K, typename V> inline Node<K, V>::Node(void) { } template <typename K, typename V> inline Node<K, V>::Node(const Node<K, V>& Src) { this->Key = Src.Key; this->Value = Src.Value; } class TestNode : public Node<TestNodeKey, TestNodeValue> { public: }; int main (int ArgC, char* ArgV[]) { TestNode TN1; TestNode TN2 = TN1; return 0; }
.file "Node_gcc333.cc" .text .p2align 1,0x90 .p2align 2,,3 .globl main .type main, @function main: .LFB31: pushl %ebp .LCFI0: movl %esp, %ebp .LCFI1: subl $40, %esp .LCFI2: andl $-16, %esp movl $0, %eax subl %eax, %esp subl $12, %esp leal -24(%ebp), %eax pushl %eax .LCFI3: call _ZN8TestNodeC1Ev addl $16, %esp subl $8, %esp leal -24(%ebp), %eax pushl %eax leal -40(%ebp), %eax pushl %eax call _ZN8TestNodeC1ERKS_ addl $16, %esp movl $0, %eax leave ret .LFE31: .size main, .-main .section .gnu.linkonce.t._ZN8TestNodeC1Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN8TestNodeC1Ev .type _ZN8TestNodeC1Ev, @function _ZN8TestNodeC1Ev: .LFB32: pushl %ebp .LCFI4: movl %esp, %ebp .LCFI5: subl $8, %esp .LCFI6: subl $12, %esp pushl 8(%ebp) .LCFI7: call _ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev addl $16, %esp leave ret .LFE32: .size _ZN8TestNodeC1Ev, .-_ZN8TestNodeC1Ev .section .gnu.linkonce.t._ZN8TestNodeC1ERKS_,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN8TestNodeC1ERKS_ .type _ZN8TestNodeC1ERKS_, @function _ZN8TestNodeC1ERKS_: .LFB33: pushl %ebp .LCFI8: movl %esp, %ebp .LCFI9: subl $8, %esp .LCFI10: subl $8, %esp pushl 12(%ebp) pushl 8(%ebp) .LCFI11: call _ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_ addl $16, %esp leave ret .LFE33: .size _ZN8TestNodeC1ERKS_, .-_ZN8TestNodeC1ERKS_ .section .gnu.linkonce.t._ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev .type _ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev, @function _ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev: .LFB34: pushl %ebp .LCFI12: movl %esp, %ebp .LCFI13: subl $8, %esp .LCFI14: subl $12, %esp pushl 8(%ebp) .LCFI15: call _ZN11TestNodeKeyC1Ev addl $16, %esp subl $12, %esp movl 8(%ebp), %eax incl %eax pushl %eax call _ZN13TestNodeValueC1Ev addl $16, %esp leave ret .LFE34: .size _ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev, .-_ZN4NodeI11TestNodeKey13TestNodeValueEC2Ev .section .gnu.linkonce.t._ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_ .type _ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_, @function _ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_: .LFB35: pushl %ebp .LCFI16: movl %esp, %ebp .LCFI17: subl $8, %esp .LCFI18: subl $12, %esp pushl 8(%ebp) .LCFI19: call _ZN11TestNodeKeyC1Ev addl $16, %esp subl $12, %esp movl 8(%ebp), %eax incl %eax pushl %eax call _ZN13TestNodeValueC1Ev addl $16, %esp movl 8(%ebp), %edx movl 12(%ebp), %eax movb (%eax), %al movb %al, (%edx) movl 8(%ebp), %edx incl %edx movl 12(%ebp), %eax incl %eax movl (%eax), %eax movl %eax, (%edx) leave ret .LFE35: .size _ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_, .-_ZN4NodeI11TestNodeKey13TestNodeValueEC2ERKS2_ .section .gnu.linkonce.t._ZN11TestNodeKeyC1Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN11TestNodeKeyC1Ev .type _ZN11TestNodeKeyC1Ev, @function _ZN11TestNodeKeyC1Ev: .LFB36: pushl %ebp .LCFI20: movl %esp, %ebp .LCFI21: subl $8, %esp .LCFI22: subl $12, %esp pushl 8(%ebp) .LCFI23: call _ZN8NodePartI11TestNodeKeyEC2Ev addl $16, %esp leave ret .LFE36: .size _ZN11TestNodeKeyC1Ev, .-_ZN11TestNodeKeyC1Ev .section .gnu.linkonce.t._ZN13TestNodeValueC1Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN13TestNodeValueC1Ev .type _ZN13TestNodeValueC1Ev, @function _ZN13TestNodeValueC1Ev: .LFB37: pushl %ebp .LCFI24: movl %esp, %ebp .LCFI25: subl $8, %esp .LCFI26: subl $12, %esp pushl 8(%ebp) .LCFI27: call _ZN8NodePartI13TestNodeValueEC2Ev addl $16, %esp leave ret .LFE37: .size _ZN13TestNodeValueC1Ev, .-_ZN13TestNodeValueC1Ev .section .gnu.linkonce.t._ZN8NodePartI11TestNodeKeyEC2Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN8NodePartI11TestNodeKeyEC2Ev .type _ZN8NodePartI11TestNodeKeyEC2Ev, @function _ZN8NodePartI11TestNodeKeyEC2Ev: .LFB38: pushl %ebp .LCFI28: movl %esp, %ebp .LCFI29: leave ret .LFE38: .size _ZN8NodePartI11TestNodeKeyEC2Ev, .-_ZN8NodePartI11TestNodeKeyEC2Ev .section .gnu.linkonce.t._ZN8NodePartI13TestNodeValueEC2Ev,"ax",@progbits .p2align 1 .p2align 2,,3 .weak _ZN8NodePartI13TestNodeValueEC2Ev .type _ZN8NodePartI13TestNodeValueEC2Ev, @function _ZN8NodePartI13TestNodeValueEC2Ev: .LFB39: pushl %ebp .LCFI30: movl %esp, %ebp .LCFI31: leave ret .LFE39: .size _ZN8NodePartI13TestNodeValueEC2Ev, .-_ZN8NodePartI13TestNodeValueEC2Ev .ident "GCC: (GNU) 3.3.3 [FreeBSD] 20031106"