[cfe-dev] Compiling Boost.TypeTraits tests using VC++ RTL

Edward Diener eldlistmailingz at tropicsoft.com
Tue Nov 5 13:42:21 PST 2013


On 11/5/2013 4:20 PM, Hans Wennborg wrote:
> On Tue, Nov 5, 2013 at 10:05 AM, Edward Diener
> <eldlistmailingz at tropicsoft.com> wrote:
>> On 11/5/2013 11:48 AM, Hans Wennborg wrote:
>>>
>>> Hi Edward,
>>>
>>> On Fri, Nov 1, 2013 at 8:57 AM, Edward Diener
>>> <eldlistmailingz at tropicsoft.com> wrote:
>>>>
>>>> If I compile Boost type traits on Windows using VC++ RTL I get:
>>>>
>>>> "add_const_test.cpp"
>>>>
>>>> -Fo"..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj"
>>>> -TP /Od /Ob0 /W4 /GR /MDd  /Zc:forScope /Zc:wchar_t -fmsc-version=1600
>>>> /wd4675 /EHs -c
>>>> -DBOOST_ALL_NO_LIB=1
>>>> "-I..\..\.."
>>>> compile-c-c++
>>>>
>>>> ..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj
>>>>
>>>>       call "C:\Program Files\Microsoft Visual Studio
>>>> 10.0\VC\vcvarsall.bat"
>>>> x86 > nul
>>>>
>>>> "C:\Programming\VersionControl\clang_build\bin\Release\clang-cl.exe"
>>>>
>>>> @"..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj.rsp"
>>>>
>>>> clang-cl.exe: warning: argument unused during compilation: '/EHs'
>>>> error: cannot mangle RTTI descriptors for type 'codecvt' yet
>>>> error: cannot mangle the name of type 'codecvt' into RTTI descriptors yet
>>>> error: cannot mangle RTTI descriptors for type 'codecvt_base' yet
>>>> error: cannot mangle the name of type 'codecvt_base' into RTTI
>>>> descriptors
>>>> yet
>>>> error: cannot mangle RTTI descriptors for type 'facet' yet
>>>> error: cannot mangle the name of type 'facet' into RTTI descriptors yet
>>>> 6 errors generated.""
>>>>
>>>> If I add '-D_HAS_EXCEPTIONS=0 /GR-' as recommended I then get, when
>>>> including 'typeinfo':
>>>>
>>>> ""add_const_test.cpp"
>>>>
>>>> -Fo"..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj"
>>>> -TP /Od /Ob0 /W4 /GR /MDd  /Zc:forScope /Zc:wchar_t -fmsc-version=1600
>>>> /wd4675 /EHs -D_HAS_EXCEPTIONS=0 /EH- /GR- -c
>>>> -DBOOST_ALL_NO_LIB=1
>>>> "-I..\..\.."
>>>> compile-c-c++
>>>>
>>>> ..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj
>>>>
>>>>       call "C:\Program Files\Microsoft Visual Studio
>>>> 10.0\VC\vcvarsall.bat"
>>>> x86 > nul
>>>>
>>>> "C:\Programming\VersionControl\clang_build\bin\Release\clang-cl.exe"
>>>>
>>>> @"..\..\..\bin.v2\libs\type_traits\test\add_const_test.test\clang-vc10-win-3.4\debug\add_const_test.obj.rsp"
>>>>
>>>> clang-cl.exe: warning: argument unused during compilation: '/EHs'
>>>> clang-cl.exe: warning: argument unused during compilation: '/EH-'
>>>> In file included from add_const_test.cpp:7:
>>>> In file included from ./test.hpp:10:
>>>> In file included from ..\..\..\boost/config.hpp:44:
>>>> In file included from ..\..\..\boost/config/stdlib/dinkumware.hpp:89:
>>>> c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\typeinfo(156,10)
>>>> :
>>>> error: unknown class name 'exception'; did you mean '_exception'?
>>>>           : public exception"
>>>>
>>>> Is there a workaround to either of these problems ?
>>>
>>>
>>> It seems the reality here is that clang-cl just cannot compile this
>>> file today. The work-around for that situation is to compile with the
>>> /fallback option [1]. I also just published a blog post about this
>>> [2].
>>>
>>> Hopefully that helps.
>>
>>
>> Even with /fallback specified I am still seeing:
>>
>> error(clang): cannot mangle RTTI descriptors for type 'codecvt' yet
>> error(clang): cannot mangle the name of type 'codecvt' into RTTI descriptors
>> yet
>> error(clang): cannot mangle RTTI descriptors for type 'codecvt_base' yet
>> error(clang): cannot mangle the name of type 'codecvt_base' into RTTI
>> descriptors yet
>> error(clang): cannot mangle RTTI descriptors for type 'facet' yet
>> error(clang): cannot mangle the name of type 'facet' into RTTI descriptors
>> yet
>> error(clang): cannot mangle RTTI descriptors for type '_Facet_base' yet
>> error(clang): cannot mangle the name of type '_Facet_base' into RTTI
>> descriptors yet
>
> Yes, in /fallback mode, clang-cl will still print the errors it
> encounters, but it will then try building with cl.exe afterwards.

You are right, and I did not notice it.

>
>> BTW I see a great deal of:
>>
>> note(clang): expanded from macro 'XXX'
>>
>> in the output when macros are bring expanded. While this may be ordinarily
>> helpful for macro expansion I would like to turn this off by default. How do
>> I do that ?
>
> I don't think Clang has an option to turn these off (others on this
> list please correct me if I'm wrong), but there is an option to limit
> the length of the backtrace: -fmacro-backtrace-limit. This is not
> currently exposed in clang-cl though :/

Please consider some clang-cl option to control this. Voluminous macro 
expansion messages make looking at the output results difficult. I would 
normally want to see warnings/errors and nothing else.





More information about the cfe-dev mailing list