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]

internal compiler error 364 + STL function adaptors


Hi,

I have problems with this testprogram using stl's function adapters. Even if 
this pice of code is not valid, the compiler should tell me more than
'Internal compiler error  364'. It works with the simple call-by-value
version but not with references or const-references as function arguments ...

Best,
Christian
------------------------------------------------------------------------------
Christian Eckes * Institut f"ur Neuroinformatik           Tel. +49-234 7007845
Ruhr-Universit"at Bochum * Germany                        FAX. +49-234 7094210
WWW: http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/ceckes/top.html

///////////////////////
/////////////////////// Function call-by-ref: ERRROR 364
///////////////////////


#include <stl.h>

bool compare(int& a1,int& a2)
{
	return (a1 == a2);
};

void main()
{
	vector<int> iVector;
	int         i = 2;

	iVector.push_back(1);
	iVector.push_back(2);

	vector<int>::iterator iterL;

	iterL = find_if(iVector.begin(),
			iVector.end(),
			bind2nd(ptr_fun(compare),i));

	if (iterL==iVector.end()) cout << "Nothing found" << endl;
	else  cout << *iterL << endl;
}

/*
isko(p)|ce>g++ -v bind2nd_cbr.cc -o bind2nd_cbr
Reading specs from /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) bind2nd_cbr.cc /var/tmp/ccR11ha_.ii
GNU CPP version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /opt/gnu/include/g++
 /opt/gnu/lib/g++-include
 /opt/gnu/include
 /opt/gnu/sparc-sun-solaris2.6/include
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/include
 /usr/include
End of search list.
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cc1plus /var/tmp/ccR11ha_.ii -quiet -dumpbase bind2nd_cbr.cc -version -o /var/tmp/ccR11ha_.s
GNU C++ version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release).
/opt/gnu/include/g++/stl_function.h: In method `bool binder2nd<pointer_to_binary_function<int &,int &,bool> >::operator ()(int &const &) const':
/opt/gnu/include/g++/stl_function.h:201: Internal compiler error 364.
/opt/gnu/include/g++/stl_function.h:201: Please submit a full bug report to `egcs-bugs@cygnus.com'.
*/

///////////////////////
/////////////////////// Function call-by-const-ref: ERROR 364
///////////////////////


// bind2nd_cbcr.cc:

#include <stl.h>

bool compare(const int& a1,const int& a2)
{
	return (a1 == a2);
};

void main()
{
	vector<int> iVector;
	int         i = 2;

	iVector.push_back(1);
	iVector.push_back(2);

	vector<int>::iterator iterL;

	iterL = find_if(iVector.begin(),
			iVector.end(),
			bind2nd(ptr_fun(compare),i));

	if (iterL==iVector.end()) cout << "Nothing found" << endl;
	else  cout << *iterL << endl;
}

/*
isko(p)|ce>g++ -v bind2nd_cbcr.cc -o bind2nd_cbcr
Reading specs from /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) bind2nd_cbcr.cc /var/tmp/cc.3PZq_.ii
GNU CPP version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /opt/gnu/include/g++
 /opt/gnu/lib/g++-include
 /opt/gnu/include
 /opt/gnu/sparc-sun-solaris2.6/include
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/include
 /usr/include
End of search list.
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cc1plus /var/tmp/cc.3PZq_.ii -quiet -dumpbase bind2nd_cbcr.cc -version -o /var/tmp/cc.3PZq_.s
GNU C++ version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release).
/opt/gnu/include/g++/stl_function.h: In method `bool binder2nd<pointer_to_binary_function<const int &,const int &,bool> >::operator ()(const int &const &) const':
/opt/gnu/include/g++/stl_function.h:201: Internal compiler error 364.
/opt/gnu/include/g++/stl_function.h:201: Please submit a full bug report to `egcs-bugs@cygnus.com'.
8*/

///////////////////////
/////////////////////// Function call-by-value: THIS WORKS !
///////////////////////

// bind2nd_cbv.cc:

#include <stl.h>

bool compare(int a1,int a2)
{
	return (a1 == a2);
};

void main()
{
	vector<int> iVector;
	int         i = 2;

	iVector.push_back(1);
	iVector.push_back(2);

	vector<int>::iterator iterL;

	iterL = find_if(iVector.begin(),
			iVector.end(),
			bind2nd(ptr_fun(compare),i));

	if (iterL==iVector.end()) cout << "Nothing found" << endl;
	else  cout << *iterL << endl;
}

/*
isko(p)|ce>g++ -v bind2nd_cbv.cc -o bind2nd_cbv
Reading specs from /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) bind2nd_cbv.cc /var/tmp/cc0UCCyM.ii
GNU CPP version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /opt/gnu/include/g++
 /opt/gnu/lib/g++-include
 /opt/gnu/include
 /opt/gnu/sparc-sun-solaris2.6/include
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/include
 /usr/include
End of search list.
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/cc1plus /var/tmp/cc0UCCyM.ii -quiet -dumpbase bind2nd_cbv.cc -version -o /var/tmp/cc0UCCyM.s
GNU C++ version egcs-2.90.29 980515 (egcs-1.0.3 release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release).
 /usr/ccs/bin/as -V -Qy -s -o /var/tmp/cc0UCCyM1.o /var/tmp/cc0UCCyM.s
/usr/ccs/bin/as: WorkShop Compilers 4.X dev 18 Sep 1996
 /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/ld -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o bind2nd_cbv /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/crt1.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/crti.o /usr/ccs/lib/values-Xa.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/crtbegin.o -L/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29 -L/opt/gnu/sparc-sun-solaris2.6/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/opt/gnu/lib /var/tmp/cc0UCCyM1.o -lstdc++ -lm -lgcc -lc -lgcc /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/crtend.o /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.90.29/crtn.o
ld: Software Generation Utilities - Solaris/ELF (3.0)
isko(p)|ce>./bind2nd_cbv
2
*/




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