[ https://issues.apache.org/jira/browse/STDCXX-162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor updated STDCXX-162: -------------------------------- Severity: Inefficiency Fix Version/s: (was: 4.2.0) 5.0 The fix is in 4.2 but it's disabled for binary compatibility. It will automatically become enabled in 5.0. The regression test (21.string.stdcxx-162) fails as a result as expected. > [x86_64] atomic operations disabled > ----------------------------------- > > Key: STDCXX-162 > URL: https://issues.apache.org/jira/browse/STDCXX-162 > Project: C++ Standard Library > Issue Type: Improvement > Components: Configuration > Affects Versions: 4.1.3 > Environment: x86_64 > Reporter: Martin Sebor > Priority: Critical > Fix For: 5.0 > > > Atomic operations are disabled on AMD64 and EM64T. > $ uname -srp && cat t.cpp && make t && > LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH ./t > Linux 2.6.9-22.ELsmp x86_64 > #include <cassert> > #include <string> > #include <pthread.h> > int main () > { > typedef std::char_traits<char> Traits; > typedef std::allocator<char> Allocator; > typedef __rw::__string_ref<char, Traits, Allocator> strref; > struct SmallRef { > int ref_count; > std::string::size_type capacity; > std::string::size_type size; > }; > struct LargeRef { > pthread_mutex_t mutex; > int ref_count; > std::string::size_type capacity; > std::string::size_type size; > }; > assert (sizeof (strref) <= sizeof (SmallRef)); > assert (sizeof (strref) < sizeof (LargeRef)); > } > gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -pthread > -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.4-15D/include > -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest > -I/build/sebor/dev/stdlib/../rwtest/include > -I/build/sebor/dev/stdlib/tests/include -pedantic -nostdinc++ -g -Wall -W > -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align > t.cpp > gcc t.o -o t -L/build/sebor/gcc-3.4.4-15D/rwtest -lrwtest15d -pthread > -L/build/sebor/gcc-3.4.4-15D/lib -lstd15d -lsupc++ -lm > t: t.cpp:24: int main(): Assertion `sizeof (strref) <= sizeof (SmallRef)' > failed. > Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.