Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. Pushed to dmalcolm/analyzer on the GCC git mirror.
gcc/testsuite/ChangeLog: * gcc.dg/analyzer/analyzer-verbosity-0.c: Update expected output to remove source code from diagnostic locus, made redundant by path. Remove interprocedural margin and event-run header from purely intraprocedural case. * gcc.dg/analyzer/analyzer-verbosity-1.c: Likewise. * gcc.dg/analyzer/analyzer-verbosity-2.c: Likewise. * gcc.dg/analyzer/malloc-ipa-11.c: Update to remove source code for diagnostic locus. * gcc.dg/analyzer/malloc-ipa-8-double-free.c: Likewise. * gcc.dg/analyzer/malloc-ipa-8-unchecked.c: Likewise. * gcc.dg/analyzer/malloc-macro-inline-events.c: Likewise, also to remove function names from event-run headers and remove interprocedural margin. * gcc.dg/analyzer/malloc-paths-9.c: Update to remove source code for diagnostic locus, event-run header, and interprocedural margin. * gcc.dg/analyzer/setjmp-2.c: Update to remove source code for diagnostic locus, function name from event-run headers, and interprocedural margin. * gcc.dg/analyzer/setjmp-3.c: Update to remove source code for diagnostic locus. * gcc.dg/analyzer/setjmp-4.c: Likewise. * gcc.dg/analyzer/setjmp-5.c: Likewise. * gcc.dg/analyzer/setjmp-7a.c: Likewise. * gcc.dg/analyzer/setjmp-8.c: Likewise. * gcc.dg/analyzer/setjmp-9.c: Likewise. * gcc.dg/analyzer/signal-4a.c: Likewise. * gcc.dg/analyzer/signal-4b.c: Likewise. --- .../gcc.dg/analyzer/analyzer-verbosity-0.c | 23 +- .../gcc.dg/analyzer/analyzer-verbosity-1.c | 23 +- .../gcc.dg/analyzer/analyzer-verbosity-2.c | 23 +- gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c | 2 - .../analyzer/malloc-ipa-8-double-free.c | 2 - .../gcc.dg/analyzer/malloc-ipa-8-unchecked.c | 2 - .../analyzer/malloc-macro-inline-events.c | 32 +- .../gcc.dg/analyzer/malloc-paths-9.c | 387 ++++++++---------- gcc/testsuite/gcc.dg/analyzer/setjmp-2.c | 78 ++-- gcc/testsuite/gcc.dg/analyzer/setjmp-3.c | 2 - gcc/testsuite/gcc.dg/analyzer/setjmp-4.c | 2 - gcc/testsuite/gcc.dg/analyzer/setjmp-5.c | 2 - gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c | 2 - gcc/testsuite/gcc.dg/analyzer/setjmp-8.c | 2 - gcc/testsuite/gcc.dg/analyzer/setjmp-9.c | 2 - gcc/testsuite/gcc.dg/analyzer/signal-4a.c | 2 - gcc/testsuite/gcc.dg/analyzer/signal-4b.c | 2 - 17 files changed, 238 insertions(+), 350 deletions(-) diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c index 1103cc6642d3..bf5ec32c0def 100644 --- a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c +++ b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c @@ -20,8 +20,6 @@ void test_1 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_1': event 1 | | NN | calls_free_1 (ptr); @@ -90,8 +88,6 @@ void test_2 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_2': event 1 | | NN | calls_free_2 (ptr); @@ -147,16 +143,11 @@ void test_3 (void *ptr) /* { dg-begin-multiline-output "" } NN | free (ptr); | ^~~~~~~~~~ - 'test_3': events 1-2 - | - | NN | free (ptr); - | | ^~~~~~~~~~ - | | | - | | (1) first 'free' here - | NN | called_by_test_3 (); - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (2) second 'free' here; first 'free' was at (1) - | + | | + | (1) first 'free' here + NN | called_by_test_3 (); + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (2) second 'free' here; first 'free' was at (1) { dg-end-multiline-output "" } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c index 80039d5d9d24..b678790dbc9b 100644 --- a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c @@ -20,8 +20,6 @@ void test_1 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_1': events 1-2 | | NN | void test_1 (void *ptr, int a, int b) @@ -105,8 +103,6 @@ void test_2 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_2': events 1-2 | | NN | void test_2 (void *ptr, int a, int b) @@ -175,16 +171,11 @@ void test_3 (void *ptr) /* { dg-begin-multiline-output "" } NN | free (ptr); | ^~~~~~~~~~ - 'test_3': events 1-2 - | - | NN | free (ptr); - | | ^~~~~~~~~~ - | | | - | | (1) first 'free' here - | NN | called_by_test_3 (); - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (2) second 'free' here; first 'free' was at (1) - | + | | + | (1) first 'free' here + NN | called_by_test_3 (); + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (2) second 'free' here; first 'free' was at (1) { dg-end-multiline-output "" } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c index 9b87d43544fe..d02207774e69 100644 --- a/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c @@ -20,8 +20,6 @@ void test_1 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_1': events 1-4 | | NN | void test_1 (void *ptr, int a, int b) @@ -116,8 +114,6 @@ void test_2 (void *ptr, int a, int b) } /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test_2': events 1-4 | | NN | void test_2 (void *ptr, int a, int b) @@ -206,16 +202,11 @@ void test_3 (void *ptr) /* { dg-begin-multiline-output "" } NN | free (ptr); | ^~~~~~~~~~ - 'test_3': events 1-2 - | - | NN | free (ptr); - | | ^~~~~~~~~~ - | | | - | | (1) first 'free' here - | NN | called_by_test_3 (); - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (2) second 'free' here; first 'free' was at (1) - | + | | + | (1) first 'free' here + NN | called_by_test_3 (); + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (2) second 'free' here; first 'free' was at (1) { dg-end-multiline-output "" } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c index d02250f16f60..5a49f5d41129 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c @@ -28,8 +28,6 @@ void test (void *ptr) } /* { dg-begin-multiline-output "" } - NN | free (victim); - | ^~~~~~~~~~~~~ 'test': events 1-2 | | NN | void test (void *ptr) diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c index 50d907f738c1..c848125bd576 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-double-free.c @@ -46,8 +46,6 @@ void test (int i) /* double-'free'. */ /* { dg-begin-multiline-output "" } - NN | free (ptr); - | ^~~~~~~~~~ 'test': events 1-2 | | NN | void test (int i) diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c index f204331f0a95..35a7a296b8d1 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-ipa-8-unchecked.c @@ -24,8 +24,6 @@ make_boxed_int (int i) /* "dereference of possibly-NULL 'result' [CWE-690]". */ /* { dg-begin-multiline-output "" } - NN | result->i = i; - | ~~~~~~~~~~^~~ 'make_boxed_int': events 1-2 | | NN | make_boxed_int (int i) diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c b/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c index fad6d6e63744..6f355ca71e8d 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-macro-inline-events.c @@ -17,29 +17,21 @@ int test (void *ptr) /* { dg-regexp "\[^|\]+/malloc-macro.h:\[0-9\]+:\[0-9\]+:" } */ /* { dg-begin-multiline-output "" } + event 1 + + NN | #define WRAPPED_FREE(PTR) free(PTR) + | ^~~~~~~~~ + | | + | (1) first 'free' here + NN | WRAPPED_FREE (ptr); + | ^~~~~~~~~~~~ + event 2 + NN | #define WRAPPED_FREE(PTR) free(PTR) | ^~~~~~~~~ + | | + | (2) second 'free' here; first 'free' was at (1) NN | WRAPPED_FREE (ptr); | ^~~~~~~~~~~~ - 'test': event 1 - | - | - | NN | #define WRAPPED_FREE(PTR) free(PTR) - | | ^~~~~~~~~ - | | | - | | (1) first 'free' here - | NN | WRAPPED_FREE (ptr); - | | ^~~~~~~~~~~~ - | - 'test': event 2 - | - | - | NN | #define WRAPPED_FREE(PTR) free(PTR) - | | ^~~~~~~~~ - | | | - | | (2) second 'free' here; first 'free' was at (1) - | NN | WRAPPED_FREE (ptr); - | | ^~~~~~~~~~~~ - | { dg-end-multiline-output "" } */ } diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c index 6bee885e7de0..d456fee96115 100644 --- a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c +++ b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c @@ -9,23 +9,18 @@ void test_1 (void) free (ptr); /* { dg-warning "double-'free' of 'ptr'" } */ } /* { dg-begin-multiline-output "" } + NN | void *ptr = malloc (1024); + | ^~~~~~~~~~~~~ + | | + | (1) allocated here NN | free (ptr); - | ^~~~~~~~~~ - 'test_1': events 1-3 - | - | NN | void *ptr = malloc (1024); - | | ^~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (2) first 'free' here - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (3) second 'free' here; first 'free' was at (2) - | + | ~~~~~~~~~~ + | | + | (2) first 'free' here + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (3) second 'free' here; first 'free' was at (2) { dg-end-multiline-output "" } */ void test_2 (int x, int y) @@ -39,62 +34,52 @@ void test_2 (int x, int y) /* "double-'free' of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | void *ptr = malloc (1024); + | ^~~~~~~~~~~~~ + | | + | (1) allocated here + NN | if (x) + | ~ + | | + | (2) following 'true' branch (when 'x != 0')... + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (3) ...to here + | (4) first 'free' here + NN | if (y) + | ~ + | | + | (5) following 'true' branch (when 'y != 0')... NN | free (ptr); - | ^~~~~~~~~~ - 'test_2': events 1-7 - | - | NN | void *ptr = malloc (1024); - | | ^~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | if (x) - | | ~ - | | | - | | (2) following 'true' branch (when 'x != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (3) ...to here - | | (4) first 'free' here - | NN | if (y) - | | ~ - | | | - | | (5) following 'true' branch (when 'y != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (6) ...to here - | | (7) second 'free' here; first 'free' was at (4) - | + | ~~~~~~~~~~ + | | + | (6) ...to here + | (7) second 'free' here; first 'free' was at (4) { dg-end-multiline-output "" } */ /* "leak of 'ptr'. */ /* { dg-begin-multiline-output "" } + NN | void *ptr = malloc (1024); + | ^~~~~~~~~~~~~ + | | + | (1) allocated here + NN | if (x) + | ~ + | | + | (2) following 'false' branch (when 'x == 0')... + NN | free (ptr); + NN | if (y) + | ~ + | | + | (3) ...to here + | (4) following 'false' branch (when 'y == 0')... + NN | free (ptr); NN | } - | ^ - 'test_2': events 1-6 - | - | NN | void *ptr = malloc (1024); - | | ^~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | if (x) - | | ~ - | | | - | | (2) following 'false' branch (when 'x == 0')... - | NN | free (ptr); - | NN | if (y) - | | ~ - | | | - | | (3) ...to here - | | (4) following 'false' branch (when 'y == 0')... - | NN | free (ptr); - | NN | } - | | ~ - | | | - | | (5) ...to here - | | (6) 'ptr' leaks here; was allocated at (1) - | + | ~ + | | + | (5) ...to here + | (6) 'ptr' leaks here; was allocated at (1) { dg-end-multiline-output "" } */ int test_3 (int x, int y) @@ -117,182 +102,152 @@ int test_3 (int x, int y) /* "dereference of possibly-NULL 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | int *ptr = (int *)malloc (sizeof (int)); + | ^~~~~~~~~~~~~~~~~~~~~ + | | + | (1) this call could return NULL NN | *ptr = 42; - | ~~~~~^~~~ - 'test_3': events 1-2 - | - | NN | int *ptr = (int *)malloc (sizeof (int)); - | | ^~~~~~~~~~~~~~~~~~~~~ - | | | - | | (1) this call could return NULL - | NN | *ptr = 42; - | | ~~~~~~~~~ - | | | - | | (2) 'ptr' could be NULL: unchecked value from (1) - | + | ~~~~~~~~~ + | | + | (2) 'ptr' could be NULL: unchecked value from (1) { dg-end-multiline-output "" } */ /* "use after 'free' of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | int *ptr = (int *)malloc (sizeof (int)); + | ^~~~~~~~~~~~~~~~~~~~~ + | | + | (1) allocated here + NN | *ptr = 42; + | ~~~~~~~~~ + | | + | (2) assuming 'ptr' is non-NULL + NN | if (x) + | ~ + | | + | (3) following 'true' branch (when 'x != 0')... + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (4) ...to here + | (5) freed here + NN | NN | *ptr = 19; - | ~~~~~^~~~ - 'test_3': events 1-6 - | - | NN | int *ptr = (int *)malloc (sizeof (int)); - | | ^~~~~~~~~~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | *ptr = 42; - | | ~~~~~~~~~ - | | | - | | (2) assuming 'ptr' is non-NULL - | NN | if (x) - | | ~ - | | | - | | (3) following 'true' branch (when 'x != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (4) ...to here - | | (5) freed here - | NN | - | NN | *ptr = 19; - | | ~~~~~~~~~ - | | | - | | (6) use after 'free' of 'ptr'; freed at (5) - | + | ~~~~~~~~~ + | | + | (6) use after 'free' of 'ptr'; freed at (5) { dg-end-multiline-output "" } */ /* "use after 'free' of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | int *ptr = (int *)malloc (sizeof (int)); + | ^~~~~~~~~~~~~~~~~~~~~ + | | + | (1) allocated here + NN | *ptr = 42; + | ~~~~~~~~~ + | | + | (2) assuming 'ptr' is non-NULL + NN | if (x) + | ~ + | | + | (3) following 'false' branch (when 'x == 0')... +...... + NN | *ptr = 19; + | ~~~~~~~~~ + | | + | (4) ...to here +...... + NN | if (y) + | ~ + | | + | (5) following 'true' branch (when 'y != 0')... + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (6) ...to here + | (7) freed here + NN | NN | return *ptr; - | ^~~~ - 'test_3': events 1-8 - | - | NN | int *ptr = (int *)malloc (sizeof (int)); - | | ^~~~~~~~~~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | *ptr = 42; - | | ~~~~~~~~~ - | | | - | | (2) assuming 'ptr' is non-NULL - | NN | if (x) - | | ~ - | | | - | | (3) following 'false' branch (when 'x == 0')... - |...... - | NN | *ptr = 19; - | | ~~~~~~~~~ - | | | - | | (4) ...to here - |...... - | NN | if (y) - | | ~ - | | | - | | (5) following 'true' branch (when 'y != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (6) ...to here - | | (7) freed here - | NN | - | NN | return *ptr; - | | ~~~~ - | | | - | | (8) use after 'free' of 'ptr'; freed at (7) - | + | ~~~~ + | | + | (8) use after 'free' of 'ptr'; freed at (7) { dg-end-multiline-output "" } */ /* "leak of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | int *ptr = (int *)malloc (sizeof (int)); + | ^~~~~~~~~~~~~~~~~~~~~ + | | + | (1) allocated here + NN | *ptr = 42; + | ~~~~~~~~~ + | | + | (2) assuming 'ptr' is non-NULL + NN | if (x) + | ~ + | | + | (3) following 'false' branch (when 'x == 0')... +...... + NN | *ptr = 19; + | ~~~~~~~~~ + | | + | (4) ...to here +...... + NN | if (y) + | ~ + | | + | (5) following 'false' branch (when 'y == 0')... +...... NN | return *ptr; - | ^~~~ - 'test_3': events 1-7 - | - | NN | int *ptr = (int *)malloc (sizeof (int)); - | | ^~~~~~~~~~~~~~~~~~~~~ - | | | - | | (1) allocated here - | NN | *ptr = 42; - | | ~~~~~~~~~ - | | | - | | (2) assuming 'ptr' is non-NULL - | NN | if (x) - | | ~ - | | | - | | (3) following 'false' branch (when 'x == 0')... - |...... - | NN | *ptr = 19; - | | ~~~~~~~~~ - | | | - | | (4) ...to here - |...... - | NN | if (y) - | | ~ - | | | - | | (5) following 'false' branch (when 'y == 0')... - |...... - | NN | return *ptr; - | | ~~~~ - | | | - | | (6) ...to here - | | (7) 'ptr' leaks here; was allocated at (1) - | + | ~~~~ + | | + | (6) ...to here + | (7) 'ptr' leaks here; was allocated at (1) { dg-end-multiline-output "" } */ /* "use after 'free' of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | if (x) + | ^ + | | + | (1) following 'true' branch (when 'x != 0')... + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (2) ...to here + NN | NN | *ptr = 19; - | ~~~~~^~~~ - 'test_3': events 1-3 - | - | NN | if (x) - | | ^ - | | | - | | (1) following 'true' branch (when 'x != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (2) ...to here - | NN | - | NN | *ptr = 19; - | | ~~~~~~~~~ - | | | - | | (3) use after 'free' of 'ptr' here - | + | ~~~~~~~~~ + | | + | (3) use after 'free' of 'ptr' here { dg-end-multiline-output "" } */ /* "use after 'free' of 'ptr'". */ /* { dg-begin-multiline-output "" } + NN | if (x) + | ^ + | | + | (1) following 'false' branch (when 'x == 0')... +...... + NN | *ptr = 19; + | ~~~~~~~~~ + | | + | (2) ...to here +...... + NN | if (y) + | ~ + | | + | (3) following 'true' branch (when 'y != 0')... + NN | free (ptr); + | ~~~~~~~~~~ + | | + | (4) ...to here + NN | to dereference it above NN | return *ptr; - | ^~~~ - 'test_3': events 1-5 - | - | NN | if (x) - | | ^ - | | | - | | (1) following 'false' branch (when 'x == 0')... - |...... - | NN | *ptr = 19; - | | ~~~~~~~~~ - | | | - | | (2) ...to here - |...... - | NN | if (y) - | | ~ - | | | - | | (3) following 'true' branch (when 'y != 0')... - | NN | free (ptr); - | | ~~~~~~~~~~ - | | | - | | (4) ...to here - | NN | to dereference it above - | NN | return *ptr; - | | ~~~~ - | | | - | | (5) use after 'free' of 'ptr' here - | + | ~~~~ + | | + | (5) use after 'free' of 'ptr' here { dg-end-multiline-output "" } */ /* TODO: this is really a duplicate; can we either eliminate it, or improve the path? */ diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c index 2ba3913b4c75..b7ce6ef8cc68 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c @@ -34,51 +34,41 @@ void test_2 (void) } /* { dg-begin-multiline-output "" } + event 1 + NN | i = setjmp(env); + | ^~~~~~ + | | + | (1) 'setjmp' called here + events 2-4 + NN | if (i != 0) + | ^ + | | + | (2) following 'false' branch (when 'i == 0')... +...... + NN | longjmp (env, 1); + | ~~~~~~~~~~~~~~~~ + | | + | (3) ...to here + | (4) rewinding within 'test_2' from 'longjmp'... + event 5 + NN | i = setjmp(env); + | ^~~~~~ + | | + | (5) ...to 'setjmp' (saved at (1)) + events 6-8 + NN | if (i != 0) + | ^ + | | + | (6) following 'true' branch (when 'i != 0')... + NN | { + NN | foo (2); + | ~~~~~~~ + | | + | (7) ...to here NN | __analyzer_dump_path (); - | ^~~~~~~~~~~~~~~~~~~~~~~ - 'test_2': event 1 - | - | NN | i = setjmp(env); - | | ^~~~~~ - | | | - | | (1) 'setjmp' called here - | - 'test_2': events 2-4 - | - | NN | if (i != 0) - | | ^ - | | | - | | (2) following 'false' branch (when 'i == 0')... - |...... - | NN | longjmp (env, 1); - | | ~~~~~~~~~~~~~~~~ - | | | - | | (3) ...to here - | | (4) rewinding within 'test_2' from 'longjmp'... - | - 'test_2': event 5 - | - | NN | i = setjmp(env); - | | ^~~~~~ - | | | - | | (5) ...to 'setjmp' (saved at (1)) - | - 'test_2': events 6-8 - | - | NN | if (i != 0) - | | ^ - | | | - | | (6) following 'true' branch (when 'i != 0')... - | NN | { - | NN | foo (2); - | | ~~~~~~~ - | | | - | | (7) ...to here - | NN | __analyzer_dump_path (); - | | ~~~~~~~~~~~~~~~~~~~~~~~ - | | | - | | (8) here - | + | ~~~~~~~~~~~~~~~~~~~~~~~ + | | + | (8) here { dg-end-multiline-output "" } */ void test_3 (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c index e89599c42878..25e81d5cf6c9 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c @@ -35,8 +35,6 @@ void outer (void) } /* { dg-begin-multiline-output "" } - NN | __analyzer_dump_path (); - | ^~~~~~~~~~~~~~~~~~~~~~~ 'outer': event 1 | | NN | void outer (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c index a5b9e9d5d3d6..4efcf41c37d2 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-4.c @@ -30,8 +30,6 @@ int main (void) } /* { dg-begin-multiline-output "" } - NN | __analyzer_dump_path (); - | ^~~~~~~~~~~~~~~~~~~~~~~ 'main': event 1 | | NN | int main (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c index e9d49b41a6e3..71cfadfa1590 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-5.c @@ -21,8 +21,6 @@ void outer (void) } /* { dg-begin-multiline-output "" } - NN | longjmp (env, 42); - | ^~~~~~~~~~~~~~~~~ 'outer': events 1-2 | | NN | void outer (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c index a462f62649fc..06be82673c67 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c @@ -37,8 +37,6 @@ void outer (void) } /* { dg-begin-multiline-output "" } - NN | longjmp (env, 1); - | ^~~~~~~~~~~~~~~~ 'outer': event 1 | | NN | void outer (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c index f876b8f8a12f..6c391f3c9f47 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-8.c @@ -36,8 +36,6 @@ void outer (void) } /* { dg-begin-multiline-output "" } - NN | __analyzer_dump_path (); - | ^~~~~~~~~~~~~~~~~~~~~~~ 'outer': event 1 | | NN | void outer (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c index 153676bca8c1..a26218396c35 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-9.c @@ -38,8 +38,6 @@ void outer (void) } /* { dg-begin-multiline-output "" } - NN | __analyzer_dump_path (); - | ^~~~~~~~~~~~~~~~~~~~~~~ 'outer': event 1 | | NN | void outer (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/signal-4a.c b/gcc/testsuite/gcc.dg/analyzer/signal-4a.c index 19e6b83b032a..9a1a13da06dd 100644 --- a/gcc/testsuite/gcc.dg/analyzer/signal-4a.c +++ b/gcc/testsuite/gcc.dg/analyzer/signal-4a.c @@ -28,8 +28,6 @@ void test (void) /* "call to 'fprintf' from within signal handler [CWE-479]". */ /* { dg-begin-multiline-output "" } - NN | fprintf(stderr, "LOG: %s", msg); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'test': events 1-2 | | NN | void test (void) diff --git a/gcc/testsuite/gcc.dg/analyzer/signal-4b.c b/gcc/testsuite/gcc.dg/analyzer/signal-4b.c index 764af10b1b64..53d0f2e82399 100644 --- a/gcc/testsuite/gcc.dg/analyzer/signal-4b.c +++ b/gcc/testsuite/gcc.dg/analyzer/signal-4b.c @@ -31,8 +31,6 @@ void test (void) /* "call to 'fprintf' from within signal handler [CWE-479]". */ /* { dg-begin-multiline-output "" } - NN | fprintf(stderr, "LOG: %s", msg); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'test': events 1-2 | | NN | void test (void) -- 2.21.0