On Linux/x86_64, aef703cf982072427e74034f4c460a11c5e04b8e is the first bad commit commit aef703cf982072427e74034f4c460a11c5e04b8e Author: Ankur Saini <arse...@sourceware.org> Date: Thu Jul 29 15:48:07 2021 +0530
analyzer: detect and analyze calls via function pointer caused FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c expected multiline pattern lines 24-60 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_1': event 1.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(1\) calling 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': event 2.*\n \|.*\n \| NN \| free \(ptr\);.*\n \| \| \^~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': events 3-4.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) returning to 'test_1' from 'calls_free_1'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) passing freed pointer 'ptr' in call to 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': event 5.*\n \|.*\n \| NN \| free \(ptr\);.*\n \| \| \^~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) second 'free' here; first 'free' was at \(2\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c expected multiline pattern lines 94-130 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_2': event 1.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(1\) calling 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': event 2.*\n \|.*\n \| NN \| free \(ptr\);.*\n \| \| \^~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_2': events 3-4.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': event 5.*\n \|.*\n \| NN \| free \(ptr\);.*\n \| \| \^~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) second 'free' here; first 'free' was at \(2\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c expected multiline pattern lines 109-160 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_2': events 1-2.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) calling 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 3-4.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_2': events 5-6.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 7-8.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(8\) second 'free' here; first 'free' was at \(4\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c expected multiline pattern lines 24-75 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_1': events 1-2.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_1'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) calling 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 3-4.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': events 5-6.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) returning to 'test_1' from 'calls_free_1'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) passing freed pointer 'ptr' in call to 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 7-8.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(8\) second 'free' here; first 'free' was at \(4\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-2.c expected multiline pattern lines 120-189 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_2': events 1-4.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_2'.*\n \| NN \| \{.*\n \| NN \| switch \(a\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| \| \(2\) following 'case 3:' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| case 3:.*\n \| \| ~~~~\n \| \| \|.*\n \| \| \(3\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) calling 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 5-6.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_2': events 7-10.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| switch \(b\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| \| \(8\) following 'default:' branch\.\.\..*\n \| NN \| \{.*\n \| NN \| default:.*\n \| \| ~~~~~~~\n \| \| \|.*\n \| \| \(9\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(10\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 11-12.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-2.c expected multiline pattern lines 24-86 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_1': events 1-4.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_1'.*\n \| NN \| \{.*\n \| NN \| if \(a\).*\n \| \| ~\n \| \| \|.*\n \| \| \(2\) following 'true' branch \(when 'a != 0'\)\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) \.\.\.to here.*\n \| \| \(4\) calling 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 5-6.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': events 7-10.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_1' from 'calls_free_1'.*\n \| NN \| .*\n \| NN \| if \(b\).*\n \| \| ~\n \| \| \|.*\n \| \| \(8\) following 'false' branch \(when 'b == 0'\)\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(9\) \.\.\.to here.*\n \| \| \(10\) passing freed pointer 'ptr' in call to 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 11-12.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-2.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-3.c expected multiline pattern lines 120-189 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_2': events 1-4.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_2'.*\n \| NN \| \{.*\n \| NN \| switch \(a\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| \| \(2\) following 'case 3:' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| case 3:.*\n \| \| ~~~~\n \| \| \|.*\n \| \| \(3\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) calling 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 5-6.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_2': events 7-10.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| switch \(b\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| \| \(8\) following 'default:' branch\.\.\..*\n \| NN \| \{.*\n \| NN \| default:.*\n \| \| ~~~~~~~\n \| \| \|.*\n \| \| \(9\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(10\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 11-12.*\n \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-3.c expected multiline pattern lines 24-86 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test_1': events 1-4.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test_1'.*\n \| NN \| \{.*\n \| NN \| if \(a\).*\n \| \| ~\n \| \| \|.*\n \| \| \(2\) following 'true' branch \(when 'a != 0'\)\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) \.\.\.to here.*\n \| \| \(4\) calling 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 5-6.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': events 7-10.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_1' from 'calls_free_1'.*\n \| NN \| .*\n \| NN \| if \(b\).*\n \| \| ~\n \| \| \|.*\n \| \| \(8\) following 'false' branch \(when 'b == 0'\)\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(9\) \.\.\.to here.*\n \| \| \(10\) passing freed pointer 'ptr' in call to 'calls_free_1' from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': events 11-12.*\n \|.*\n \| NN \| void calls_free_1 \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-3.c (test for excess errors) FAIL: gcc.dg/analyzer/data-model-path-1.c (test for warnings, line 11) FAIL: gcc.dg/analyzer/function-ptr-2.c (test for excess errors) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 29) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 30) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 36) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 37) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 43) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 55) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 56) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 64) FAIL: gcc.dg/analyzer/malloc-callbacks.c (test for warnings, line 66) FAIL: gcc.dg/analyzer/malloc-ipa-10.c (test for warnings, line 29) FAIL: gcc.dg/analyzer/malloc-ipa-11.c expected multiline pattern lines 32-95 not found: "\s*NN \| free \(victim\);.*\n \| \^~~~~~~~~~~~~\n 'test': events 1-2.*\n \|.*\n \| NN \| void test \(void \*ptr\).*\n \| \| \^~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test'.*\n \|\.\.\.\.\.\..*\n \| NN \| may_call_free \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) calling 'may_call_free' from 'test'.*\n \|.*\n \+--> 'may_call_free': events 3-6.*\n \|.*\n \| NN \| may_call_free \(void \*victim\).*\n \| \| \^~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) entry to 'may_call_free'.*\n \| NN \| \{.*\n \| NN \| if \(some_condition \(\)\).*\n \| \| ~\n \| \| \|.*\n \| \| \(4\) following 'false' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| free \(victim\);.*\n \| \| ~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) \.\.\.to here.*\n \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test': events 7-8.*\n \|.*\n \| NN \| may_call_free \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test' from 'may_call_free'.*\n \|\.\.\.\.\.\..*\n \| NN \| may_call_free \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(8\) passing freed pointer 'ptr' in call to 'may_call_free' from 'test'.*\n \|.*\n \+--> 'may_call_free': events 9-12.*\n \|.*\n \| NN \| may_call_free \(void \*victim\).*\n \| \| \^~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(9\) entry to 'may_call_free'.*\n \| NN \| \{.*\n \| NN \| if \(some_condition \(\)\).*\n \| \| ~\n \| \| \|.*\n \| \| \(10\) following 'false' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| NN \| free \(victim\);.*\n \| \| ~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) \.\.\.to here.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/malloc-ipa-11.c (test for excess errors) FAIL: gcc.dg/analyzer/malloc-ipa-13a.c (test for warnings, line 36) FAIL: gcc.dg/analyzer/malloc-ipa-13.c (test for warnings, line 26) FAIL: gcc.dg/analyzer/malloc-ipa-2.c (test for warnings, line 28) FAIL: gcc.dg/analyzer/malloc-ipa-5.c (test for warnings, line 10) FAIL: gcc.dg/analyzer/malloc-ipa-8-double-free.c expected multiline pattern lines 50-191 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n 'test': events 1-2.*\n \|.*\n \| NN \| void test \(int i\).*\n \| \| \^~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test'.*\n \| NN \| \{.*\n \| NN \| boxed_int \*obj = make_boxed_int \(i\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) calling 'make_boxed_int' from 'test'.*\n \|.*\n \+--> 'make_boxed_int': events 3-4.*\n \|.*\n \| NN \| make_boxed_int \(int i\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) entry to 'make_boxed_int'.*\n \| NN \| \{.*\n \| NN \| boxed_int \*result = \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) calling 'wrapped_malloc' from 'make_boxed_int'.*\n \|.*\n \+--> 'wrapped_malloc': events 5-6.*\n \|.*\n \| NN \| void \*wrapped_malloc \(size_t size\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) entry to 'wrapped_malloc'.*\n \| NN \| \{.*\n \| NN \| return malloc \(size\);.*\n \| \| ~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) allocated here.*\n \|.*\n <------\+.*\n \|.*\n 'make_boxed_int': events 7-10.*\n \|.*\n \| NN \| boxed_int \*result = \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'make_boxed_int' from 'wrapped_malloc'.*\n \| NN \| if \(!result\).*\n \| \| ~ .*\n \| \| \|.*\n \| \| \(8\) assuming 'result' is non-NULL.*\n \| \| \(9\) following 'false' branch \(when 'result' is non-NULL\)\.\.\..*\n \| NN \| abort \(\);.*\n \| NN \| result->i = i;.*\n \| \| ~~~~~~~~~~~~~ .*\n \| \| \|.*\n \| \| \(10\) \.\.\.to here.*\n \|.*\n <------\+.*\n \|.*\n 'test': events 11-12.*\n \|.*\n \| NN \| boxed_int \*obj = make_boxed_int \(i\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) returning to 'test' from 'make_boxed_int'.*\n \| NN \| .*\n \| NN \| free_boxed_int \(obj\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) calling 'free_boxed_int' from 'test'.*\n \|.*\n \+--> 'free_boxed_int': events 13-14.*\n \|.*\n \| NN \| free_boxed_int \(boxed_int \*bi\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(13\) entry to 'free_boxed_int'.*\n \| NN \| \{.*\n \| NN \| wrapped_free \(bi\);.*\n \| \| ~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(14\) calling 'wrapped_free' from 'free_boxed_int'.*\n \|.*\n \+--> 'wrapped_free': events 15-16.*\n \|.*\n \| NN \| void wrapped_free \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(15\) entry to 'wrapped_free'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(16\) first 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'free_boxed_int': event 17.*\n \|.*\n \| NN \| wrapped_free \(bi\);.*\n \| \| \^~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(17\) returning to 'free_boxed_int' from 'wrapped_free'.*\n \|.*\n <------\+.*\n \|.*\n 'test': events 18-19.*\n \|.*\n \| NN \| free_boxed_int \(obj\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(18\) returning to 'test' from 'free_boxed_int'.*\n \| NN \| .*\n \| NN \| free_boxed_int \(obj\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(19\) passing freed pointer 'obj' in call to 'free_boxed_int' from 'test'.*\n \|.*\n \+--> 'free_boxed_int': events 20-21.*\n \|.*\n \| NN \| free_boxed_int \(boxed_int \*bi\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(20\) entry to 'free_boxed_int'.*\n \| NN \| \{.*\n \| NN \| wrapped_free \(bi\);.*\n \| \| ~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(21\) passing freed pointer 'bi' in call to 'wrapped_free' from 'free_boxed_int'.*\n \|.*\n \+--> 'wrapped_free': events 22-23.*\n \|.*\n \| NN \| void wrapped_free \(void \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \| \|.*\n \| \| \(22\) entry to 'wrapped_free'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(23\) second 'free' here; first 'free' was at \(16\).*\n \|.*\n" FAIL: gcc.dg/analyzer/malloc-ipa-8-double-free.c (test for excess errors) FAIL: gcc.dg/analyzer/malloc-ipa-8-unchecked.c expected multiline pattern lines 28-66 not found: "\s*NN \| result->i = i;.*\n \| ~~~~~~~~~~\^~~\n 'make_boxed_int': events 1-2.*\n \|.*\n \| NN \| make_boxed_int \(int i\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'make_boxed_int'.*\n \| NN \| \{.*\n \| NN \| boxed_int \*result = \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(2\) calling 'wrapped_malloc' from 'make_boxed_int'.*\n \|.*\n \+--> 'wrapped_malloc': events 3-4.*\n \|.*\n \| NN \| void \*wrapped_malloc \(size_t size\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(3\) entry to 'wrapped_malloc'.*\n \| NN \| \{.*\n \| NN \| return malloc \(size\);.*\n \| \| ~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(4\) this call could return NULL.*\n \|.*\n <------\+.*\n \|.*\n 'make_boxed_int': events 5-6.*\n \|.*\n \| NN \| boxed_int \*result = \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) possible return of NULL to 'make_boxed_int' from 'wrapped_malloc'.*\n \| NN \| result->i = i;.*\n \| \| ~~~~~~~~~~~~~ .*\n \| \| \|.*\n \| \| \(6\) 'result' could be NULL: unchecked value from \(4\).*\n \|.*\n" FAIL: gcc.dg/analyzer/malloc-ipa-8-unchecked.c (test for excess errors) FAIL: gcc.dg/analyzer/pr101503.c (internal compiler error) FAIL: gcc.dg/analyzer/pr101503.c (test for excess errors) FAIL: gcc.dg/analyzer/sensitive-1.c (test for warnings, line 50) FAIL: gcc.dg/analyzer/sensitive-1.c (test for warnings, line 60) FAIL: g++.dg/analyzer/malloc.C -std=c++14 (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=c++17 (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=c++2a (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=c++98 (test for warnings, line 24) FAIL: gfortran.dg/analyzer/pr96949.f90 -O (internal compiler error) FAIL: gfortran.dg/analyzer/pr96949.f90 -O (test for excess errors) with GCC configured with To reproduce: $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-0.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-0.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-0.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-0.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-1.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-1.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-1.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-1.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-2.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-2.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-2.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-2.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-3.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-3.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-3.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/analyzer-verbosity-3.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/data-model-path-1.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/data-model-path-1.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/data-model-path-1.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/data-model-path-1.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/function-ptr-2.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/function-ptr-2.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/function-ptr-2.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/function-ptr-2.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-callbacks.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-callbacks.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-callbacks.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-callbacks.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-10.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-10.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-10.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-10.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-11.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-11.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-11.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-11.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13a.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13a.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13a.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13a.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-13.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-2.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-2.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-2.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-2.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-5.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-5.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-5.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-5.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-double-free.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-double-free.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-double-free.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-double-free.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-unchecked.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-unchecked.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-unchecked.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/malloc-ipa-8-unchecked.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/pr101503.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/pr101503.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/pr101503.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/pr101503.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/sensitive-1.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/sensitive-1.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/sensitive-1.c --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/sensitive-1.c --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=g++.dg/analyzer/malloc.C --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=g++.dg/analyzer/malloc.C --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=g++.dg/analyzer/malloc.C --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=g++.dg/analyzer/malloc.C --target_board='unix{-m64\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gfortran.dg/analyzer/pr96949.f90 --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gfortran.dg/analyzer/pr96949.f90 --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gfortran.dg/analyzer/pr96949.f90 --target_board='unix{-m64}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gfortran.dg/analyzer/pr96949.f90 --target_board='unix{-m64\ -march=cascadelake}'" (Please do not reply to this email, for question about this report, contact me at skpgkp2 at gmail dot com)