From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 127791 invoked by alias); 6 Feb 2020 20:27:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 127633 invoked by uid 89); 6 Feb 2020 20:27:38 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy= X-HELO: us-smtp-1.mimecast.com Received: from us-smtp-delivery-1.mimecast.com (HELO us-smtp-1.mimecast.com) (207.211.31.120) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 06 Feb 2020 20:27:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581020855; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z0zlHU8J8NwKvTZAXfG+L4UbFSyQWwzfMoPSY6/7qmw=; b=IfCMaXXy0CusLBvPhN+En4kgP9E3lKVxfOn7W3agJiKYpEOQvpm33+1K7YvSsJchZu80sS 6/+yBkxHzVLwmsuErgXrn4u2Frt0oeB0+NFK4S6wi/iBes18dJ4mbYzACz7AQpB2fA/SE2 ZVg95kcM24tZUx5Eecdb0K9pbciHNiM= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-221-33yq9mr3MfinnSa7dDNc-Q-1; Thu, 06 Feb 2020 15:27:33 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9018118C43C0 for ; Thu, 6 Feb 2020 20:27:32 +0000 (UTC) Received: from t470.redhat.com (ovpn-116-56.phx2.redhat.com [10.3.116.56]) by smtp.corp.redhat.com (Postfix) with ESMTP id 30D378DC22; Thu, 6 Feb 2020 20:27:32 +0000 (UTC) From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 1/2] analyzer: g++ testsuite support Date: Thu, 06 Feb 2020 20:27:00 -0000 Message-Id: <20200206202730.18584-1-dmalcolm@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00397.txt.bz2 PR analyzer/93288 reports a C++-specific ICE with -fanalyzer. This patch creates the beginnings of a C++ test suite for the analyzer, so that there's a place to put test coverage for the fix. It adds a regression test for PR analyzer/93212, an ICE fixed in r10-5970-g32077b693df8e3ed0424031a322df23822bf2f7e. Successfully regrtested on x86_64-pc-linux-gnu (in conjunction with the second patch). OK for master? gcc/testsuite/ChangeLog: PR analyzer/93212 * g++.dg/analyzer/analyzer.exp: New subdirectory and .exp suite. * g++.dg/analyzer/malloc.C: New test. * g++.dg/analyzer/pr93212.C: New test. --- gcc/testsuite/g++.dg/analyzer/analyzer.exp | 49 ++++++++++++++++++++++ gcc/testsuite/g++.dg/analyzer/malloc.C | 9 ++++ gcc/testsuite/g++.dg/analyzer/pr93212.C | 17 ++++++++ 3 files changed, 75 insertions(+) create mode 100644 gcc/testsuite/g++.dg/analyzer/analyzer.exp create mode 100644 gcc/testsuite/g++.dg/analyzer/malloc.C create mode 100644 gcc/testsuite/g++.dg/analyzer/pr93212.C diff --git a/gcc/testsuite/g++.dg/analyzer/analyzer.exp b/gcc/testsuite/g++= .dg/analyzer/analyzer.exp new file mode 100644 index 00000000000..60262f678ee --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/analyzer.exp @@ -0,0 +1,49 @@ +# Copyright (C) 2020 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# G++ testsuite that uses the `dg.exp' driver. + +# Load support procs. +load_lib g++-dg.exp + +# If the analyzer has not been enabled, bail. +if { ![check_effective_target_analyzer] } { + return +} + +if [info exists DEFAULT_CXXFLAGS] then { + set save_default_cxxflags $DEFAULT_CXXFLAGS +} + +# If a testcase doesn't have special options, use these. +set DEFAULT_CXXFLAGS " -fanalyzer -fdiagnostics-path-format=3Dseparate-eve= nts -Wanalyzer-too-complex -fanalyzer-call-summaries" + +# Initialize `dg'. +dg-init + +# Main loop. +set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]] + +g++-dg-runtest $tests "" $DEFAULT_CXXFLAGS + +# All done. +dg-finish + +if [info exists save_default_cxxflags] { + set DEFAULT_CXXFLAGS $save_default_cxxflags +} else { + unset DEFAULT_CXXFLAGS +} diff --git a/gcc/testsuite/g++.dg/analyzer/malloc.C b/gcc/testsuite/g++.dg/= analyzer/malloc.C new file mode 100644 index 00000000000..0637295e1f2 --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/malloc.C @@ -0,0 +1,9 @@ +// { dg-do compile } + +#include + +void test_1 (void *ptr) +{ + free (ptr); + free (ptr); /* { dg-warning "double-'free' of 'ptr'" } */ +} diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg= /analyzer/pr93212.C new file mode 100644 index 00000000000..cfbb42d2275 --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C @@ -0,0 +1,17 @@ +// { dg-do compile { target c++11 } } + +#include +auto lol() +{ + int aha =3D 3; + return [&aha] { + return aha; + }; +} + +int main() +{ + auto lambda =3D lol(); + std::cout << lambda() << std::endl; + return 0; +} --=20 2.21.0