From 5a897b0abcc0e0e8ba1ee4f1a59b3d74c6d09e9c Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 25 Jul 2025 17:18:13 +0200 Subject: [PATCH] test: work around clang optimizer bug on aarch64 --- test/global_metadata_test.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/global_metadata_test.cpp b/test/global_metadata_test.cpp index 8f8888d4..acfb15e6 100644 --- a/test/global_metadata_test.cpp +++ b/test/global_metadata_test.cpp @@ -70,6 +70,13 @@ TEST_F(global_metadata_test, check_empty_tables) { EXPECT_THAT([&] { check(raw); }, throws_error("empty modes table")); } +// On aarch64, Clang will wrongly optimize away some of the assignments +// in this test, leading to false positives. I'm pretty sure this is a bug +// in Clang, need to reproduce it and file a bug report. +#if defined(__clang__) && defined(__aarch64__) +#pragma clang optimize off +#endif + TEST_F(global_metadata_test, check_index_range) { metadata raw; raw.directories()->resize(1); @@ -138,6 +145,10 @@ TEST_F(global_metadata_test, check_index_range) { EXPECT_THAT([&] { check(raw); }, throws_error("inode_num out of range")); } +#if defined(__clang__) && defined(__aarch64__) +#pragma clang optimize on +#endif + TEST_F(global_metadata_test, check_packed_tables) { metadata raw; raw.inodes()->resize(2);