From 4c736c844a725c9a1c6e1a317715ec0e0ba156eb Mon Sep 17 00:00:00 2001 From: Enrico Seiler Date: Wed, 30 Oct 2024 14:40:11 +0100 Subject: [PATCH] [MISC] Use SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_{START,STOP} --- .../aligned_sequence_concept.hpp | 9 ++---- .../detail/score_matrix_single_column.hpp | 9 ++---- .../container/concatenated_sequences.hpp | 12 +++---- .../seqan3/utility/container/small_vector.hpp | 9 ++---- .../container/container_concept_test.cpp | 31 +++++-------------- ...bug_stream_container_of_container_test.cpp | 10 ++---- 6 files changed, 20 insertions(+), 60 deletions(-) diff --git a/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp b/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp index 4456822346..3931b1499e 100644 --- a/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp +++ b/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp @@ -374,14 +374,9 @@ inline void assign_unaligned(aligned_seq_t & aligned_seq, unaligned_sequence_typ using std::swap; aligned_seq_t tmp; tmp.resize(std::ranges::distance(unaligned_seq)); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wstringop-overflow" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wstringop-overflow) std::ranges::copy(unaligned_seq, std::ranges::begin(tmp)); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP swap(aligned_seq, tmp); } //!\} diff --git a/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp b/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp index fb1bb8fe9e..ef764d1045 100644 --- a/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp +++ b/include/seqan3/alignment/matrix/detail/score_matrix_single_column.hpp @@ -113,14 +113,9 @@ class score_matrix_single_column this->number_of_columns = number_of_columns.get(); optimal_column.clear(); horizontal_column.clear(); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wstringop-overflow" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wstringop-overflow) optimal_column.resize(number_of_rows.get(), initial_value); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP horizontal_column.resize(number_of_rows.get(), initial_value); vertical_column = views::repeat_n(initial_value, number_of_rows.get()); } diff --git a/include/seqan3/alphabet/container/concatenated_sequences.hpp b/include/seqan3/alphabet/container/concatenated_sequences.hpp index d3e616594a..41b74acae1 100644 --- a/include/seqan3/alphabet/container/concatenated_sequences.hpp +++ b/include/seqan3/alphabet/container/concatenated_sequences.hpp @@ -556,7 +556,9 @@ class concatenated_sequences reference operator[](size_type const i) { assert(i < size()); + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Warray-bounds) return data_values | views::slice(data_delimiters[i], data_delimiters[i + 1]); + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP } //!\copydoc operator[]() @@ -977,17 +979,11 @@ class concatenated_sequences auto placeholder = views::repeat_n(std::ranges::range_value_t{}, count * value_len) | std::views::common; // insert placeholder so the tail is moved once: -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wstringop-overread" -# pragma GCC diagnostic ignored "-Wstringop-overflow" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wstringop-overread, -Wstringop-overflow) data_values.insert(data_values.begin() + data_delimiters[pos_as_num], std::ranges::begin(placeholder), std::ranges::end(placeholder)); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP // assign the actual values to the placeholder: size_t i = data_delimiters[pos_as_num]; diff --git a/include/seqan3/utility/container/small_vector.hpp b/include/seqan3/utility/container/small_vector.hpp index fb51452cd4..7386b509ac 100644 --- a/include/seqan3/utility/container/small_vector.hpp +++ b/include/seqan3/utility/container/small_vector.hpp @@ -735,14 +735,9 @@ class small_vector for (size_type i = sz + length - 1; i > pos_as_num + length - 1; --i) data_[i] = data_[i - length]; -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wstringop-overflow" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wstringop-overflow) std::ranges::copy(begin_it, end_it, &data_[pos_as_num]); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP sz += length; return begin() + pos_as_num; } diff --git a/test/unit/alphabet/container/container_concept_test.cpp b/test/unit/alphabet/container/container_concept_test.cpp index 48b36569c3..bc6b08d53b 100644 --- a/test/unit/alphabet/container/container_concept_test.cpp +++ b/test/unit/alphabet/container/container_concept_test.cpp @@ -64,10 +64,7 @@ TEST(container, sequence_container_former_travis_bug) s.insert(0, 1, 'E'); EXPECT_EQ("Exmplr", s); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wrestrict" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wrestrict) // insert(size_type index, const char* s) s.insert(2, "e"); EXPECT_EQ("Exemplr", s); @@ -75,9 +72,7 @@ TEST(container, sequence_container_former_travis_bug) // insert(size_type index, string const& str) s.insert(6, "a"s); EXPECT_EQ("Exemplar", s); -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP // insert(size_type index, string const& str, size_type index_str, size_type count) s.insert(8, " is an example string."s, 0, 14); @@ -99,17 +94,12 @@ TEST(container, sequence_container_former_travis_bug) EXPECT_EQ("Exemplar is an:== example string", s); } -# if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wrestrict" -# endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wrestrict) // insert(const_iterator pos, std::initializer_list) s.insert(s.begin() + s.find_first_of('g') + 1, {'.'}); EXPECT_EQ("Exemplar is an:== example string.", s); -# if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -# endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -#else // ^^^ workaround / no workaround vvv + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP +#else // ^^^ workaround / no workaround vvv // insert(const_iterator pos, char ch) s.insert(s.cbegin() + s.find_first_of('n') + 1, ':'); EXPECT_EQ("Exemplar is an: example", s); @@ -126,16 +116,11 @@ TEST(container, sequence_container_former_travis_bug) } // insert(const_iterator pos, std::initializer_list) -# if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wrestrict" -# endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Wrestrict) s.insert(s.cbegin() + s.find_first_of('g') + 1, {'.'}); EXPECT_EQ("Exemplar is an:== example string.", s); -# if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -# endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -#endif // SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP +#endif // SEQAN3_WORKAROUND_GCC_NO_CXX11_ABI } TEST(container, sequence_container) diff --git a/test/unit/alphabet/container/debug_stream_container_of_container_test.cpp b/test/unit/alphabet/container/debug_stream_container_of_container_test.cpp index 222a8c3dc6..e495d4d85c 100644 --- a/test/unit/alphabet/container/debug_stream_container_of_container_test.cpp +++ b/test/unit/alphabet/container/debug_stream_container_of_container_test.cpp @@ -25,15 +25,9 @@ TYPED_TEST_SUITE(debug_stream_test, container_of_container_types, ); TYPED_TEST(debug_stream_test, container_of_container) { -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Warray-bounds" -# pragma GCC diagnostic ignored "-Wstringop-overflow" -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Warray-bounds, -Wstringop-overflow) TypeParam t1{"ACGT"_dna4, "ACGT"_dna4, "GAGGA"_dna4}; -#if SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY -# pragma GCC diagnostic pop -#endif // SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP std::ostringstream o; seqan3::debug_stream_type my_stream{o};