|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2003-06-02 09:01:54
I just checked in changes to the intel-win32-tools.jam file which
enable argument-dependent lookup for all versions, since we were were
incorrectly operating as though it was enabled for v7.1 anyway. I
think we are still out-of-synch with the config, though. The config
for the intel compiler contains:
# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
// Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup
// in the frontend even in "strict" mode, unless you use
// -Qoption,cpp,--arg_dep_lookup. (reported by Kirk Klobe & Thomas Witt)
// Similarly, -Qoption,cpp,--new_for_init enables new-style "for" loop
// variable scoping. (reported by Thomas Witt)
// Intel C++ 6.0 (currently in Beta test) doesn't have any front-end
// changes at all. (reported by Kirk Klobe)
// That can't be right, since it supports template template
// arguments (reported by Dave Abrahams)
# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# endif
# define BOOST_NO_SWPRINTF
# endif
I have two questions about this:
1. Is there a reason we're checking _MSC_VER here?
2. Can we just eliminate the #define for
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP?
I ran the config tests for intel 5,6,7 and got the following
interesting results, but I am at a loss to interpret them. Do the
link errors with Intel7 mean that we failed to get the whchar_t
support settings right? Some of those symbols only deal with char,
so...
What does it mean that intel5,6 still report
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP? I don't know what to do with
this information.
myjam -sTOOLS="intel5 intel6 intel7" --verbose-test config
...
vc-C++ c:\build\status\bin\config_test.test\intel5\debug\runtime-link-dynamic\threading-multi\config_test.obj
config_test.cpp
c:\\boost\\libs/config/test/boost_no_excep_std.cxx(18): error: namespace "std" has no member "terminate"
std::terminate();
^
compilation aborted for c:\boost\libs/config/test/config_test.cpp (code 2)
execute-test c:\build\status\bin\config_test.test\intel6\debug\runtime-link-dynamic\threading-multi\config_test.run
1 file(s) copied.
====== BEGIN OUTPUT ======
*** No errors detected
====== END OUTPUT ======
vc-Link c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe
xilink: executing 'link'
Creating library c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.lib and object c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exp
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<char,1>::intl" (?intl@?$moneypunct_at_D$00_at_std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<char,0>::intl" (?intl@?$moneypunct_at_D$0A@@std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<wchar_t,1>::intl" (?intl@?$moneypunct@_W$00_at_std@@2_NB)
config_test.exp : error LNK2001: unresolved external symbol "public: static bool const std::moneypunct<wchar_t,0>::intl" (?intl@?$moneypunct@_W$0A@@std@@2_NB)
c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe : fatal error LNK1120: 4 unresolved externals
CALL "c:/tools/intel/compiler70/ia32/bin/ICCVARS.BAT" > nul
"c:/tools/intel/compiler70/ia32/bin/xilink" /nologo /DEBUG /subsystem:console /out:"c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe" @"c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.CMD"
...failed vc-Link c:\build\status\bin\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi\config_test.exe...
...skipped <status\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi>config_test.run for lack of <status\config_test.test\intel7\debug\runtime-link-dynamic\threading-multi>config_test.exe...
...
execute-test c:\build\status\bin\config_info.test\intel5\debug\runtime-link-dynamic\config_info.run
1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 500
_CPPUNWIND =1
__cplusplus =1
_M_IX86 =600
_WIN32 =1
_WCHAR_T_DEFINED [no value]
_CPPRTTI =1
_DLL =1
_MSC_EXTENSIONS =1
_MSC_VER =1200
_MT =1
__EXCEPTIONS =1
__EDG__ =1
__EDG_VERSION__ =245
__SIGNED_CHARS__ =1
__ARRAY_OPERATORS =1
__BOOL_DEFINED =1
__RTTI =1
__PLACEMENT_DELETE =1
__ICL =500
__INTEL_COMPILER =500
*********************************************************************
Dinkumware standard library version 1.x
*********************************************************************
Detected Platform: Win32
Type char is signed
Type wchar_t is unsigned
byte order for type short =0 8
byte order for type int =0 8 16 24
byte order for type long =0 8 16 24
sizeof(wchar_t) =2
sizeof(short) =2
sizeof(int) =4
sizeof(long) =4
sizeof(float) =4
sizeof(double) =8
sizeof(long double) =8
CHAR_BIT =8
CHAR_MAX =127
WCHAR_MAX =((wchar_t)-1)
SHRT_MAX =32767
INT_MAX =2147483647
LONG_MAX =2147483647L
*********************************************************************
Boost version 103100
BOOST_USER_CONFIG =<boost/config/user.hpp>
BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
BOOST_DEDUCED_TYPENAME =typename
BOOST_HAS_FTIME [no value]
BOOST_HAS_LONG_LONG [no value]
BOOST_HAS_MACRO_USE_FACET [no value]
BOOST_HAS_MS_INT64 [no value]
BOOST_HAS_THREADS [no value]
BOOST_HAS_WINTHREADS [no value]
BOOST_INTEL =500
BOOST_MSVC_STD_ITERATOR =1
BOOST_MSVC6_MEMBER_TEMPLATES [no value]
BOOST_NESTED_TEMPLATE =template
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP [no value]
BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS [no value]
BOOST_NO_HASH [no value]
BOOST_NO_INTEGRAL_INT64_T [no value]
BOOST_NO_INTRINSIC_WCHAR_T [no value]
BOOST_NO_MS_INT64_NUMERIC_LIMITS [no value]
BOOST_NO_SLIST [no value]
BOOST_NO_STD_ALLOCATOR [no value]
BOOST_NO_STD_ITERATOR [no value]
BOOST_NO_STD_ITERATOR_TRAITS [no value]
BOOST_NO_STD_MIN_MAX [no value]
BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN [no value]
BOOST_NO_STD_USE_FACET [no value]
BOOST_NO_STDC_NAMESPACE [no value]
BOOST_NO_SWPRINTF [no value]
BOOST_NO_TEMPLATE_TEMPLATES [no value]
BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS [no value]
BOOST_NO_VOID_RETURNS [no value]
BOOST_STD_EXTENSION_NAMESPACE =std
BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel5\debug\runtime-link-dynamic\config_info.test
...
execute-test c:\build\status\bin\config_info.test\intel6\debug\runtime-link-dynamic\config_info.run
1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 600
_CPPUNWIND =1
__cplusplus =1
_M_IX86 =600
_WIN32 =1
_CPPRTTI =1
_DLL =1
_MSC_EXTENSIONS =1
_MSC_VER =1300
_MT =1
_NATIVE_WCHAR_T_DEFINED =1
__EXCEPTIONS =1
__EDG__ =1
__EDG_VERSION__ =245
__SIGNED_CHARS__ =1
__ARRAY_OPERATORS =1
__BOOL_DEFINED =1
__RTTI =1
__PLACEMENT_DELETE =1
__ICL =600
__INTEL_COMPILER =600
*********************************************************************
Dinkumware standard library version 310
_CPPLIB_VER =310
_HAS_EXCEPTIONS =1
_HAS_TEMPLATE_PARTIAL_ORDERING =0
*********************************************************************
Detected Platform: Win32
Type char is signed
Type wchar_t is unsigned
byte order for type short =0 8
byte order for type int =0 8 16 24
byte order for type long =0 8 16 24
sizeof(wchar_t) =2
sizeof(short) =2
sizeof(int) =4
sizeof(long) =4
sizeof(float) =4
sizeof(double) =8
sizeof(long double) =8
CHAR_BIT =8
CHAR_MAX =127
WCHAR_MAX =((wchar_t)-1)
SHRT_MAX =32767
INT_MAX =2147483647
LONG_MAX =2147483647L
*********************************************************************
Boost version 103100
BOOST_USER_CONFIG =<boost/config/user.hpp>
BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
BOOST_DEDUCED_TYPENAME =typename
BOOST_HAS_FTIME [no value]
BOOST_HAS_LONG_LONG [no value]
BOOST_HAS_MS_INT64 [no value]
BOOST_HAS_NRVO [no value]
BOOST_HAS_PARTIAL_STD_ALLOCATOR [no value]
BOOST_HAS_THREADS [no value]
BOOST_HAS_WINTHREADS [no value]
BOOST_INTEL =600
BOOST_MSVC6_MEMBER_TEMPLATES [no value]
BOOST_NESTED_TEMPLATE =template
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP [no value]
BOOST_NO_HASH [no value]
BOOST_NO_SLIST [no value]
BOOST_NO_STD_ITERATOR_TRAITS [no value]
BOOST_NO_STD_LOCALE [no value]
BOOST_NO_STD_MESSAGES [no value]
BOOST_NO_STD_USE_FACET [no value]
BOOST_NO_STD_WSTREAMBUF [no value]
BOOST_NO_SWPRINTF [no value]
BOOST_STD_EXTENSION_NAMESPACE =std
BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel6\debug\runtime-link-dynamic\config_info.test
...
execute-test c:\build\status\bin\config_info.test\intel7\debug\runtime-link-dynamic\config_info.run
1 file(s) copied.
====== BEGIN OUTPUT ======
Intel C++ version 700
_CPPUNWIND =1
__cplusplus =1
_M_IX86 =700
_WIN32 =1
_CPPRTTI =1
_DLL =1
_MSC_EXTENSIONS =1
_MSC_VER =1310
_MT =1
_NATIVE_WCHAR_T_DEFINED =1
__EXCEPTIONS =1
__EDG__ =1
__EDG_VERSION__ =300
__SIGNED_CHARS__ =1
__ARRAY_OPERATORS =1
__BOOL_DEFINED =1
__RTTI =1
__PLACEMENT_DELETE =1
__ICL =700
__INTEL_COMPILER =700
*********************************************************************
Dinkumware standard library version 313
_CPPLIB_VER =313
_GLOBAL_USING =1
_HAS_EXCEPTIONS =1
*********************************************************************
Detected Platform: Win32
Type char is signed
Type wchar_t is unsigned
byte order for type short =0 8
byte order for type int =0 8 16 24
byte order for type long =0 8 16 24
sizeof(wchar_t) =2
sizeof(short) =2
sizeof(int) =4
sizeof(long) =4
sizeof(float) =4
sizeof(double) =8
sizeof(long double) =8
CHAR_BIT =8
CHAR_MAX =127
WCHAR_MAX =((wchar_t)-1)
SHRT_MAX =32767
INT_MAX =2147483647
LONG_MAX =2147483647L
LLONG_MAX =0x7fffffffffffffff
ULLONG_MAX =0xffffffffffffffff
*********************************************************************
Boost version 103100
BOOST_USER_CONFIG =<boost/config/user.hpp>
BOOST_COMPILER_CONFIG ="boost/config/compiler/intel.hpp"
BOOST_STDLIB_CONFIG ="boost/config/stdlib/dinkumware.hpp"
BOOST_PLATFORM_CONFIG ="boost/config/platform/win32.hpp"
BOOST_DEDUCED_TYPENAME =typename
BOOST_HAS_FTIME [no value]
BOOST_HAS_LONG_LONG [no value]
BOOST_HAS_MS_INT64 [no value]
BOOST_HAS_NRVO [no value]
BOOST_HAS_PARTIAL_STD_ALLOCATOR [no value]
BOOST_HAS_THREADS [no value]
BOOST_HAS_WINTHREADS [no value]
BOOST_INTEL =700
BOOST_MSVC6_MEMBER_TEMPLATES [no value]
BOOST_NESTED_TEMPLATE =template
BOOST_NO_HASH [no value]
BOOST_NO_SLIST [no value]
BOOST_NO_SWPRINTF [no value]
BOOST_STD_EXTENSION_NAMESPACE =std
BOOST_UNREACHABLE_RETURN(0) [no value]
====== END OUTPUT ======
**passed** c:\build\status\bin\config_info.test\intel7\debug\runtime-link-dynamic\config_info.test
vc-C++ c:\build\status\bin\limits_test.test\intel5\debug\runtime-link-dynamic\limits_test.obj
limits_test.cpp
c:\\boost\\libs/config/test/limits_test.cpp(68): error: more than one operator "<<" matches these operands:
function "std::basic_ostream<_E, _Tr>::operator<<(std::_Bool={bool={bool}}) [with _E=char, _Tr=std::char_traits<char>]"
<snip>
operand types are: std::basic_ostream<char, std::char_traits<char>> << __int64
<< " min: " << make_char_numeric_for_streaming(lim::min())
^
detected during instantiation of "void test_integral_limits(const T &, const char *) [with T=__int64]"
...failed vc-C++
c:\build\status\bin\limits_test.test\intel5\debug\runtime-link-dynamic\limits_test.obj...
execute-test c:\build\status\bin\limits_test.test\intel6\debug\runtime-link-dynamic\limits_test.run
1 file(s) copied.
====== BEGIN OUTPUT ======
Testing bool (size 1) min: 0, max: 1
Testing char (size 1) min: -128, max: 127
Testing signed char (size 1) min: -128, max: 127
Testing unsigned char (size 1) min: 0, max: 255
Testing wchar_t (size 2) min: 0, max: 65535
Testing short (size 2) min: -32768, max: 32767
Testing unsigned short (size 2) min: 0, max: 65535
Testing int (size 4) min: -2147483648, max: 2147483647
Testing unsigned int (size 4) min: 0, max: 4294967295
Testing long (size 4) min: -2147483648, max: 2147483647
Testing unsigned long (size 4) min: 0, max: 4294967295
Testing long long (size 8) min: -9223372036854775808, max: 9223372036854775807
Testing unsigned long long (size 8) min: 0, max: 18446744073709551615
Testing __int64 (size 8) min: -9223372036854775808, max: 9223372036854775807
Testing unsigned __int64 (size 8) min: 0, max: 18446744073709551615
Testing float
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 1.17549e-038, max: 3.40282e+038
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffff7f7f
hex value of infinity is: 0000807f
hex value of qnan is: 0000c0ff
hex value of snan is: 0000c0ff
Testing double
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 2.22507e-308, max: 1.79769e+308
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffffffffffffef7f
hex value of infinity is: 000000000000f07f
hex value of qnan is: 000000000000f8ff
hex value of snan is: 000000000000f8ff
Testing long double
IEEE-compatible: 1, traps: 1, bounded: 1, exact: 0
min: 2.22507e-308, max: 1.79769e+308
infinity: 1.#INF, QNaN: -1.#IND
hex value of max is: ffffffffffffef7f
hex value of infinity is: 000000000000f07f
hex value of qnan is: 000000000000f8ff
hex value of snan is: 000000000000f8ff
*** No errors detected
====== END OUTPUT ======
**passed** c:\build\status\bin\limits_test.test\intel6\debug\runtime-link-dynamic\limits_test.test
...failed updating 3 targets...
...skipped 10 targets...
...updated 117 targets...
Compilation exited abnormally with code 1 at Mon Jun 02 09:46:00
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk