This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
internal compiler error 364 + STL function adaptors
- To: egcs-bugs at cygnus dot com
- Subject: internal compiler error 364 + STL function adaptors
- From: Christian Eckes <ceckes at neuroinformatik dot ruhr-uni-bochum dot de>
- Date: Fri, 29 May 1998 14:35:55 +0200
- cc: flavor-update at fsnif dot neuroinformatik dot ruhr-uni-bochum dot de
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
*/