https://gcc.gnu.org/g:06f094958161f8c31746b33164a35820eecef4ee

commit r16-5590-g06f094958161f8c31746b33164a35820eecef4ee
Author: David Malcolm <[email protected]>
Date:   Tue Nov 25 12:44:10 2025 -0500

    testsuite: fix issues in gcc.dg/analyzer/strchr-1.c seen with C23 libc
    
    Simplify this test case in the hope of avoiding an error seen
    with glibc-2.42.9000-537-gcd748a63ab1 in CI with
    "Implement C23 const-preserving standard library macros".
    
    gcc/testsuite/ChangeLog:
            * gcc.dg/analyzer/strchr-1.c: Drop include of <string.h>, and use
            __builtin_strchr throughout rather than strchr to avoid const
            correctness issues when the header implements strchr with a C23
            const-preserving macro.  Drop "const" from two vars.
    
    Signed-off-by: David Malcolm <[email protected]>

Diff:
---
 gcc/testsuite/gcc.dg/analyzer/strchr-1.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/analyzer/strchr-1.c 
b/gcc/testsuite/gcc.dg/analyzer/strchr-1.c
index 181f1829724f..5cc5fe55734f 100644
--- a/gcc/testsuite/gcc.dg/analyzer/strchr-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/strchr-1.c
@@ -1,4 +1,3 @@
-#include <string.h>
 #include "analyzer-decls.h"
 
 const char* test_literal (int x)
@@ -14,28 +13,28 @@ const char* test_literal (int x)
   return p;
 }
 
-void test_2 (const char *s, int c)
+void test_2 (char *s, int c)
 {
   char *p = __builtin_strchr (s, c); /* { dg-message "when '__builtin_strchr' 
returns NULL" } */
   *p = 'A'; /* { dg-warning "dereference of NULL 'p'" "null deref" } */
 }
 
-void test_3 (const char *s, int c)
+void test_3 (char *s, int c)
 {
-  char *p = strchr (s, c); /* { dg-message "when 'strchr' returns NULL" } */
+  char *p = __builtin_strchr (s, c); /* { dg-message "when '__builtin_strchr' 
returns NULL" } */
   *p = 'A'; /* { dg-warning "dereference of NULL 'p'" "null deref" } */
 }
 
 void test_unterminated (int c)
 {
   char buf[3] = "abc";
-  strchr (buf, c); /* { dg-warning "stack-based buffer over-read" } */
-  /* { dg-message "while looking for null terminator for argument 1 
\\('&buf'\\) of 'strchr'..." "event" { target *-*-* } .-1 } */
+  __builtin_strchr (buf, c); /* { dg-warning "stack-based buffer over-read" } 
*/
+  /* { dg-message "while looking for null terminator for argument 1 
\\('&buf'\\) of '__builtin_strchr'..." "event" { target *-*-* } .-1 } */
 }
 
 void test_uninitialized (int c)
 {
   char buf[16];
-  strchr (buf, c); /* { dg-warning "use of uninitialized value 'buf\\\[0\\\]'" 
} */
-  /* { dg-message "while looking for null terminator for argument 1 
\\('&buf'\\) of 'strchr'..." "event" { target *-*-* } .-1 } */
+  __builtin_strchr (buf, c); /* { dg-warning "use of uninitialized value 
'buf\\\[0\\\]'" } */
+  /* { dg-message "while looking for null terminator for argument 1 
\\('&buf'\\) of '__builtin_strchr'..." "event" { target *-*-* } .-1 } */
 }

Reply via email to