https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79427
Bug ID: 79427 Summary: g++.dg/tls/thread_local-order2.C fails starting with r245249 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: testsuite Assignee: unassigned at gcc dot gnu.org Reporter: seurer at gcc dot gnu.org Target Milestone: --- FAIL: g++.dg/tls/thread_local-order2.C -std=c++11 execution test FAIL: g++.dg/tls/thread_local-order2.C -std=c++14 execution test It looks like on BE the destructors are firing in an unepected order. Taking out the #define of printf I get this output on power BE: A(1) A(0) ~A(0) Program received signal SIGABRT, Aborted. And this output on power LE: A(1) A(0) ~A(1) ~A(0) BTW, the comment in the test case says "The standard says that a1 should be destroyed before a0 even though that isn't reverse order of construction." Where does it say this in the standard?