Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C Thu Oct 25 07:37:49 2018 +0900 @@ -0,0 +1,164 @@ +// PR tree-optimization/84468 - bogus -Wstringop-truncation despite +// assignment after conditional strncpy +// Compile with -g to verify the warning deals properly with debug +// statements. +// { dg-do compile } +// { dg-options "-O2 -Wstringop-truncation -g" } + +extern "C" char* strncpy (char*, const char*, __SIZE_TYPE__); + +char d[3]; + +void g (); + +void fnowarn1 (const char *s) +{ + // Update dummy but never actually use it so it's eliminated + // but causes debugging statements to be emitted for each + // modification. + int dummy = 0; + + try + { + g (); + strncpy (d, s, sizeof d); // { dg-bogus "\\\[-Wstringop-truncation]" } + ++dummy; + } + catch (...) + { + ++dummy; + d[0] = 0; + } + + ++dummy; + d[sizeof d - 1] = 0; +} + +void fnowarn2 (const char *s) +{ + int dummy = 0; + + try + { + g (); + strncpy (d, s, sizeof d); + ++dummy; + } + catch (...) + { + ++dummy; + return; + } + + ++dummy; + d[sizeof d - 1] = 0; +} + +void fnowarn3 (const char *s) +{ + int dummy = 0; + + try + { + g (); + strncpy (d, s, sizeof d); + ++dummy; + try + { + ++dummy; + d[sizeof d - 1] = 0; + g (); + } + catch (...) + { + ++dummy; + } + } + catch (...) + { + ++dummy; + return; + } + + ++dummy; + d[sizeof d - 1] = 0; +} + +void fnowarn4 (const char *s) +{ + int dummy = 0; + + try + { + g (); + } + catch (...) + { + strncpy (d, s, sizeof d); // { dg-bogus "\\\[-Wstringop-truncation]" "bug 84468" { xfail *-*-*} } + ++dummy; + } + + ++dummy; + d[sizeof d - 1] = 0; +} + +void fwarn1 (const char *s) +{ + int dummy = 0; + + try + { + ++dummy; + g (); + ++dummy; + strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" } + ++dummy; + } + catch (...) + { + ++dummy; + } + + ++dummy; +} + +void fwarn2 (const char *s) +{ + int dummy = 0; + + try + { + ++dummy; + strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" } + ++dummy; + g (); + ++dummy; + } + catch (...) + { + ++dummy; + } + + ++dummy; +} + +void fwarn3 (const char *s) +{ + int dummy = 0; + + try + { + ++dummy; + g (); + ++dummy; + strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" } + ++dummy; + } + catch (...) + { + ++dummy; + d[0] = 0; + } + + ++dummy; +}