[cfe-dev] Clang-cl disable exceptions/rtti and macro issue

Kim soldoutseashell at gmail.com
Sun May 4 06:26:04 PDT 2014


Hi guys,

I have a couple of problems while trying to compile my program using 
Clang-cl. First issue, even passing /GR- and Xclang -fno-rtti I get:

                         ^
error: cannot mangle RTTI descriptors for type 'bad_cast' yet
error: cannot mangle the name of type 'bad_cast' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'exception' yet
error: cannot mangle the name of type 'exception' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'bad_cast' yet
error: cannot mangle the name of type 'bad_cast' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'exception' yet
error: cannot mangle the name of type 'exception' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'bad_cast' yet
error: cannot mangle the name of type 'bad_cast' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'exception' yet
error: cannot mangle the name of type 'exception' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'bad_cast' yet
error: cannot mangle the name of type 'bad_cast' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'exception' yet
error: cannot mangle the name of type 'exception' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'bad_cast' yet
error: cannot mangle the name of type 'bad_cast' into RTTI descriptors yet
error: cannot mangle RTTI descriptors for type 'exception' yet
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.

And I can't find a switch for disabling exceptions.




Second problem (I think I've encountered this before and fixed it with 
-fno-delayed-template-parsing, however it doesn't seem to work on 
clang-cl or the argument has since been removed from clang)


In file included from I:\boost_1_55_0\boost/filesystem.hpp:16:
In file included from I:\boost_1_55_0\boost/filesystem/path.hpp:25:
In file included from I:\boost_1_55_0\boost/filesystem/path_traits.hpp:22:
In file included from I:\boost_1_55_0\boost/type_traits/decay.hpp:18:
In file included from I:\boost_1_55_0\boost/mpl/eval_if.hpp:17:
I:\boost_1_55_0\boost/mpl/if.hpp(131,1) :  error: pasting formed 
'BOOST_PP_TUPLE_ELEM_E_2(', an invalid preprocessing token 
[-Winvalid-token-paste]
BOOST_MPL_AUX_NA_SPEC(3, if_)
^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(161,40) :  note: expanded 
from macro 'BOOST_MPL_AUX_NA_SPEC'
#define BOOST_MPL_AUX_NA_SPEC(i, name) \
                                        ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(154,47) :  note: expanded 
from macro '\
BOOST_MPL_AUX_NA_SPEC_NO_ETI'
#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
                                               ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(65,9) :  note: expanded from 
macro '\
BOOST_MPL_AUX_NA_SPEC_MAIN'
         BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
         ^
note: (skipping 5 expansions in backtrace; use -fmacro-backtrace-limit=0 
to see all)
I:\boost_1_55_0\boost/preprocessor/tuple/elem.hpp(36,114) :  note: 
expanded from macro 'BOOST_PP_TUPLE_ELEM'
#        define BOOST_PP_TUPLE_ELEM(size, n, tuple) 
BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), 
BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple))
^
I:\boost_1_55_0\boost/preprocessor/cat.hpp(22,32) :  note: expanded from 
macro 'BOOST_PP_CAT'
#    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
                                ^
I:\boost_1_55_0\boost/preprocessor/cat.hpp(31,55) :  note: expanded from 
macro 'BOOST_PP_CAT_I'
#    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
                                                       ^
In file included from C:\Scripta\libs\Root\ScriptaConfig.cpp:1:
In file included from C:\Scripta\libs\Root/ScriptaConfig.h:2:
In file included from C:\Scripta\libs\Root/ScriptaLogManager.h:38:
In file included from C:\Scripta\libs\Root/Utility.h:4:
In file included from I:\boost_1_55_0\boost/filesystem.hpp:16:
In file included from I:\boost_1_55_0\boost/filesystem/path.hpp:25:
In file included from I:\boost_1_55_0\boost/filesystem/path_traits.hpp:22:
In file included from I:\boost_1_55_0\boost/type_traits/decay.hpp:18:
In file included from I:\boost_1_55_0\boost/mpl/eval_if.hpp:17:
I:\boost_1_55_0\boost/mpl/if.hpp(131,1) :  error: pasting formed 
'BOOST_PP_TUPLE_ELEM_1(', an invalid preprocessing token 
[-Winvalid-token-paste]
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(161,40) :  note: expanded 
from macro 'BOOST_MPL_AUX_NA_SPEC'
#define BOOST_MPL_AUX_NA_SPEC(i, name) \
                                        ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(154,47) :  note: expanded 
from macro '\
BOOST_MPL_AUX_NA_SPEC_NO_ETI'
#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
                                               ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(65,9) :  note: expanded from 
macro '\
BOOST_MPL_AUX_NA_SPEC_MAIN'
         BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
         ^
note: (skipping 5 expansions in backtrace; use -fmacro-backtrace-limit=0 
to see all)
I:\boost_1_55_0\boost/preprocessor/tuple/elem.hpp(36,53) :  note: 
expanded from macro 'BOOST_PP_TUPLE_ELEM'
#        define BOOST_PP_TUPLE_ELEM(size, n, tuple) 
BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), 
BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple))
                                                     ^
I:\boost_1_55_0\boost/preprocessor/tuple/elem.hpp(37,48) :  note: 
expanded from macro 'BOOST_PP_TUPLE_ELEM_I'
#        define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, 
args)
                                                ^
I:\boost_1_55_0\boost/preprocessor/tuple/elem.hpp(38,64) :  note: 
expanded from macro 'BOOST_PP_TUPLE_ELEM_II'
#        define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
                                                                ^
In file included from C:\Scripta\libs\Root\ScriptaConfig.cpp:1:
In file included from C:\Scripta\libs\Root/ScriptaConfig.h:2:
In file included from C:\Scripta\libs\Root/ScriptaLogManager.h:38:
In file included from C:\Scripta\libs\Root/Utility.h:4:
In file included from I:\boost_1_55_0\boost/filesystem.hpp:16:
In file included from I:\boost_1_55_0\boost/filesystem/path.hpp:25:
In file included from I:\boost_1_55_0\boost/filesystem/path_traits.hpp:22:
In file included from I:\boost_1_55_0\boost/type_traits/decay.hpp:18:
In file included from I:\boost_1_55_0\boost/mpl/eval_if.hpp:17:
I:\boost_1_55_0\boost/mpl/if.hpp(131,1) :  error: pasting formed 
'BOOST_PP_TUPLE_ELEM_E_2(', an invalid preprocessing token 
[-Winvalid-token-paste]
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(161,40) :  note: expanded 
from macro 'BOOST_MPL_AUX_NA_SPEC'
#define BOOST_MPL_AUX_NA_SPEC(i, name) \
                                        ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(154,47) :  note: expanded 
from macro '\
BOOST_MPL_AUX_NA_SPEC_NO_ETI'
#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
                                               ^
I:\boost_1_55_0\boost/mpl/aux_/na_spec.hpp(65,9) :  note: expanded from 
macro '\
BOOST_MPL_AUX_NA_SPEC_MAIN'
         BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
         ^

...and so on...


Thanks a lot for your time.










More information about the cfe-dev mailing list