r247652 fixes a number of inconsistencies between the pattern of diagnostics expected by tests and those actually issued by GCC, and introduced while resolving merge conflicts. My best guess is that I missed them by testing the wrong patch or the wrong local copy. The committed diff is attached for reference.
Martin
Index: gcc/builtins.c =================================================================== --- gcc/builtins.c (revision 247651) +++ gcc/builtins.c (revision 247652) @@ -3147,12 +3147,12 @@ check_sizes (int opt, tree exp, tree size, tree ma if (range[0] == range[1]) warning_at (loc, opt, - "%K%qD: specified size %E " + "%K%qD specified size %E " "exceeds maximum object size %E", exp, get_callee_fndecl (exp), range[0], maxobjsize); else warning_at (loc, opt, - "%K%qD: specified size between %E and %E " + "%K%qD specified size between %E and %E " "exceeds maximum object size %E", exp, get_callee_fndecl (exp), range[0], range[1], maxobjsize); @@ -3178,7 +3178,7 @@ check_sizes (int opt, tree exp, tree size, tree ma and a source of unknown length. The call will write at least one byte past the end of the destination. */ warning_at (loc, opt, - "%K%qD: writing %E or more bytes into a region " + "%K%qD writing %E or more bytes into a region " "of size %E overflows the destination", exp, get_callee_fndecl (exp), range[0], objsize); } @@ -3185,7 +3185,7 @@ check_sizes (int opt, tree exp, tree size, tree ma else if (tree_int_cst_equal (range[0], range[1])) warning_at (loc, opt, (integer_onep (range[0]) - ? G_("%K%qD: writing %E byte into a region " + ? G_("%K%qD writing %E byte into a region " "of size %E overflows the destination") : G_("%K%qD writing %E bytes into a region " "of size %E overflows the destination")), @@ -3194,13 +3194,13 @@ check_sizes (int opt, tree exp, tree size, tree ma { /* Avoid printing the upper bound if it's invalid. */ warning_at (loc, opt, - "%K%qD: writing %E or more bytes into a region " + "%K%qD writing %E or more bytes into a region " "of size %E overflows the destination", exp, get_callee_fndecl (exp), range[0], objsize); } else warning_at (loc, opt, - "%K%qD: writing between %E and %E bytes into " + "%K%qD writing between %E and %E bytes into " "a region of size %E overflows the destination", exp, get_callee_fndecl (exp), range[0], range[1], objsize); @@ -3229,13 +3229,13 @@ check_sizes (int opt, tree exp, tree size, tree ma is greater than the object size if both are big. */ if (range[0] == range[1]) warning_at (loc, opt, - "%K%qD: specified bound %E " + "%K%qD specified bound %E " "exceeds maximum object size %E", exp, get_callee_fndecl (exp), range[0], maxobjsize); else warning_at (loc, opt, - "%K%qD: specified bound between %E and %E " + "%K%qD specified bound between %E and %E " "exceeds maximum object size %E", exp, get_callee_fndecl (exp), range[0], range[1], maxobjsize); @@ -3247,13 +3247,13 @@ check_sizes (int opt, tree exp, tree size, tree ma { if (tree_int_cst_equal (range[0], range[1])) warning_at (loc, opt, - "%K%qD: specified bound %E " + "%K%qD specified bound %E " "exceeds destination size %E", exp, get_callee_fndecl (exp), range[0], objsize); else warning_at (loc, opt, - "%K%qD: specified bound between %E and %E " + "%K%qD specified bound between %E and %E " "exceeds destination size %E", exp, get_callee_fndecl (exp), range[0], range[1], objsize); @@ -3272,7 +3272,7 @@ check_sizes (int opt, tree exp, tree size, tree ma if (tree_int_cst_equal (range[0], range[1])) warning_at (loc, opt, (tree_int_cst_equal (range[0], integer_one_node) - ? G_("%K%qD: reading %E byte from a region of size %E") + ? G_("%K%qD reading %E byte from a region of size %E") : G_("%K%qD reading %E bytes from a region of size %E")), exp, get_callee_fndecl (exp), range[0], slen); else if (tree_int_cst_sign_bit (range[1])) @@ -3279,13 +3279,13 @@ check_sizes (int opt, tree exp, tree size, tree ma { /* Avoid printing the upper bound if it's invalid. */ warning_at (loc, opt, - "%K%qD: reading %E or more bytes from a region " + "%K%qD reading %E or more bytes from a region " "of size %E", exp, get_callee_fndecl (exp), range[0], slen); } else warning_at (loc, opt, - "%K%qD: reading between %E and %E bytes from a region " + "%K%qD reading between %E and %E bytes from a region " "of size %E", exp, get_callee_fndecl (exp), range[0], range[1], slen); return false; @@ -3876,7 +3876,7 @@ check_strncat_sizes (tree exp, tree objsize) loc = expansion_point_location_if_in_system_header (loc); warning_at (loc, OPT_Wstringop_overflow_, - "%K%qD: specified bound %E equals destination size", + "%K%qD specified bound %E equals destination size", exp, get_callee_fndecl (exp), maxlen); return false; @@ -3942,7 +3942,7 @@ expand_builtin_strncat (tree exp, rtx) loc = expansion_point_location_if_in_system_header (loc); warning_at (loc, OPT_Wstringop_overflow_, - "%K%qD: specified bound %E equals destination size", + "%K%qD specified bound %E equals destination size", exp, get_callee_fndecl (exp), maxlen); return NULL_RTX; Index: gcc/testsuite/gcc.dg/pr79214.c =================================================================== --- gcc/testsuite/gcc.dg/pr79214.c (revision 247651) +++ gcc/testsuite/gcc.dg/pr79214.c (revision 247652) @@ -22,27 +22,27 @@ size_t range (void) void test_bzero (void) { - bzero (d, range ()); /* { dg-warning ".__builtin_bzero. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + bzero (d, range ()); /* { dg-warning ".__builtin_bzero. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_memcpy (void) { - memcpy (d, s, range ()); /* { dg-warning ".__builtin_memcpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + memcpy (d, s, range ()); /* { dg-warning ".__builtin_memcpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_memmove (void) { - memmove (d, d + 1, range ()); /* { dg-warning ".__builtin_memmove. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + memmove (d, d + 1, range ()); /* { dg-warning ".__builtin_memmove. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_mempcpy (void) { - mempcpy (d, s, range ()); /* { dg-warning ".__builtin_mempcpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + mempcpy (d, s, range ()); /* { dg-warning ".__builtin_mempcpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_memset (int n) { - memset (d, n, range ()); /* { dg-warning ".__builtin_memset. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + memset (d, n, range ()); /* { dg-warning ".__builtin_memset. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_strcat (int i) @@ -49,7 +49,7 @@ void test_strcat (int i) { const char *s = i < 0 ? "123" : "4567"; - strcat (d, s); /* { dg-warning ".__builtin_strcat. writing 4 bytes into a region of size 3 overflows the destination" } */ + strcat (d, s); /* { dg-warning ".__builtin_strcat. writing between 4 and 5 bytes into a region of size 3 overflows the destination" } */ } char* test_stpcpy (int i) @@ -56,7 +56,7 @@ char* test_stpcpy (int i) { const char *s = i < 0 ? "123" : "4567"; - return stpcpy (d, s); /* { dg-warning ".__builtin_stpcpy. writing 4 bytes into a region of size 3 overflows the destination" } */ + return stpcpy (d, s); /* { dg-warning ".__builtin_stpcpy. writing between 4 and 5 bytes into a region of size 3 overflows the destination" } */ } char* test_stpncpy (int i) @@ -63,7 +63,7 @@ char* test_stpncpy (int i) { const char *s = i < 0 ? "123" : "4567"; - return stpncpy (d, s, range ()); /* { dg-warning ".__builtin_stpncpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + return stpncpy (d, s, range ()); /* { dg-warning ".__builtin_stpncpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } char* test_strcpy (int i) @@ -70,7 +70,7 @@ char* test_strcpy (int i) { const char *s = i < 0 ? "123" : "4567"; - return strcpy (d, s); /* { dg-warning ".__builtin_strcpy. writing 4 bytes into a region of size 3 overflows the destination" } */ + return strcpy (d, s); /* { dg-warning ".__builtin_strcpy. writing between 4 and 5 bytes into a region of size 3 overflows the destination" } */ } char* test_strncpy (int i) @@ -77,7 +77,7 @@ char* test_strncpy (int i) { const char *s = i < 0 ? "123" : "4567"; - return strncpy (d, s, range ()); /* { dg-warning ".__builtin_strncpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + return strncpy (d, s, range ()); /* { dg-warning ".__builtin_strncpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } char* test_strncat (int i) @@ -84,5 +84,5 @@ char* test_strncat (int i) { const char *s = i < 0 ? "123" : "4567"; - return strncat (d, s, range ()); /* { dg-warning ".__builtin_strncat.: specified bound between 4 and \[0-9\]+" } */ + return strncat (d, s, range ()); /* { dg-warning ".__builtin_strncat. specified bound between 4 and \[0-9\]+" } */ } Index: gcc/testsuite/gcc.dg/pr79222.c =================================================================== --- gcc/testsuite/gcc.dg/pr79222.c (revision 247651) +++ gcc/testsuite/gcc.dg/pr79222.c (revision 247652) @@ -9,5 +9,5 @@ char d[3]; char* f (int i) { const char *s = i < 0 ? "01234567" : "9876543210"; - return stpcpy (d, s); /* { dg-warning ".stpcpy. writing 9 bytes into a region of size 3 overflows the destination" } */ + return stpcpy (d, s); /* { dg-warning ".stpcpy. writing between 9 and 11 bytes into a region of size 3 overflows the destination" } */ } Index: gcc/testsuite/gcc.dg/pr79223.c =================================================================== --- gcc/testsuite/gcc.dg/pr79223.c (revision 247651) +++ gcc/testsuite/gcc.dg/pr79223.c (revision 247652) @@ -23,15 +23,15 @@ size_t range (void) void test_memcpy (void) { - memcpy (d, s, range ()); /* { dg-warning ".memcpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + memcpy (d, s, range ()); /* { dg-warning ".memcpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_mempcpy (void) { - mempcpy (d, s, range ()); /* { dg-warning ".mempcpy. writing between 4 and \[0-9\]+ bytes into a region of size 3 overflows the destination" } */ + mempcpy (d, s, range ()); /* { dg-warning ".mempcpy. writing 4 or more bytes into a region of size 3 overflows the destination" } */ } void test_memmove (void) { - memmove (d + 1, d, range ()); /* { dg-warning ".memmove. writing between 4 and \[0-9\]+ bytes into a region of size 2 overflows the destination" } */ + memmove (d + 1, d, range ()); /* { dg-warning ".memmove. writing 4 or more bytes into a region of size 2 overflows the destination" } */ } Index: gcc/testsuite/gcc.dg/pr78138.c =================================================================== --- gcc/testsuite/gcc.dg/pr78138.c (revision 247651) +++ gcc/testsuite/gcc.dg/pr78138.c (revision 247652) @@ -12,7 +12,7 @@ extern char* strcpy (char*, const char*); void f (int i, int j) { - strcpy (d, j ? "12345" : "123456"); /* { dg-warning ".strcpy.: writing between 6 and 7 bytes into a region of size 5 " } */ + strcpy (d, j ? "12345" : "123456"); /* { dg-warning ".strcpy. writing between 6 and 7 bytes into a region of size 5 " } */ } void g (void *p) Index: gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c (revision 247651) +++ gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c (revision 247652) @@ -13,9 +13,16 @@ main (void) /* MEMCHR. */ if (__builtin_memchr ("", 'x', 1000)) /* Not folded away. */ - __builtin_abort (); + { + /* { dg-warning "reading 1000 bytes from a region of size 1" "" { target *-*-* } .-2 } */ + __builtin_abort (); + } + if (__builtin_memchr (foo1, 'x', 1000)) /* Not folded away. */ - __builtin_abort (); + { + /* { dg-warning "reading 1000 bytes from a region of size 1" "" { target *-*-* } .-2 } */ + __builtin_abort (); + } /* STRNCMP. */ if (strncmp ("a", "b", -1)) /* { dg-warning "implicit declaration of function" } */