From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15250 invoked by alias); 11 Mar 2016 15:57:57 -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 15179 invoked by uid 89); 11 Mar 2016 15:57:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.9 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=borrowed, Hx-spam-relays-external:sk:mailhos, H*RU:sk:mailhos, H*c:HpplH X-Spam-User: qpsmtpd, 2 recipients X-HELO: nef2.ens.fr Received: from nef2.ens.fr (HELO nef2.ens.fr) (129.199.96.40) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 11 Mar 2016 15:57:54 +0000 Received: from mailhost.lps.ens.fr (tournesol.lps.ens.fr [129.199.120.1]) by nef2.ens.fr (8.13.6/1.01.28121999) with ESMTP id u2BFviJ5037327 ; Fri, 11 Mar 2016 16:57:44 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mailhost.lps.ens.fr (Postfix) with ESMTP id B1D1016B; Fri, 11 Mar 2016 16:57:44 +0100 (CET) Received: from mailhost.lps.ens.fr ([127.0.0.1]) by localhost (tournesol.lps.ens.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m2E_sbNg7eEm; Fri, 11 Mar 2016 16:57:44 +0100 (CET) Received: from [192.168.1.11] (log78-1-82-242-47-10.fbx.proxad.net [82.242.47.10]) by mailhost.lps.ens.fr (Postfix) with ESMTPSA id 6F490168; Fri, 11 Mar 2016 16:57:44 +0100 (CET) From: =?utf-8?Q?Dominique_d=27Humi=C3=A8res?= Content-Type: multipart/mixed; boundary="Apple-Mail=_6C3B9534-30B5-4360-B0DE-2EB9545BA54A" Subject: RFA [Patch] PR 45076 - [OOP] gfortran.dg/dynamic_dispatch_6.f03 ICEs with -fprofile-use Date: Fri, 11 Mar 2016 15:57:00 -0000 Message-Id: Cc: fortran@gcc.gnu.org, gcc-patches To: Mike Stump Mime-Version: 1.0 (Mac OS X Mail 9.2 \(3112\)) X-SW-Source: 2016-03/txt/msg00703.txt.bz2 --Apple-Mail=_6C3B9534-30B5-4360-B0DE-2EB9545BA54A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Content-length: 275 AFAICT pr45076 is fixed on the gcc-4.9, gcc-5 branches, and trunk. I have b= orrowed the machinery in g++.dg/tree-prof/tree-prof.exp for the attached pa= tch and tested it on the three branches. Is it OK as such or is there a bet= ter way to do the testing? TIA Dominique --Apple-Mail=_6C3B9534-30B5-4360-B0DE-2EB9545BA54A Content-Disposition: attachment; filename=patch-45076 Content-Type: application/octet-stream; name="patch-45076" Content-Transfer-Encoding: 7bit Content-length: 4473 diff -up -N ../_clean/gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03 gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03 --- ../_clean/gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03 1970-01-01 01:00:00.000000000 +0100 +++ gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03 2016-03-11 14:42:38.000000000 +0100 @@ -0,0 +1,68 @@ +! { dg-require-profiling "-fprofile-generate" } +! { dg-options "-Ofast" } +! +! PR 45076: [OOP] gfortran.dg/dynamic_dispatch_6.f03 ICEs with -fprofile-use +! +! Contributed by Damian Rouson + +module field_module + implicit none + private + public :: field + type ,abstract :: field + end type +end module + +module periodic_5th_order_module + use field_module ,only : field + implicit none + type ,extends(field) :: periodic_5th_order + end type +end module + +module field_factory_module + implicit none + private + public :: field_factory + type, abstract :: field_factory + contains + procedure(create_interface), deferred :: create + end type + abstract interface + function create_interface(this) + use field_module ,only : field + import :: field_factory + class(field_factory), intent(in) :: this + class(field) ,pointer :: create_interface + end function + end interface +end module + +module periodic_5th_factory_module + use field_factory_module , only : field_factory + implicit none + private + public :: periodic_5th_factory + type, extends(field_factory) :: periodic_5th_factory + contains + procedure :: create=>new_periodic_5th_order + end type +contains + function new_periodic_5th_order(this) + use field_module ,only : field + use periodic_5th_order_module ,only : periodic_5th_order + class(periodic_5th_factory), intent(in) :: this + class(field) ,pointer :: new_periodic_5th_order + end function +end module + +program main + use field_module ,only : field + use field_factory_module ,only : field_factory + use periodic_5th_factory_module ,only : periodic_5th_factory + implicit none + class(field) ,pointer :: u + class(field_factory), allocatable :: field_creator + allocate (periodic_5th_factory :: field_creator) + u => field_creator%create() +end program diff -up -N ../_clean/gcc/testsuite/gfortran.dg/prof/prof.exp gcc/testsuite/gfortran.dg/prof/prof.exp --- ../_clean/gcc/testsuite/gfortran.dg/prof/prof.exp 1970-01-01 01:00:00.000000000 +0100 +++ gcc/testsuite/gfortran.dg/prof/prof.exp 2016-03-11 14:32:43.000000000 +0100 @@ -0,0 +1,56 @@ +# Copyright (C) 2001-2016 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 +# . + +# Test the functionality of programs compiled with profile-directed block +# ordering using -fprofile-generate followed by -fprofile-use. + +load_lib target-supports.exp + +# Some targets don't support tree profiling. +if { ![check_profiling_available "-fprofile-generate"] } { + return +} + +# The procedures in profopt.exp need these parameters. +set tool gfortran +set prof_ext "gcda" + +if $tracelevel then { + strace $tracelevel +} + +# Load support procs. +load_lib profopt.exp + +# Save and override the default list defined in profopt.exp. +set treeprof_save_profopt_options $PROFOPT_OPTIONS +set PROFOPT_OPTIONS [list {}] + +# These are globals used by profopt-execute. The first is options +# needed to generate profile data, the second is options to use the +# profile data. +set profile_option "-fprofile-generate -D_PROFILE_GENERATE" +set feedback_option "-fprofile-use -D_PROFILE_USE" + +foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.f*]] { + # If we're only testing specific files and this isn't one of them, skip it. + if ![runtest_file_p $runtests $src] then { + continue + } + profopt-execute $src +} + +set PROFOPT_OPTIONS $treeprof_save_profopt_options --Apple-Mail=_6C3B9534-30B5-4360-B0DE-2EB9545BA54A--