https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121928
Bug ID: 121928 Summary: FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-header s-no.C Product: gcc Version: 15.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: analyzer Assignee: dmalcolm at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- r16-3810-g6456da6bab8a2c43e7899afda991589065d96595 for Bug 121148 caused a number of new FAILs in the analyzer: FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++14 at line 13 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++14 at line 18 (test for warnings, line 11) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++14 at line 19 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++14 at line 20 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++14 at line 21 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++17 at line 13 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++17 at line 19 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++17 at line 20 (test for warnings, line 12) FAIL: g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C -std=c++17 at line 21 (test for warnings, line 12) (and more) But it seems like latent bug in -fanalyzer-call-summaries This change to current trunk allows you to test before and after the change: -- a/libstdc++-v3/include/ext/atomicity.h +++ b/libstdc++-v3/include/ext/atomicity.h @@ -94,6 +94,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __attribute__((__always_inline__)) __exchange_and_add_single(_Atomic_word* __mem, int __val) { +#ifdef OLD_CODE + _Atomic_word __result = *__mem; + *__mem += __val; +#else _Atomic_word __result = *__mem; // Do the addition with an unsigned type so that overflow is well defined. #if __cplusplus >= 201103L @@ -107,6 +111,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __u = __result; __u += __val; *__mem = __u; +#endif return __result; } Running the tests with: RUNTESTFLAGS="analyzer.exp=*system-headers* --target_board=unix/-DOLD_CODE" "fixes" the tests, and without -DOLD_CODE you get the FAILs.