From ff199a859b2a954d0bdb7324d40cd23556d1d901 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 16 Nov 2022 17:38:28 -0500 Subject: [PATCH] analyzer: more test coverage for named constants gcc/testsuite/ChangeLog: * gcc.dg/analyzer/named-constants-via-command-line.c: New test. * gcc.dg/analyzer/named-constants-via-macros-3.c: New test. * gcc.dg/analyzer/named-constants-via-macros-4.c: New test. * gcc.dg/analyzer/named-constants-via-macros-empty.c: New test. * gcc.dg/analyzer/named-constants-via-macros-gc.c: New test. * gcc.dg/analyzer/named-constants-via-macros-traditional.c: New test. * gcc.dg/analyzer/named-constants-via-macros-undef.c: New test. Signed-off-by: David Malcolm --- .../analyzer/named-constants-via-command-line.c | 10 ++++++++++ .../gcc.dg/analyzer/named-constants-via-macros-3.c | 15 +++++++++++++++ .../gcc.dg/analyzer/named-constants-via-macros-4.c | 15 +++++++++++++++ .../analyzer/named-constants-via-macros-empty.c | 14 ++++++++++++++ .../gcc.dg/analyzer/named-constants-via-macros-gc.c | 21 +++++++++++++++++++++ .../named-constants-via-macros-traditional.c | 16 ++++++++++++++++ .../analyzer/named-constants-via-macros-undef.c | 18 ++++++++++++++++++ 7 files changed, 109 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-3.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-4.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-empty.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-gc.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-traditional.c create mode 100644 gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-undef.c diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c new file mode 100644 index 0000000..4a3dd16 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c @@ -0,0 +1,10 @@ +/* { dg-additional-options "-DO_ACCMODE=42 -DO_RDONLY=0x1 -DO_WRONLY=010" } */ + +#include "analyzer-decls.h" + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has value '42'" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has value '1'" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has value '8'" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-3.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-3.c new file mode 100644 index 0000000..2a3f2b0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-3.c @@ -0,0 +1,15 @@ +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine, as macros + that can't be handled. */ + +#define O_RDONLY (1 << 0) +#define O_WRONLY (1 << 1) +#define O_ACCMODE (O_RDONLY | O_WRONLY) + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has unknown value" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has unknown value" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has unknown value" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-4.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-4.c new file mode 100644 index 0000000..16eef96 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-4.c @@ -0,0 +1,15 @@ +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine, as macros + that can't be handled. */ + +#define O_ACCMODE(X) 42 +#define O_RDONLY(X) 0x1 +#define O_WRONLY(X) 010 + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has unknown value" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has unknown value" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has unknown value" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-empty.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-empty.c new file mode 100644 index 0000000..3d347e2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-empty.c @@ -0,0 +1,14 @@ +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine. */ + +#define O_ACCMODE +#define O_RDONLY +#define O_WRONLY + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has unknown value" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has unknown value" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has unknown value" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-gc.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-gc.c new file mode 100644 index 0000000..e7b12f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-gc.c @@ -0,0 +1,21 @@ +/* { dg-additional-options "--param ggc-min-expand=0 --param ggc-min-heapsize=0" } */ + +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine. */ + +#define O_ACCMODE 42 +#define O_RDONLY 0x1 +#define O_WRONLY 010 + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has value '42'" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has value '1'" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has value '8'" } */ +} + +void test_unknown (void) +{ + __analyzer_dump_named_constant ("UNKNOWN"); /* { dg-warning "named constant 'UNKNOWN' has unknown value" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-traditional.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-traditional.c new file mode 100644 index 0000000..64acaad --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-traditional.c @@ -0,0 +1,16 @@ +/* { dg-additional-options "-traditional-cpp" } */ + +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine. */ + +#define O_ACCMODE 42 +#define O_RDONLY 0x1 +#define O_WRONLY 010 + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has unknown value" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has unknown value" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has unknown value" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-undef.c b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-undef.c new file mode 100644 index 0000000..46c0322 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-undef.c @@ -0,0 +1,18 @@ +#include "analyzer-decls.h" + +/* Various constants used by the fd state machine. */ + +#define O_ACCMODE 42 +#define O_RDONLY 0x1 +#define O_WRONLY 010 + +#undef O_ACCMODE +#undef O_RDONLY +#undef O_WRONLY + +void test_sm_fd_constants (void) +{ + __analyzer_dump_named_constant ("O_ACCMODE"); /* { dg-warning "named constant 'O_ACCMODE' has unknown value" } */ + __analyzer_dump_named_constant ("O_RDONLY"); /* { dg-warning "named constant 'O_RDONLY' has unknown value" } */ + __analyzer_dump_named_constant ("O_WRONLY"); /* { dg-warning "named constant 'O_WRONLY' has unknown value" } */ +} -- 2.7.4