This test fails on strict-alignment platforms because a call to memcpy is not
turned into a simple move and thus yields an additional warning:
warning: '__builtin_memcpy' writing 4 bytes into a region of size 0 overflows
the destination [-Wstringop-overflow=]
The attached patch tweaks the test so that this call to memcpy is preserved on
the other platforms too (by adding one character to the string) and adds the
additional dg-warning directive.
Tested on visium-elf & x86_64-suse-linux, applied on the mainline as obvious.
2018-01-16 Eric Botcazou <ebotca...@adacore.com>
* c-c++-common/Wrestrict.c (test_strcpy_range): Bump string size of one
test and add dg-warning for the -Wstringop-overflow warning.
--
Eric Botcazou
Index: c-c++-common/Wrestrict.c
===================================================================
--- c-c++-common/Wrestrict.c (revision 256562)
+++ c-c++-common/Wrestrict.c (working copy)
@@ -758,7 +758,8 @@ void test_strcpy_range (void)
T (8, "012", a + r, a); /* { dg-warning "accessing 4 bytes at offsets \\\[3, \[0-9\]+] and 0 may overlap 1 byte at offset 3" "strcpy" } */
r = SR (DIFF_MAX - 2, DIFF_MAX - 1);
- T (8, "012", a + r, a); /* { dg-warning "accessing 4 bytes at offsets \\\[\[0-9\]+, \[0-9\]+] and 0 overlaps" "strcpy" } */
+ T (8, "0123", a + r, a); /* { dg-warning "accessing 5 bytes at offsets \\\[\[0-9\]+, \[0-9\]+] and 0 overlaps" "strcpy" } */
+ /* { dg-warning "writing 5 bytes into a region of size 0 overflows" "memcpy" { target *-*-* } .-1 } */
/* Exercise the full range of ptrdiff_t. */
r = signed_value ();