On Fri, 2019-12-13 at 13:31 -0500, David Malcolm wrote: > On Fri, 2019-12-13 at 19:27 +0100, Jakub Jelinek wrote: > > On Fri, Dec 13, 2019 at 01:11:05PM -0500, David Malcolm wrote: > > > gcc/ChangeLog: > > > * builtins.def (BUILT_IN_ANALYZER_BREAK): New builtin. > > > (BUILT_IN_ANALYZER_DUMP): New builtin. > > > (BUILT_IN_ANALYZER_DUMP_EXPLODED_NODES): New builtin. > > > (BUILT_IN_ANALYZER_DUMP_NUM_HEAP_REGIONS): New builtin. > > > (BUILT_IN_ANALYZER_DUMP_PATH): New builtin. > > > (BUILT_IN_ANALYZER_DUMP_REGION_MODEL): New builtin. > > > (BUILT_IN_ANALYZER_EVAL): New builtin. > > > > Is it a good idea to add further builtins without __builtin_ > > prefix (unless required for interoperability etc.)? > > I think I can do all of these with just string matching on the fndecl > names; would that be preferable to having them as builtins?
The patch that added __analyzer_* builtins to builtins.def isn't needed: the functions are only used during DejaGnu testing, and only for comparison by name during compile-only tests - they're never actually defined. This patch eliminates the builtins in favor of a header file in the DejaGnu testsuite. Jakub: do you prefer this approach? (eliminating the builtins in favor of "magic" function names for use just using analyzer DejaGnu tests) Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu; pushed to branch dmalcolm/analyzer on the GCC git mirror. Dave gcc/ChangeLog: * builtins.def: Delete the analyzer builtins. * doc/analyzer.texi (Builtins for Debugging the Analyzer): Rename to... (Special Functions for Debugging the Analyzer): ...this. Add a leading paragraph. Document __analyzer_dump_region_model and __analyzer_eval. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/abort.c: Include "analyzer-decls.h". * gcc.dg/analyzer/analyzer-decls.h: New header. * gcc.dg/analyzer/conditionals-2.c: Include "analyzer-decls.h". * gcc.dg/analyzer/conditionals-3.c: Likewise. * gcc.dg/analyzer/conditionals-notrans.c: Likewise. * gcc.dg/analyzer/conditionals-trans.c: Likewise. * gcc.dg/analyzer/data-model-1.c: Likewise. * gcc.dg/analyzer/data-model-16.c: Likewise. * gcc.dg/analyzer/data-model-18.c: Likewise. * gcc.dg/analyzer/data-model-5d.c: Likewise. * gcc.dg/analyzer/data-model-6.c: Likewise. * gcc.dg/analyzer/data-model-7.c: Likewise. * gcc.dg/analyzer/data-model-8.c: Likewise. * gcc.dg/analyzer/data-model-9.c: Likewise. * gcc.dg/analyzer/equivalence.c: Likewise. * gcc.dg/analyzer/function-ptr-2.c: Likewise. * gcc.dg/analyzer/loop-2.c: Likewise. * gcc.dg/analyzer/loop-2a.c: Likewise. * gcc.dg/analyzer/loop-4.c: Likewise. * gcc.dg/analyzer/loop.c: Likewise. * gcc.dg/analyzer/malloc-paths-10.c: Likewise. * gcc.dg/analyzer/malloc-vs-local-1a.c: Likewise. * gcc.dg/analyzer/malloc-vs-local-1b.c: Likewise. * gcc.dg/analyzer/malloc-vs-local-2.c: Likewise. * gcc.dg/analyzer/malloc-vs-local-3.c: Likewise. * gcc.dg/analyzer/operations.c: Likewise. * gcc.dg/analyzer/params-2.c: Likewise. * gcc.dg/analyzer/params.c: Likewise. * gcc.dg/analyzer/paths-1.c: Likewise. * gcc.dg/analyzer/paths-1a.c: Likewise. * gcc.dg/analyzer/paths-2.c: Likewise. * gcc.dg/analyzer/paths-3.c: Likewise. * gcc.dg/analyzer/paths-4.c: Likewise. * gcc.dg/analyzer/paths-5.c: Likewise. * gcc.dg/analyzer/paths-6.c: Likewise. * gcc.dg/analyzer/paths-7.c: Likewise. * gcc.dg/analyzer/setjmp-2.c: Likewise. * gcc.dg/analyzer/setjmp-3.c: Likewise. * gcc.dg/analyzer/setjmp-4.c: Likewise. * gcc.dg/analyzer/setjmp-5.c: Likewise. * gcc.dg/analyzer/setjmp-8.c: Likewise. * gcc.dg/analyzer/setjmp-9.c: Likewise. * gcc.dg/analyzer/switch.c: Likewise. * gcc.dg/analyzer/zlib-1.c: Likewise. * gcc.dg/analyzer/zlib-5.c: Likewise. --- gcc/builtins.def | 33 ----------------- gcc/doc/analyzer.texi | 19 +++++++++- gcc/testsuite/gcc.dg/analyzer/abort.c | 1 + .../gcc.dg/analyzer/analyzer-decls.h | 36 +++++++++++++++++++ .../gcc.dg/analyzer/conditionals-2.c | 1 + .../gcc.dg/analyzer/conditionals-3.c | 2 ++ .../gcc.dg/analyzer/conditionals-notrans.c | 1 + .../gcc.dg/analyzer/conditionals-trans.c | 1 + gcc/testsuite/gcc.dg/analyzer/data-model-1.c | 1 + gcc/testsuite/gcc.dg/analyzer/data-model-16.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/data-model-18.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/data-model-5d.c | 1 + gcc/testsuite/gcc.dg/analyzer/data-model-6.c | 1 + gcc/testsuite/gcc.dg/analyzer/data-model-7.c | 1 + gcc/testsuite/gcc.dg/analyzer/data-model-8.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/data-model-9.c | 1 + gcc/testsuite/gcc.dg/analyzer/equivalence.c | 2 ++ .../gcc.dg/analyzer/function-ptr-2.c | 1 + gcc/testsuite/gcc.dg/analyzer/loop-2.c | 1 + gcc/testsuite/gcc.dg/analyzer/loop-2a.c | 1 + gcc/testsuite/gcc.dg/analyzer/loop-4.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/loop.c | 2 ++ .../gcc.dg/analyzer/malloc-paths-10.c | 1 + .../gcc.dg/analyzer/malloc-vs-local-1a.c | 1 + .../gcc.dg/analyzer/malloc-vs-local-1b.c | 1 + .../gcc.dg/analyzer/malloc-vs-local-2.c | 1 + .../gcc.dg/analyzer/malloc-vs-local-3.c | 1 + gcc/testsuite/gcc.dg/analyzer/operations.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/params-2.c | 1 + gcc/testsuite/gcc.dg/analyzer/params.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-1.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-1a.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-2.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-3.c | 1 + gcc/testsuite/gcc.dg/analyzer/paths-4.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-5.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/paths-6.c | 1 + gcc/testsuite/gcc.dg/analyzer/paths-7.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-2.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-3.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-4.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-5.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-8.c | 1 + gcc/testsuite/gcc.dg/analyzer/setjmp-9.c | 1 + gcc/testsuite/gcc.dg/analyzer/switch.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/zlib-1.c | 2 ++ gcc/testsuite/gcc.dg/analyzer/zlib-5.c | 2 ++ 47 files changed, 115 insertions(+), 34 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h diff --git a/gcc/builtins.def b/gcc/builtins.def index f34e95fe4bb0..d8233f5f760f 100644 --- a/gcc/builtins.def +++ b/gcc/builtins.def @@ -1107,37 +1107,4 @@ DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST) /* HSAIL/BRIG frontend builtins. */ #include "brig-builtins.def" - -/* Analyzer builtins. */ -DEF_BUILTIN (BUILT_IN_ANALYZER_BREAK, "__analyzer_break", - BUILT_IN_NORMAL, BT_FN_VOID, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_DUMP, "__analyzer_dump", - BUILT_IN_NORMAL, BT_FN_VOID, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_DUMP_EXPLODED_NODES, - "__analyzer_dump_exploded_nodes", - BUILT_IN_NORMAL, BT_FN_VOID_INT, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_DUMP_NUM_HEAP_REGIONS, - "__analyzer_dump_num_heap_regions", - BUILT_IN_NORMAL, BT_FN_VOID, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_DUMP_PATH, "__analyzer_dump_path", - BUILT_IN_NORMAL, BT_FN_VOID, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_DUMP_REGION_MODEL, - "__analyzer_dump_region_model", - BUILT_IN_NORMAL, BT_FN_VOID, BT_LAST, - false, false, false, ATTR_NULL, true, true) - -DEF_BUILTIN (BUILT_IN_ANALYZER_EVAL, "__analyzer_eval", - BUILT_IN_NORMAL, BT_FN_VOID_INT, BT_LAST, - false, false, false, ATTR_NULL, true, true) - #undef DEF_BUILTIN diff --git a/gcc/doc/analyzer.texi b/gcc/doc/analyzer.texi index 3f5999f14dd0..67efa52953b8 100644 --- a/gcc/doc/analyzer.texi +++ b/gcc/doc/analyzer.texi @@ -433,7 +433,12 @@ Signal handling @cindex analyzer, debugging @cindex static analyzer, debugging -@subsection Builtins for Debugging the Analyzer +@subsection Special Functions for Debugging the Analyzer + +The analyzer recognizes various special functions by name, for use +in debugging the analyzer. Declarations can be seen in the testsuite +in @file{analyzer-decls.h}. None of these functions are actually +implemented. Add: @smallexample @@ -472,6 +477,18 @@ will dump just the number of nodes, and their IDs. will also dump all of the states within those nodes. +@smallexample + __analyzer_dump_region_model (); +@end smallexample +will dump the region_model's state to stderr. + +@smallexample +__analyzer_eval (expr); +@end smallexample +will emit a warning with text "TRUE", FALSE" or "UNKNOWN" based on the +truthfulness of the argument. This is useful for writing DejaGnu tests. + + @subsection Other Debugging Techniques One approach when tracking down where a particular bogus state is diff --git a/gcc/testsuite/gcc.dg/analyzer/abort.c b/gcc/testsuite/gcc.dg/analyzer/abort.c index cfbf74ca3901..ea1756e47cb0 100644 --- a/gcc/testsuite/gcc.dg/analyzer/abort.c +++ b/gcc/testsuite/gcc.dg/analyzer/abort.c @@ -1,6 +1,7 @@ #include <assert.h> #include <stdio.h> #include <stdlib.h> +#include "analyzer-decls.h" extern void foo (); extern void bar (); diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h b/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h new file mode 100644 index 000000000000..180e873b67c9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h @@ -0,0 +1,36 @@ +#ifndef ANALYZER_DECLS_H +#define ANALYZER_DECLS_H + +/* Function decls with special meaning to the analyzer. + None of these are actually implemented. */ + +/* Trigger a breakpoint in the analyzer when reached. */ +extern void __analyzer_break (void); + +/* Dump copious information about the analyzer’s state when reached. */ +extern void __analyzer_dump (void); + +/* Dump information after analysis on all of the exploded nodes at this + program point. + + __analyzer_dump_exploded_nodes (0); + will dump just the number of nodes, and their IDs. + + __analyzer_dump_exploded_nodes (1); + will also dump all of the states within those nodes. */ +extern void __analyzer_dump_exploded_nodes (int); + +extern void __analyzer_dump_num_heap_regions (void); + +/* Emit a placeholder "note" diagnostic with a path to this call site, + if the analyzer finds a feasible path to it. */ +extern void __analyzer_dump_path (void); + +/* Dump the region_model's state to stderr. */ +extern void __analyzer_dump_region_model (void); + +/* Emit a warning with text "TRUE", FALSE" or "UNKNOWN" based on the + truthfulness of the argument. */ +extern void __analyzer_eval (int); + +#endif /* #ifndef ANALYZER_DECLS_H. */ diff --git a/gcc/testsuite/gcc.dg/analyzer/conditionals-2.c b/gcc/testsuite/gcc.dg/analyzer/conditionals-2.c index f3f1ac77b493..6f291f4861b2 100644 --- a/gcc/testsuite/gcc.dg/analyzer/conditionals-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/conditionals-2.c @@ -2,6 +2,7 @@ /* { dg-additional-options "-O2" } */ #include <stddef.h> +#include "analyzer-decls.h" #define Z_NULL 0 diff --git a/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c b/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c index d19a8b76edee..5f29f215dd17 100644 --- a/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c @@ -1,5 +1,7 @@ /* { dg-additional-options "-fno-analyzer-state-merge" } */ +#include "analyzer-decls.h" + static void only_called_when_flag_a_true (int i) { __analyzer_eval (i == 42); /* { dg-warning "TRUE" } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c b/gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c index 79ffe74b4ed3..8e4ea5f58a71 100644 --- a/gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c +++ b/gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c @@ -1,4 +1,5 @@ /* { dg-additional-options "-fno-analyzer-transitivity" } */ +#include "analyzer-decls.h" void test (int i, int j) { diff --git a/gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c b/gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c index 3f7eb5b48623..ab34618c4110 100644 --- a/gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c +++ b/gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c @@ -1,4 +1,5 @@ /* { dg-additional-options "-fanalyzer-transitivity" } */ +#include "analyzer-decls.h" void test (int i, int j) { diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-1.c b/gcc/testsuite/gcc.dg/analyzer/data-model-1.c index d720a64a3f6e..a5840a259446 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-1.c @@ -1,6 +1,7 @@ #include <stdlib.h> #include <string.h> #include <stdio.h> +#include "analyzer-decls.h" struct foo { diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-16.c b/gcc/testsuite/gcc.dg/analyzer/data-model-16.c index 3bfdbdd18740..a8acfbeeb77a 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-16.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-16.c @@ -1,5 +1,7 @@ /* Labels as values. */ +#include "analyzer-decls.h" + extern void foo (void); void *x, *y, *z; diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-18.c b/gcc/testsuite/gcc.dg/analyzer/data-model-18.c index 88ea41df79ef..7b096b0674d6 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-18.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-18.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + void test (int *p, int i, int j) { p[3] = 42; diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-5d.c b/gcc/testsuite/gcc.dg/analyzer/data-model-5d.c index 50ab0ac31255..8c7bfa91a968 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-5d.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-5d.c @@ -3,6 +3,7 @@ #include <stddef.h> #include <string.h> #include <stdlib.h> +#include "analyzer-decls.h" typedef struct base_obj base_obj; typedef struct type_obj type_obj; diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-6.c b/gcc/testsuite/gcc.dg/analyzer/data-model-6.c index 8b63ab2e2558..78a797ead76e 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-6.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-6.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" /* Verify that we don't accumulate state after a malloc/free pair. */ diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-7.c b/gcc/testsuite/gcc.dg/analyzer/data-model-7.c index 6c8ab0ac958f..67a681be607f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-7.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-7.c @@ -1,4 +1,5 @@ /* { dg-additional-options "-fno-analyzer-state-merge" } */ +#include "analyzer-decls.h" int test_40 (int flag) { diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-8.c b/gcc/testsuite/gcc.dg/analyzer/data-model-8.c index 2c83c75d9e62..aff903691960 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-8.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-8.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + struct base { int i; diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-9.c b/gcc/testsuite/gcc.dg/analyzer/data-model-9.c index a1a46c6952ad..bab4b573f5bd 100644 --- a/gcc/testsuite/gcc.dg/analyzer/data-model-9.c +++ b/gcc/testsuite/gcc.dg/analyzer/data-model-9.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <string.h> +#include "analyzer-decls.h" struct foo { diff --git a/gcc/testsuite/gcc.dg/analyzer/equivalence.c b/gcc/testsuite/gcc.dg/analyzer/equivalence.c index fb2866014026..609b6fdef50c 100644 --- a/gcc/testsuite/gcc.dg/analyzer/equivalence.c +++ b/gcc/testsuite/gcc.dg/analyzer/equivalence.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + void test (int p, int q, int r) { if (p == 42) diff --git a/gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c b/gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c index 81044a7922d5..411b1b39377f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" typedef void (*fn_ptr_t) (void *); diff --git a/gcc/testsuite/gcc.dg/analyzer/loop-2.c b/gcc/testsuite/gcc.dg/analyzer/loop-2.c index 2a6edc4d6a96..595f23915caa 100644 --- a/gcc/testsuite/gcc.dg/analyzer/loop-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/loop-2.c @@ -1,4 +1,5 @@ /* { dg-additional-options "-fno-analyzer-state-purge" } */ +#include "analyzer-decls.h" struct s { diff --git a/gcc/testsuite/gcc.dg/analyzer/loop-2a.c b/gcc/testsuite/gcc.dg/analyzer/loop-2a.c index 94eff82a8ab5..d50bfe0f31b7 100644 --- a/gcc/testsuite/gcc.dg/analyzer/loop-2a.c +++ b/gcc/testsuite/gcc.dg/analyzer/loop-2a.c @@ -1,4 +1,5 @@ /* { dg-additional-options "-fno-analyzer-state-purge" } */ +#include "analyzer-decls.h" union u { diff --git a/gcc/testsuite/gcc.dg/analyzer/loop-4.c b/gcc/testsuite/gcc.dg/analyzer/loop-4.c index 7e3e7ab98eeb..105237570d1f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/loop-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/loop-4.c @@ -3,6 +3,8 @@ /* Example of nested loops. */ +#include "analyzer-decls.h" + void test(void) { int i, j, k; diff --git a/gcc/testsuite/gcc.dg/analyzer/loop.c b/gcc/testsuite/gcc.dg/analyzer/loop.c index 32fb0516ea1a..3f29fa6146e2 100644 --- a/gcc/testsuite/gcc.dg/analyzer/loop.c +++ b/gcc/testsuite/gcc.dg/analyzer/loop.c @@ -1,5 +1,7 @@ /* { dg-additional-options "-fno-analyzer-state-purge" } */ +#include "analyzer-decls.h" + void test(void) { int i; diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-10.c b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-10.c index 3eb5ffc8e8fe..2a2937ed043e 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-10.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-10.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" int test (int flag) { diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c index d7dfb0643036..72360c2f9fad 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c @@ -1,6 +1,7 @@ /* { dg-additional-options "-fno-analyzer-call-summaries -fanalyzer-transitivity" } */ #include <stdlib.h> +#include "analyzer-decls.h" extern int foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c index 7f1dd911dfb2..1997bb7adb42 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c @@ -1,6 +1,7 @@ /* { dg-additional-options "-fanalyzer-call-summaries" } */ #include <stdlib.h> +#include "analyzer-decls.h" extern int foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c index 03078729b5fd..74d9687b960f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" extern int foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c index 2a0c8a49d1a9..fe9b240be5b7 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-3.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" extern int foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/operations.c b/gcc/testsuite/gcc.dg/analyzer/operations.c index 9ea232728d4a..0f8aad21afe7 100644 --- a/gcc/testsuite/gcc.dg/analyzer/operations.c +++ b/gcc/testsuite/gcc.dg/analyzer/operations.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + void test (int i, int j) { int k, m; diff --git a/gcc/testsuite/gcc.dg/analyzer/params-2.c b/gcc/testsuite/gcc.dg/analyzer/params-2.c index 1584ebdd63d9..433c658720f2 100644 --- a/gcc/testsuite/gcc.dg/analyzer/params-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/params-2.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" static void ensure_equal (int a, int b) { diff --git a/gcc/testsuite/gcc.dg/analyzer/params.c b/gcc/testsuite/gcc.dg/analyzer/params.c index ff405f2224b2..02371da98871 100644 --- a/gcc/testsuite/gcc.dg/analyzer/params.c +++ b/gcc/testsuite/gcc.dg/analyzer/params.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + static int called_function(int j) { int k; diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-1.c b/gcc/testsuite/gcc.dg/analyzer/paths-1.c index 246f6cdfb5d5..064687744723 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-1.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + struct foo { int m_flag; diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-1a.c b/gcc/testsuite/gcc.dg/analyzer/paths-1a.c index a6e2679cc1aa..8760de93499f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-1a.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-1a.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + union foo { int m_flag; diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-2.c b/gcc/testsuite/gcc.dg/analyzer/paths-2.c index 8637c8c9ace9..c48a2d7758c5 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-2.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + int test (int a) { if (a != 42 && a != 113) { diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-3.c b/gcc/testsuite/gcc.dg/analyzer/paths-3.c index d03ab02f203d..440213b79915 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-3.c @@ -1,6 +1,7 @@ /* { dg-additional-options "-fanalyzer-transitivity" } */ #include <stdlib.h> +#include "analyzer-decls.h" int test_1 (int a, int b) { diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-4.c b/gcc/testsuite/gcc.dg/analyzer/paths-4.c index 307bc976dba4..34bd09eee057 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-4.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + struct state { int mode; diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-5.c b/gcc/testsuite/gcc.dg/analyzer/paths-5.c index d3589b597c3c..f96169d9d2bc 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-5.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + void test (int *p, int n) { int i; diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-6.c b/gcc/testsuite/gcc.dg/analyzer/paths-6.c index bf4b6f349475..7a1a94228dd9 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-6.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-6.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" /* Verify that ordering of writes doesn't matter when merging states. */ diff --git a/gcc/testsuite/gcc.dg/analyzer/paths-7.c b/gcc/testsuite/gcc.dg/analyzer/paths-7.c index 7a0826ddc51d..6a99e64439fc 100644 --- a/gcc/testsuite/gcc.dg/analyzer/paths-7.c +++ b/gcc/testsuite/gcc.dg/analyzer/paths-7.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include "analyzer-decls.h" extern int foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c index 7afe66ebeb4b..2ba3913b4c75 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c @@ -2,6 +2,7 @@ #include <setjmp.h> #include <stddef.h> +#include "analyzer-decls.h" extern void foo (int); diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c index 36814a7d366c..e89599c42878 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c @@ -2,6 +2,7 @@ #include <setjmp.h> #include <stddef.h> +#include "analyzer-decls.h" extern int foo (int) __attribute__ ((__pure__)); diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c index c45efd43e6ac..a5b9e9d5d3d6 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c @@ -1,6 +1,7 @@ /* { dg-additional-options "-fdiagnostics-show-line-numbers -fdiagnostics-nn-line-numbers -fdiagnostics-path-format=inline-events -fdiagnostics-show-caret" } */ #include <setjmp.h> +#include "analyzer-decls.h" extern int foo (int) __attribute__ ((__pure__)); static jmp_buf buf; diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c index faac51c664ef..e9d49b41a6e3 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c @@ -2,6 +2,7 @@ #include <setjmp.h> #include <stddef.h> +#include "analyzer-decls.h" static jmp_buf env; diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c index 41f00a763395..f876b8f8a12f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c @@ -2,6 +2,7 @@ #include <setjmp.h> #include <stddef.h> +#include "analyzer-decls.h" extern int foo (int) __attribute__ ((__pure__)); diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c index b442f6355ae3..153676bca8c1 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c @@ -2,6 +2,7 @@ #include <setjmp.h> #include <stddef.h> +#include "analyzer-decls.h" extern int foo (int) __attribute__ ((__pure__)); diff --git a/gcc/testsuite/gcc.dg/analyzer/switch.c b/gcc/testsuite/gcc.dg/analyzer/switch.c index e26177067fa8..ad4b6568dc2a 100644 --- a/gcc/testsuite/gcc.dg/analyzer/switch.c +++ b/gcc/testsuite/gcc.dg/analyzer/switch.c @@ -1,5 +1,7 @@ /* { dg-additional-options "-fanalyzer-transitivity" } */ +#include "analyzer-decls.h" + void test (int i) { switch (i) diff --git a/gcc/testsuite/gcc.dg/analyzer/zlib-1.c b/gcc/testsuite/gcc.dg/analyzer/zlib-1.c index 52d3c629db72..5537c984e1aa 100644 --- a/gcc/testsuite/gcc.dg/analyzer/zlib-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/zlib-1.c @@ -1,3 +1,5 @@ +#include "analyzer-decls.h" + typedef void (*free_func)(void *opaque, void *address); typedef struct z_stream_s { diff --git a/gcc/testsuite/gcc.dg/analyzer/zlib-5.c b/gcc/testsuite/gcc.dg/analyzer/zlib-5.c index bcf8a0a4a9b0..715604dbe774 100644 --- a/gcc/testsuite/gcc.dg/analyzer/zlib-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/zlib-5.c @@ -1,5 +1,7 @@ /* { dg-additional-options "-O3" } */ +#include "analyzer-decls.h" + typedef long unsigned int size_t; typedef unsigned char Byte; typedef unsigned int uInt; -- 2.21.0