diff options
author | Bernd Schmidt <bernds@redhat.com> | 2016-04-27 09:48:56 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2016-04-27 09:48:56 +0000 |
commit | c1e1f4333b65cb99f2dbfff267a634448d947529 (patch) | |
tree | 96f8374ba1ef35e3c658690c190cb0d008ae3001 /gcc/testsuite/c-c++-common/memset-array.c | |
parent | 06aed101fc1eb7bc685e334352a599f0a4718a22 (diff) | |
download | gcc-c1e1f4333b65cb99f2dbfff267a634448d947529.zip gcc-c1e1f4333b65cb99f2dbfff267a634448d947529.tar.gz gcc-c1e1f4333b65cb99f2dbfff267a634448d947529.tar.bz2 |
invoke.texi (Warning Options): Add -Wmemset-elt-size.
* doc/invoke.texi (Warning Options): Add -Wmemset-elt-size.
(-Wmemset-elt-size): New item.
c-family/
* c.opt (Wmemset-elt-size): New option.
* c-common.c (warn_for_memset): New function.
* c-common.h (warn_for_memset): Declare.
c/
* c-parser.c (c_parser_postfix_expression_after_primary): Call
warn_for_memset instead of warning directly here.
cp/
* parser.c (cp_parser_postfix_expression): Call
warn_for_memset instead of warning directly here.
testsuite/
* c-c++-common/memset-array.c: New test.
From-SVN: r235475
Diffstat (limited to 'gcc/testsuite/c-c++-common/memset-array.c')
-rw-r--r-- | gcc/testsuite/c-c++-common/memset-array.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/memset-array.c b/gcc/testsuite/c-c++-common/memset-array.c new file mode 100644 index 0000000..0346a21 --- /dev/null +++ b/gcc/testsuite/c-c++-common/memset-array.c @@ -0,0 +1,36 @@ +/* { dg-do compile } */ +/* { dg-options "-Wmemset-elt-size" } */ +enum a { + a_1, + a_2, + a_n +}; +int t1[20]; +int t2[a_n]; + +struct s +{ + int t[20]; +}; + +void foo (struct s *s) +{ + __builtin_memset (t1, 0, 20); /* { dg-warning "element size" } */ + __builtin_memset (t2, 0, a_n); /* { dg-warning "element size" } */ + __builtin_memset (s->t, 0, 20); /* { dg-warning "element size" } */ +} + +char u1[20]; +char u2[a_n]; + +struct s2 +{ + char u[20]; +}; + +void bar (struct s2 *s) +{ + __builtin_memset (u1, 0, 20); + __builtin_memset (u2, 0, a_n); + __builtin_memset (s->u, 0, 20); +} |