public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/57834] New: C_F_POINTER regression(-std): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present
@ 2013-07-05 20:03 jwmwalrus at gmail dot com
  2013-07-06  7:42 ` [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): " burnus at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: jwmwalrus at gmail dot com @ 2013-07-05 20:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57834

            Bug ID: 57834
           Summary: C_F_POINTER regression(-std): accepts only explicit-
                    and assumed-size arrays for FPTR when SHAPE is present
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jwmwalrus at gmail dot com

The following compiles with gfortran 4.8, but fails with gfortran 4.9:

program main

    use iso_c_binding
    use iso_fortran_env

    implicit none

    interface
        function strerror(errno) bind(C, NAME = 'strerror')
            import
            type(C_PTR) :: strerror
            integer(C_INT), value :: errno
        end function
    end interface

    integer :: i
    type(C_PTR) :: cptr
    character(KIND=C_CHAR), pointer :: str(:)

    cptr = strerror(INT(42, KIND = C_INT))
    call C_F_POINTER(cptr, str, [255])

    do i = 1, SIZE(str)
        if (str(i) == C_NULL_CHAR) exit
        write (ERROR_UNIT, '(A1)', ADVANCE = 'NO') str(i:i)
    enddo

    write (ERROR_UNIT, '(1X)')

end program main


The actual error, which only happens when -std=f2003 or -std=f2008 is used, is
highly inconsistent: FPTR must be pointer and when SHAPE is present, it must
also be a deferred-shape array one.  The error is:

...:~$ gfortran-4.9 -std=f2008 test_cfpointer.f90 
test_cfpointer.f90:21.27:

    call C_F_POINTER(cptr, str, [255])
                           1
Error: TS 29113: Noninteroperable array FPTR at (1) to C_F_POINTER: Only
explicit-size and assumed-size arrays are interoperable


The system info is:

...:~$ ll `which gfortran-4.9` && /usr/lib/gcc-snapshot/bin/gfortran -v &&
apt-cache policy gfortran-4.8 gcc-snapshot && lsb_release -rd
lrwxrwxrwx 1 root staff 34 Jul  5 12:58 /usr/local/bin/gfortran-4.9 ->
/usr/lib/gcc-snapshot/bin/gfortran*
Using built-in specs.
COLLECT_GCC=/usr/lib/gcc-snapshot/bin/gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 20130620-1'
--with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs
--enable-languages=c,ada,c++,java,go,fortran,objc,obj-c++
--prefix=/usr/lib/gcc-snapshot --enable-shared --enable-linker-build-id
--disable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-snap-amd64/jre
--enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-snap-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-snap-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --with-tune=generic --disable-werror
--enable-checking=yes --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.0 20130620 (experimental) [trunk revision 200244] (Debian
20130620-1) 
gfortran-4.8:
  Installed: 4.8.1-5
  Candidate: 4.8.1-5
  Version table:
 *** 4.8.1-5 0
        200 http://ftp.us.debian.org/debian/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status
     4.8.1-2 0
        500 http://ftp.us.debian.org/debian/ testing/main amd64 Packages
gcc-snapshot:
  Installed: 20130620-1
  Candidate: 20130620-1
  Version table:
 *** 20130620-1 0
        200 http://ftp.us.debian.org/debian/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status
Description:    Debian GNU/Linux testing (jessie)
Release:    testing


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present
  2013-07-05 20:03 [Bug fortran/57834] New: C_F_POINTER regression(-std): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present jwmwalrus at gmail dot com
@ 2013-07-06  7:42 ` burnus at gcc dot gnu.org
  2013-07-08 19:08 ` burnus at gcc dot gnu.org
  2013-07-08 19:09 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-07-06  7:42 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57834

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Created attachment 30468
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30468&action=edit
Draft patch


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present
  2013-07-05 20:03 [Bug fortran/57834] New: C_F_POINTER regression(-std): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present jwmwalrus at gmail dot com
  2013-07-06  7:42 ` [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): " burnus at gcc dot gnu.org
@ 2013-07-08 19:08 ` burnus at gcc dot gnu.org
  2013-07-08 19:09 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-07-08 19:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57834

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Author: burnus
Date: Mon Jul  8 19:05:16 2013
New Revision: 200794

URL: http://gcc.gnu.org/viewcvs?rev=200794&root=gcc&view=rev
Log:
2013-07-08  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57834
        * check.c (is_c_interoperable): Add special case for
        * c_f_pointer.
        (explicit-size, gfc_check_c_f_pointer, gfc_check_c_loc): Update
        call.

2013-07-08  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57834
        * gfortran.dg/c_f_pointer_tests_8.f90: New.


Added:
    trunk/gcc/testsuite/gfortran.dg/c_f_pointer_tests_8.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/check.c
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present
  2013-07-05 20:03 [Bug fortran/57834] New: C_F_POINTER regression(-std): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present jwmwalrus at gmail dot com
  2013-07-06  7:42 ` [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): " burnus at gcc dot gnu.org
  2013-07-08 19:08 ` burnus at gcc dot gnu.org
@ 2013-07-08 19:09 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-07-08 19:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57834

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> ---
FIXED on the trunk (4.9).

Thanks for the report!


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-07-08 19:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-05 20:03 [Bug fortran/57834] New: C_F_POINTER regression(-std): accepts only explicit- and assumed-size arrays for FPTR when SHAPE is present jwmwalrus at gmail dot com
2013-07-06  7:42 ` [Bug fortran/57834] [4.9 Regression] C_F_POINTER (only with -std=): " burnus at gcc dot gnu.org
2013-07-08 19:08 ` burnus at gcc dot gnu.org
2013-07-08 19:09 ` burnus at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).