internal compiler error concerning templates

Malte Knoerr malte@knoerr.escape.de
Tue Mar 7 06:36:00 GMT 2000


Hi,

the following code causes this error (egcs-2.91.66 on SuSE 6.3/Intel):

g++ -v --save-temps template.cpp
Reading specs from /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__ -Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__EXCEPTIONS -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i486__ template.cpp template.ii
GNU CPP version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++
 /usr/lib/g++-include
 /usr/local/include
 /usr/i486-linux/include
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/cc1plus template.ii -quiet -dumpbase template.cc -version -o template.s
GNU C++ version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (i486-linux) compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release).
template.cpp:8: Internal compiler error.
template.cpp:8: Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
template.cpp:8: See <URL: http://egcs.cygnus.com/faq.html#bugreport > for details.

Btw, this URL is not valid, http://gcc.gnu.org/bugs.html is correct.
----
template <class T>
T max(T a, T b)
{
  return a > b ? a : b;
}
 
//template <class T>
T min(T a, T b)
{
  return a < b ? a : b;
//}
 
int main(void)
{
  int x = max (1,2);
  double y = min (0.1,0.2);
}
----

I know that the code is not correct, but the compiler should give a more usefull
message :-)

Thanks,
Malte
# 1 "template.cpp"
template <class T>
T max(T a, T b)
{
	return a > b ? a : b;
}
	 
 
T min(T a, T b)
{
	return a < b ? a : b;
 
		  
int main(void)
{
	int x = max (1,2);
	double y = min (0.1,0.2);
}


More information about the Gcc-bugs mailing list