Hi all,
I originally posted these messages to gcc-help, but had no reply, so I am 
re-posting links to them here. 

I think I have found a bug in g++ 4.0.0, but need help in reporting it. 
Maintainers like their bug reports to include short test cases, but I don't 
know how to generate a short test case involving inlining. I discovered the 
original problem by compiling GluCat ( http://glucat.sf.net ) and the 
preprocessor output from a short GluCat test program contains over 66 000 
lines of libstdc++, uBLAS and Glucat code.

Can anyone help, or should I just file a bug report using the huge test case?

The original posts were:

g++ 4.0.0: hash_map hangs when compiled with -O3 on AMD64
http://gcc.gnu.org/ml/gcc-help/2005-05/msg00030.html

Re: g++ 4.0.0: hash_map hangs when compiled with -O3 on AMD64
http://gcc.gnu.org/ml/gcc-help/2005-05/msg00087.html

I am particularly interested in the interference between hash_map, 
-fstrict-aliasing  and -finline-functions, and I wonder if it happens on 
other architectures, or only on AMD64.

Best regards, Paul Leopardi

PS.
If you try compling the current GluCat 0.1.8 using g++ 4.0.0, you will need 
the following patch.

diff 
-u /home/leopardi/src/glucat/glucat-0.1.8/glucat/portability.h ./portability.h
--- /home/leopardi/src/glucat/glucat-0.1.8/glucat/portability.h 2004-05-10 
21:28:42.000000000 +1000
+++ ./portability.h     2005-05-01 22:11:22.000000000 +1000
@@ -28,15 +28,15 @@
 #define ios_base ios // scope is different for standard C++
 #endif

-//***************************** workaround for ICC and G++ 3.3+
-#if defined (__ICL) || defined (__ICC) || defined (__GNUG__) && (__GNUC__ >= 
3) && (__GNUC_MINOR__ >= 3)
+//***************************** workaround for ICC, G++ 3.3+, G++ 4.0+
+#if defined (__ICL) || defined (__ICC) || defined (__GNUG__) && ((__GNUC__ == 
3) && (__GNUC_MINOR__ >= 3) || (__GNUC__ == 4))
 #define _GLUCAT_PRIVATE public
 #else
 #define _GLUCAT_PRIVATE private
 #endif

 //***************************** workaround for G++ 3.2 typename bug
-#if defined (__GNUG__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ <= 2)
+#if defined (__GNUG__) && (__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)
 #define _GLUCAT_USE_STRUCT_NAME(T)
 #else
 #define _GLUCAT_USE_STRUCT_NAME(T) T::

Reply via email to