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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic, wrong-code

--- Comment #11 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-07 
22:30:44 UTC ---
(In reply to comment #9)
> we might need to handle also COMMON /foo/

Example for a now (F2008) valid programs:

a) Currently rejected - but shouldn't since F2008

use iso_c_binding
contains
subroutine one()
  bind(C, name="com1") :: /foo/
  integer(c_int) :: a
  common /foo/ a
end subroutine
subroutine two()
  bind(C, name="com2") :: /foo/
  integer(c_long) :: a
  common /foo/ a
end subroutine two
end

b) For the following program no error is printed - but one gets:
  Warnung: Named COMMON block 'foo' at (1) shall be
           of the same size as elsewhere (4 vs 8 bytes)
which is surprising as one should generate one common block with assembler name
"foo_" and one with assembler name "com1".

Currently only one is generated (which has either the name "com1" or "foo_"):

use iso_c_binding
contains
subroutine one()
  bind(C, name="com1") :: /foo/
  integer(c_int) :: a
  common /foo/ a
end subroutine
subroutine two()
  integer(c_long) :: a
  common /foo/ a
end subroutine two
end

Reply via email to