From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 1644039AE438; Thu, 19 Aug 2021 14:50:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1644039AE438 From: "seurer at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug analyzer/101980] New: [12 regressions] many test case failures after r12-3002 Date: Thu, 19 Aug 2021 14:50:09 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: analyzer X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: seurer at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: dmalcolm at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Aug 2021 14:50:10 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D101980 Bug ID: 101980 Summary: [12 regressions] many test case failures after r12-3002 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: analyzer Assignee: dmalcolm at gcc dot gnu.org Reporter: seurer at gcc dot gnu.org Target Milestone: --- g:aef703cf982072427e74034f4c460a11c5e04b8e, r12-3002 FAIL: g++.dg/analyzer/malloc.C -std=3Dc++14 (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=3Dc++17 (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=3Dc++2a (test for warnings, line 24) FAIL: g++.dg/analyzer/malloc.C -std=3Dc++98 (test for warnings, line 24) FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c expected multiline pattern lin= es 24-60 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_1': event 1.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n= =20=20=20 \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(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=20=20=20 <------\+.*\n \|.*\n 'test_1': events 3-4.*\n \|.*\n \| NN \|= =20=20=20=20 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=20=20=20 \| \| \(4\) passing freed pointer 'ptr' in call to 'calls_free_1' = from 'test_1'.*\n \|.*\n \+--> 'calls_free_1': event 5.*\n \|.*\= n=20=20=20 \| NN \| free \(ptr\);.*\n \| \| \^~~~~~~~~~\n= =20=20=20=20=20 \| \| \|.*\n \| \| \(5\) second 'free' here; f= irst 'free' was at \(2\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-0.c expected multiline pattern lin= es 94-130 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_2': event 1.*\n \|.*\n \| NN \| calls_free_2 \(ptr\);.*= \n=20=20 \| \| \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \|=20= =20=20=20=20 \| \(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=20=20=20 <------\+.*\n \|.*\n 'test_2': events 3-4.*\n \|.*\n \| NN \|= =20=20=20=20=20=20 calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \|= =20=20=20=20=20 \| \|.*\n \| \| \(3\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \|=20=20= =20=20=20=20 \|.*\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 \| = \|=20 \^~~~~~~~~~\n \| \| \|.*\n \| \| \(5\) second 'free' here; first 'free' was at \(2\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c expected multiline pattern lin= es 109-160 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_2': events 1-2.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_2'.*\n \|\.\.\.\.\.\..*\n \| NN \|=20= =20=20=20=20=20 calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \|=20= =20=20=20=20 \| \|.*\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 \| = \|=20 \^~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20=20 \(3\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| = NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| = \| \|.*\n \| \| \(4\) first 'free' here.*\n \|.*\= n=20=20=20 <------\+.*\n \|.*\n 'test_2': events 5-6.*\n \|.*\n \| NN \|= =20=20=20=20=20=20 calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \|= =20=20=20=20=20 \| \|.*\n \| \| \(5\) returning to 'test_2' from 'calls_free_2'.*\n \|\.\.\.\.\.\..*\n \| NN \| calls_free_2 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| \|=20=20= =20=20=20=20 \|.*\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 \| \|= =20=20=20=20=20 \|.*\n \| \| \(7\) entry to 'calls_free_2'.*\n = \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \= |=20=20 ~~~~~~~~~~\n \| \| \|.*\n \| \| \(8\) sec= ond 'free' here; first 'free' was at \(4\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-1.c expected multiline pattern lin= es 24-75 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_1': events 1-2.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_1'.*\n \|\.\.\.\.\.\..*\n \| NN \|=20= =20=20=20 calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| = \|=20 \|.*\n \| \| \(2\) calling 'calls_free_1' from 'test_1'.*\n= =20=20=20 \|.*\n \+--> 'calls_free_1': events 3-4.*\n \|.*\n \= |=20=20 NN \| void calls_free_1 \(void \*ptr\).*\n \| \|=20=20=20=20= =20 \^~~~~~~~~~~~\n \| \| \|.*\n \| \|=20=20= =20=20=20 \(3\) entry to 'calls_free_1'.*\n \| NN \| \{.*\n \| = NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| = \| \|.*\n \| \| \(4\) first 'free' here.*\n \|.*\= n=20=20=20 <------\+.*\n \|.*\n 'test_1': events 5-6.*\n \|.*\n \| NN \|= =20=20=20=20 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=20=20=20 \| \| \(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 \| = \|=20 \^~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20=20 \(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-2.c (test for excess errors) FAIL: gcc.dg/analyzer/analyzer-verbosity-2.c expected multiline pattern lin= es 120-189 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_2': events 1-4.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_2'.*\n \| NN \| \{.*\n \| NN \|=20= =20 switch \(a\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| = \|=20 \(2\) following 'case 3:' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| N= N \| case 3:.*\n \| \| ~~~~\n \| \| \|.*\n \| = \| \(3\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n = \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(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= =20=20=20=20=20=20 \| \| \|.*\n \| \| \(5\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.= *\n=20 \| \| \(6\) first 'free' here.*\n \|.*\n=20=20=20 <------\+.*\n \|.*\n 'test_2': events 7-10.*\n \|.*\n \| NN \|= =20=20=20=20=20 calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \|= =20=20=20=20=20 \| \|.*\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 \|=20=20=20= =20 default:.*\n \| \| ~~~~~~~\n \| \| \|.*\n \| = \| \(9\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n = \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(10\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 11-12.*\n=20=20=20= =20=20=20=20=20=20=20 \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n = \|=20=20 \| \^~~~~~~~~~~~\n \| \| \|.*\n \|=20= =20=20=20=20 \| \(11\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n=20= =20=20=20=20=20=20=20=20 \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n=20=20= =20=20=20=20=20=20=20=20 \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-2.c expected multiline pattern lin= es 24-86 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_1': events 1-4.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_1'.*\n \| NN \| \{.*\n \| NN \| if \(a\).*\n \| \| ~\n \| \| \|.*\n \| \|=20= =20=20=20=20 \(2\) following 'true' branch \(when 'a !=3D 0'\)\.\.\..*\n \| NN \|= =20=20=20=20 calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| = \|=20 \|.*\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 \(vo= id \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \|= =20=20=20=20=20 \|.*\n \| \| \(5\) entry to 'calls_free_1'.*\n = \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \= |=20=20 ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) fir= st 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': even= ts 7-10.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \= |=20=20=20 \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_1' from 'calls_free_1'.*\n \| NN \| .*\n \| NN= \|=20 if \(b\).*\n \| \| ~\n \| \| \|.*\n \| \= |=20=20=20 \(8\) following 'false' branch \(when 'b =3D=3D 0'\)\.\.\..*\n=20=20=20 \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \= |=20=20=20 ~~~~~~~~~~~~~~~~~~\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 \| \|= =20=20=20=20=20 \|.*\n \| \| \(11\) entry to 'calls_free_1'.*\n=20=20= =20=20=20=20=20=20=20=20 \| 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/analyzer-verbosity-3.c expected multiline pattern lin= es 120-189 not found: " NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_2': events 1-4.*\n \|.*\n \| NN \| void test_2 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_2'.*\n \| NN \| \{.*\n \| NN \|=20= =20 switch \(a\).*\n \| \| ~~~~~~\n \| \| \|.*\n \| = \|=20 \(2\) following 'case 3:' branch\.\.\..*\n \|\.\.\.\.\.\..*\n \| N= N \| case 3:.*\n \| \| ~~~~\n \| \| \|.*\n \| = \| \(3\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n = \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(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= =20=20=20=20=20=20 \| \| \|.*\n \| \| \(5\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n \| \| \|.= *\n=20 \| \| \(6\) first 'free' here.*\n \|.*\n=20=20=20 <------\+.*\n \|.*\n 'test_2': events 7-10.*\n \|.*\n \| NN \|= =20=20=20=20=20 calls_free_2 \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~\n \|= =20=20=20=20=20 \| \|.*\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 \|=20=20=20= =20 default:.*\n \| \| ~~~~~~~\n \| \| \|.*\n \| = \| \(9\) \.\.\.to here.*\n \| NN \| calls_free_2 \(ptr\);.*\n = \| \| ~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(10\) passing freed pointer 'ptr' in call to 'calls_free_2' from 'test_2'.*\n \|.*\n \+--> 'calls_free_2': events 11-12.*\n=20=20=20= =20=20=20=20=20=20=20 \|.*\n \| NN \| void calls_free_2 \(void \*ptr\).*\n = \|=20=20 \| \^~~~~~~~~~~~\n \| \| \|.*\n \|=20= =20=20=20=20 \| \(11\) entry to 'calls_free_2'.*\n \| NN \| \{.*\n=20= =20=20=20=20=20=20=20=20 \| NN \| free \(ptr\);.*\n \| \| ~~~~~~~~~~\n=20=20= =20=20=20=20=20=20=20=20 \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/analyzer-verbosity-3.c expected multiline pattern lin= es 24-86 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~\n=20 'test_1': events 1-4.*\n \|.*\n \| NN \| void test_1 \(void \*ptr, = int a, int b\).*\n \| \| \^~~~~~\n \| \| \|.*\n \|= =20=20=20=20 \| \(1\) entry to 'test_1'.*\n \| NN \| \{.*\n \| NN \| if \(a\).*\n \| \| ~\n \| \| \|.*\n \| \|=20= =20=20=20=20 \(2\) following 'true' branch \(when 'a !=3D 0'\)\.\.\..*\n \| NN \|= =20=20=20=20 calls_free_1 \(ptr\);.*\n \| \| ~~~~~~~~~~~~~~~~~~\n \| = \|=20 \|.*\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 \(vo= id \*ptr\).*\n \| \| \^~~~~~~~~~~~\n \| \|= =20=20=20=20=20 \|.*\n \| \| \(5\) entry to 'calls_free_1'.*\n = \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| \= |=20=20 ~~~~~~~~~~\n \| \| \|.*\n \| \| \(6\) fir= st 'free' here.*\n \|.*\n <------\+.*\n \|.*\n 'test_1': even= ts 7-10.*\n \|.*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \= |=20=20=20 \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(7\) returning to 'test_1' from 'calls_free_1'.*\n \| NN \| .*\n \| NN= \|=20 if \(b\).*\n \| \| ~\n \| \| \|.*\n \| \= |=20=20=20 \(8\) following 'false' branch \(when 'b =3D=3D 0'\)\.\.\..*\n=20=20=20 \|\.\.\.\.\.\..*\n \| NN \| calls_free_1 \(ptr\);.*\n \| \= |=20=20=20 ~~~~~~~~~~~~~~~~~~\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 \| \|= =20=20=20=20=20 \|.*\n \| \| \(11\) entry to 'calls_free_1'.*\n=20=20= =20=20=20=20=20=20=20=20 \| NN \| \{.*\n \| NN \| free \(ptr\);.*\n \| = \| ~~~~~~~~~~\n \| \| \|.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" 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 (test for excess errors) FAIL: gcc.dg/analyzer/malloc-ipa-11.c expected multiline pattern lines 32-95 not found: "\s*NN \| free \(victim\);.*\n \| \^~~~~~~~~~~~~\n 'te= st': events 1-2.*\n \|.*\n \| NN \| void test \(void \*ptr\).*\n \|= =20=20=20=20=20 \| \^~~~\n \| \| \|.*\n \| \| \(1\) entry to 'test'.*\n \|\.\.\.\.\.\..*\n \| NN \| may_call_free \(ptr\);.*\n= =20=20=20 \| \| ~~~~~~~~~~~~~~~~~~~\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 \|= =20=20 NN \| \{.*\n \| NN \| if \(some_condition \(\)\).*\n = \| \| ~\n \| \| \|.*\n \| \|=20= =20=20=20=20 \(4\) following 'false' branch\.\.\..*\n \|\.\.\.\.\.\..*\n=20=20= =20=20=20=20=20=20=20=20 \| NN \| free \(victim\);.*\n \| \| ~~~~~~~~~~~~~\n=20= =20=20=20=20=20=20 \| \| \|.*\n \| \| \(5\) \.\.\.to here.*\n=20=20= =20=20=20=20=20=20=20=20 \| \| \(6\) first 'free' here.*\n \|.*\n <------\+.*\n= =20=20=20 \|.*\n 'test': events 7-8.*\n \|.*\n \| NN \| may_call_free \(ptr\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n= =20=20=20 \| \| \(7\) returning to 'test' from 'may_call_free'.*\n=20=20=20 \|\.\.\.\.\.\..*\n \| NN \| may_call_free \(ptr\);.*\n \| \|= =20=20 ~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(8\) passing freed pointer 'ptr' in call to 'may_call_free' from 'test'.*\n \|.*\n=20= =20=20 \+--> 'may_call_free': events 9-12.*\n \|.*\n \| NN \| may_call_free \(void \*victim\).*\n \| \| \^~~~~~~~~~~~~\n= =20=20=20=20=20=20 \| \| \|.*\n \| \| \(9\) entry to 'may_call_free'.*= \n=20=20 \| NN \| \{.*\n \| NN \| if \(some_condition \(\)\)= .*\n \| \| ~\n \| \| \|.*\n \|= =20=20=20=20 \| \(10\) following 'false' branch\.\.\..*\n \|\.\.\.\.\.\.= .*\n \| NN \| free \(victim\);.*\n \| \|=20=20 ~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(11\) \.\.\.to here.*\n \| \| \(12\) second 'free' here; first 'free' was at \(6\).*\n \|.*\n" FAIL: gcc.dg/analyzer/malloc-ipa-13.c (test for warnings, line 26) FAIL: gcc.dg/analyzer/malloc-ipa-13a.c (test for warnings, line 36) 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 (test for excess errors) FAIL: gcc.dg/analyzer/malloc-ipa-8-double-free.c expected multiline pattern lines 50-191 not found: "\s*NN \| free \(ptr\);.*\n \| \^~~~~~~~~~= \n=20 'test': events 1-2.*\n \|.*\n \| NN \| void test \(int i\).*\n \= |=20=20=20 \| \^~~~\n \| \| \|.*\n \| \| \(1\) entry = to 'test'.*\n \| NN \| \{.*\n \| NN \| boxed_int \*obj =3D 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= =20=20=20=20=20 \| \| \(3\) entry to 'make_boxed_int'.*\n \| NN \| \{= .*\n \| NN \| boxed_int \*result =3D \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \|=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \|=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20 \|.*\n \| \|=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \(4\) calling 'wrapped_malloc' from 'make_boxed_int'.*\n \|.*\= n=20=20=20 \+--> 'wrapped_malloc': events 5-6.*\n \|.*\n=20=20= =20=20=20=20=20=20=20=20 \| NN \| void \*wrapped_malloc \(size_t size\).*\n = \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n=20= =20=20=20=20=20=20 \| \| \(5\) entry to 'wrapped_malloc'.*\n=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20 \| NN \| \{.*\n \| NN \| return malloc \(size\);.*\n= =20=20=20=20 \| \| ~~~~~~~~~~~~~\n \| \= |=20=20=20 \|.*\n \| \| \(6\) allocated here.*\n= =20=20=20=20=20 \|.*\n <------\+.*\n \|.*\n=20=20=20=20=20= =20=20=20 'make_boxed_int': events 7-10.*\n \|.*\n \| NN \|=20= =20 boxed_int \*result =3D \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \|=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \|=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \|.*\n \| \|=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \(7\) returning to 'make_boxed_int' from 'wrapped_malloc'.*\n \| = NN \| if \(!result\).*\n \| \| ~=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 .*\n \| \| \|.*\n \| \| \(8\) assu= ming 'result' is non-NULL.*\n \| \| \(9\) following 'false' branch \(when 'result' is non-NULL\)\.\.\..*\n \| NN \| abo= rt \(\);.*\n \| NN \| result->i =3D i;.*\n \| \|= =20=20 ~~~~~~~~~~~~~ .*\n \| \| \|.= *\n=20 \| \| \(10\) \.\.\.to here.*\n \|.*\n= =20=20=20 <------\+.*\n \|.*\n 'test': events 11-12.*\n \|.*\n \| NN \|= =20=20 boxed_int \*obj =3D make_boxed_int \(i\);.*\n \| \|=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20 \^~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|= =20=20=20=20 \(11\) returning to 'test' from 'make_boxed_int'.*\n \| = NN \| .*\n \| NN \| free_boxed_int \(obj\);.*\n \| \|=20=20 ~~~~~~~~~~~~~~~~~~~~\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=20=20 \| \| \(13\) entry to 'free_boxed_int'.*\n \| NN \| \{.*\n \| NN \| wrapped_free \(bi\);.*\n \| \|= =20=20 ~~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(= 14\) calling 'wrapped_free' from 'free_boxed_int'.*\n \|.*\n=20=20=20= =20=20=20=20=20=20=20 \+--> 'wrapped_free': events 15-16.*\n \|.*\n=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20 \| NN \| void wrapped_free \(void \*ptr\).*\n \| \|= =20=20=20=20 \^~~~~~~~~~~~\n \| \| \|.*\n \= |=20=20=20 \| \(15\) entry to 'wrapped_free'.*\n \| NN \| \{= .*\n \| NN \| free \(ptr\);.*\n \| \|= =20=20 ~~~~~~~~~~\n \| \| \|.*\n \| = \|=20=20 \(16\) first 'free' here.*\n \|.*\n <------\+.*\= n=20=20=20 \|.*\n 'free_boxed_int': event 17.*\n \|.*\n=20=20= =20=20=20=20=20=20=20=20 \| NN \| wrapped_free \(bi\);.*\n \| \|=20=20 \^~~~~~~~~~~~~~~~~\n \| \| \|.*\n \| \|=20= =20 \(17\) returning to 'free_boxed_int' from 'wrapped_free'.*\n \|.*= \n=20=20 <------\+.*\n \|.*\n 'test': events 18-19.*\n \|.*\n \| NN \|= =20=20 free_boxed_int \(obj\);.*\n \| \| \^~~~~~~~~~~~~~~~~~~~\n \|= =20=20=20=20=20 \| \|.*\n \| \| \(18\) returning to 'test' from 'free_boxed_int'.*\n \| NN \| .*\n \| NN \| free_boxed_int \(obj\);.*\n \| \| ~~~~~~~~~~~~~~~~~~~~\n \| \| \|.*\n= =20=20=20 \| \| \(19\) passing freed pointer 'obj' in call to 'free_boxed_int' from 'test'.*\n \|.*\n \+--> 'free_boxed_int': events 20-21.*\n=20=20= =20=20=20=20=20=20=20=20 \|.*\n \| NN \| free_boxed_int \(boxed_int \*bi\).*\n = \|=20 \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(20\) entry to 'free_boxed_int'.*\n \| NN \| \{.*\n = \|=20=20 NN \| wrapped_free \(bi\);.*\n \| \| ~~~~~~~~~~~~~~~~~\n= =20=20=20=20 \| \| \|.*\n \| \| \(21\) passing freed point= er 'bi' in call to 'wrapped_free' from 'free_boxed_int'.*\n \|.*\n= =20=20=20=20=20=20 \+--> 'wrapped_free': events 22-23.*\n \|.*\n=20=20=20= =20=20=20=20=20=20=20=20=20=20 \| NN \| void wrapped_free \(void \*ptr\).*\n \| = \| \^~~~~~~~~~~~\n \| \| \|.*\n=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20 \| \| \(22\) entry to 'wrapped_free'.*\n \| NN= \| \{.*\n \| NN \| free \(ptr\);.*\n \|= =20=20=20=20=20 \| ~~~~~~~~~~\n \| \| \|.*\n \|= =20=20=20=20=20 \| \(23\) second 'free' here; first 'free' was at \(16\).*\n=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20 \|.*\n" FAIL: gcc.dg/analyzer/malloc-ipa-8-unchecked.c (test for excess errors) FAIL: gcc.dg/analyzer/malloc-ipa-8-unchecked.c expected multiline pattern l= ines 28-66 not found: "\s*NN \| result->i =3D i;.*\n \| ~~~~~~~~~~\^~~\= n=20 'make_boxed_int': events 1-2.*\n \|.*\n \| NN \| make_boxed_int \(i= nt i\).*\n \| \| \^~~~~~~~~~~~~~\n \| \| \|.*\n \| \| \(1\) entry to 'make_boxed_int'.*\n \| NN \| \{.*\n \| NN \|=20=20 boxed_int \*result =3D \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \|=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \|=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \|.*\n \| \| \(2\) calling 'wrapped_malloc' from 'make_boxed_int'.*\n \|.*\n \+--> 'wrapped_mall= oc': events 3-4.*\n \|.*\n \| NN \| void \*wrapped_malloc \(size_t size\).*\n \| \| \^~~~~~~~~~~~~~\n = \|=20=20 \| \|.*\n \| \| \(3\) entry to 'wrapped_malloc'.*\n \| NN \| \{.*\n \| NN \| ret= urn malloc \(size\);.*\n \| \| ~~~~~~~~~~~~~\n = \| \| \|.*\n \| \| \(4\) this call could return NULL.*\n \|.*\n <------\+.*\n \|.*\n 'make_boxed_in= t': events 5-6.*\n \|.*\n \| NN \| boxed_int \*result =3D \(boxed_int \*\)wrapped_malloc \(sizeof \(boxed_int\)\);.*\n \| \|=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20 \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \| \|=20= =20=20=20=20=20=20=20=20 \|.*\n \| \|=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 \(5\) possible return of NULL to 'make_boxed_int' from 'wrapped_malloc'.*= \n=20=20 \| NN \| result->i =3D i;.*\n \| \| ~~~~~~~~~~~~~=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20 .*\n \| \| \|.*\n \| \| \(6\) 'result' could be NULL: unchecked value from \(4\).*\n \|.*\n" 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: gfortran.dg/analyzer/pr96949.f90 -O (internal compiler error) FAIL: gfortran.dg/analyzer/pr96949.f90 -O (test for excess errors) commit aef703cf982072427e74034f4c460a11c5e04b8e (HEAD, refs/bisect/bad) Author: Ankur Saini Date: Thu Jul 29 15:48:07 2021 +0530 analyzer: detect and analyze calls via function pointer=