Viewing file: write-to-string-literal-1.c (1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include <string.h>
/* PR analyzer/95007. */
void test_1 (void) { char *s = "foo"; s[0] = 'g'; /* { dg-warning "write to string literal" } */ }
/* PR c/83347. */
void test_2 (void) { memcpy ("abc", "def", 3); /* { dg-warning "write to string literal" } */ }
static char * __attribute__((noinline)) called_by_test_3 (void) { return (char *)"foo"; }
void test_3 (void) { char *s = called_by_test_3 (); s[1] = 'a'; /* { dg-warning "write to string literal" } */ }
static char * __attribute__((noinline)) called_by_test_4 (int flag) { if (flag) return (char *)"foo"; else return (char *)"bar"; }
void test_4 (void) { char *s = called_by_test_4 (0); s[1] = 'z'; /* { dg-warning "write to string literal" } */ }
static char * __attribute__((noinline)) called_by_test_5 (int flag) { if (flag) return (char *)"foo"; else return (char *)"bar"; }
void test_5 (int flag) { char *s = called_by_test_5 (flag); s[1] = 'z'; /* We miss this one, unless we disable state merging. */ }
|