[v3] c++0x includes

Paolo Carlini pcarlini@suse.de
Tue Mar 6 09:56:00 GMT 2007


Hi Kaveh,

>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:227: error: '::llrint' has not been declared
>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:228: error: '::llrintf' has not been declared
>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:229: error: '::llrintl' has not been declared
>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:231: error: '::llround' has not been declared
>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:232: error: '::llroundf' has not been declared
>>.../sparc-sun-solaris2.10/libstdc++-v3/include/tr1/cmath:233: error: '::llroundl' has not been declared
>>    
>>
The strange thing is that, as you can see a few lines above in that 
file, that code is protected by _GLIBCXX_USE_C99_MATH_TR1, which, in 
turn, is defined only if the specific GLIBCXX_CHECK_C99_TR1 test 
succeeds at configure time.

Therefore, I'd ask you to figure out what is going wrong on solaris in 
that chain: apparently _GLIBCXX_USE_C99_MATH_TR1 is defined but llrint & 
co are then not available during the compilation of the testcase. For 
instance, can you try to build / install the C++ compiler normally and 
then try to compile simple C++ snippets like:

#include <tr1/cmath>
// #include <cmath>
// #include <cmath> + -std=c++0x on the command line

#ifdef _GLIBCXX_USE_C99_MATH_TR1

using ::llrint;

#else

#error Not defined on Solaris?!?

#endif

One final question: why 
testsuite/tr1/8_c_compatibility/cmath/functions.cc is not failing, on 
your target (you could investigate the compilation of that too outside 
the testsuite)?

Thanks,
Paolo.



More information about the Libstdc++ mailing list