http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51038
Bug #: 51038 Summary: [4.7 Regression]: 29_atomics/atomic_flag/clear/1.cc test_and_set/explicit.cc implicit.cc Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: link-failure, wrong-code Severity: normal Priority: P3 Component: regression AssignedTo: unassig...@gcc.gnu.org ReportedBy: h...@gcc.gnu.org CC: amacl...@redhat.com Host: x86_64-unknown-linux-gnu Target: cris-axis-elf These tests previously passed, now they fail. Apparently the "cxx-mem-model merge [6 of 9]" (formally a change in the range 181027:181034) exposed or caused these regressions. Since then they fail as follows: Running /tmp/hpautotest-gcc1/gcc/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp ... ... FAIL: 29_atomics/atomic_flag/clear/1.cc (test for excess errors) WARNING: 29_atomics/atomic_flag/clear/1.cc compilation failed to produce executable FAIL: 29_atomics/atomic_flag/test_and_set/explicit.cc (test for excess errors) WARNING: 29_atomics/atomic_flag/test_and_set/explicit.cc compilation failed to produce executable FAIL: 29_atomics/atomic_flag/test_and_set/implicit.cc (test for excess errors) The messages in libstdc++.log are similar, but have changed since the above. At r181162 they are as follows: Executing on host: /tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc/g++ -shared-libgcc -B/tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc -nostdinc++ -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/src -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/src/.libs -nostdinc -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/ -isystem /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/targ-include -isystem /tmp/hpautotest-gcc1/gcc/newlib/libc/include -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/cris -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/libnosys -L/tmp/hpautotest-gcc1/gcc/libgloss/cris -B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/bin/ -B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/lib/ -isystem /tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/include -isystem /tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/sys-include -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./libgloss/cris/ -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./libgloss/cris -L/tmp/hpautotest-gcc1/gcc/libgloss/cris -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./libstdc++-v3/src/.libs -g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2 -g -O2 -DLOCALEDIR="." -nostdinc++ -I/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/cris-elf -I/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include -I/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++ -I/tmp/hpautotest-gcc1/gcc/libstdc++-v3/include/backward -I/tmp/hpautotest-gcc1/gcc/libstdc++-v3/testsuite/util /tmp/hpautotest-gcc1/gcc/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc -std=gnu++0x ./libtestc++.a -isystem /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./newlib/targ-include -isystem /tmp/hpautotest-gcc1/gcc/newlib/libc/include -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./libgloss/cris/ -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./libgloss/cris -L/tmp/hpautotest-gcc1/gcc/libgloss/cris -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./newlib/ -L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./newlib -sim3 -lm -o ./1.exe (timeout = 600) /tmp/ccX4JE6W.o: In function `ZNSt11atomic_flag5clearESt12memory_order': /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/bits/atomic_base.h:311: undefined reference to `std::atomic_thread_fence(std::memory_order)' /tmp/ccX4JE6W.o: In function `ZNSt11atomic_flag12test_and_setESt12memory_order': /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/bits/atomic_base.h:274: undefined reference to `__sync_lock_test_and_set_1' collect2: error: ld returned 1 exit status compiler exited with status 1 output is: /tmp/ccX4JE6W.o: In function `ZNSt11atomic_flag5clearESt12memory_order': /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/bits/atomic_base.h:311: undefined reference to `std::atomic_thread_fence(std::memory_order)' /tmp/ccX4JE6W.o: In function `ZNSt11atomic_flag12test_and_setESt12memory_order': /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/bits/atomic_base.h:274: undefined reference to `__sync_lock_test_and_set_1' collect2: error: ld returned 1 exit status with the 29_atomics/atomic_flag/test_and_set/explicit.cc test only having the last undefined reference. Author of the suspect patches in the revision range CC:ed. cris-elf does not have any back-end atomicity support patterns specified, there's just the libstdc++-v3/config/cpu/cris atomicity header files, apparently obsoleted by the cxx-mem-model merge.