|
Boost Users : |
Subject: [Boost-users] VS2010 and /clr: fatal error C1001: An internal error has occurred in the compiler
From: Soren Dreijer (admin_at_[hidden])
Date: 2010-08-07 11:47:54
I recently switched our product over to VS2010 from VS2008. Our solution
consists of several native C++ projects and some managed C++ projects
that link to those native projects.
The managed C++ projects are compiled with the /clr flag, of course.
However, when compiling for x64, one of the files that includes one of
the boost mutex headers causes the compiler to spit out the following
error:
boost_1_43_0_sdk\include\boost\thread\win32\basic_timed_mutex.hpp(158):
fatal error C1001: An internal error has occurred in the compiler
I've traced down the problem to the following piece of code in
basic_timed_mutex.hpp:
void unlock()
{
long const offset=lock_flag_value;
// If I comment out this line, compilation works
long const
old_count=BOOST_INTERLOCKED_EXCHANGE_ADD(&active_count,lock_flag_value);
if(!(old_count&event_set_flag_value) && (old_count>offset))
{
if(!win32::interlocked_bit_test_and_set(&active_count,event_set_flag_bit
))
{
win32::SetEvent(get_event());
}
}
}
It would see the BOOST_INTERLOCKED_EXCHANGE_ADD macro causes the
compiler to barf. Does anybody have any ideas on why this is, or how to
fix it?
Cheers,
Soren
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net