From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30836 invoked by alias); 4 Jul 2009 07:50:51 -0000 Received: (qmail 30802 invoked by uid 48); 4 Jul 2009 07:50:38 -0000 Date: Sat, 04 Jul 2009 07:50:00 -0000 Subject: [Bug fortran/40646] New: ICE assigning array return value from type-bound procedure X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "burnus at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-07/txt/msg00307.txt.bz2 Reported by Charlie Sharpsteen at http://gcc.gnu.org/ml/fortran/2009-07/msg00010.html The program runs with NAG f95 5.1 and prints twice: 1.0000000000000000 1.0000000000000000 1.0000000000000000 1.0000000000000000 With gfortran: aaa.f90: In function 'bugtest': aaa.f90:30:0: internal compiler error: Segmentation fault valgrind shows: ==17749== Invalid read of size 1 ==17749== at 0x56D412: gfc_return_by_reference (trans-types.c:2089) ==17749== by 0x550D88: gfc_trans_assignment (trans-expr.c:4412) which is: 2087 gfc_return_by_reference (gfc_symbol * sym) 2088 { 2089 if (!sym->attr.function) 2090 return 0; ! Testcase by Charlie Sharpsteen module bugTestMod implicit none type:: boundTest contains procedure, nopass:: test => returnMat end type boundTest contains function returnMat( a, b ) result( mat ) integer:: a, b double precision, dimension(a,b):: mat mat = 1d0 end function returnMat end module bugTestMod program bugTest use bugTestMod implicit none double precision, dimension(2,2):: testCatch type( boundTest ):: testObj write(*,*)testObj%test(2,2) ! <<<< OK (at run time) testCatch = testObj%test(2,2)! <<<< ICE write(*,*)testCatch end program bugTest -- Summary: ICE assigning array return value from type-bound procedure Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40646