------- Comment #12 from jakub at gcc dot gnu dot org 2010-07-16 10:08 -------
As can be seen on:
module mm
contains
function a ()
integer :: a, b, c
common /blk/ b, c
b = 6
c = 7
a = 8
end function
end module mm
function b ()
integer :: b, d, e
common /blk/ d, e
b = d + e
end function
program qq
use mm
integer :: d, e
common /blk/ d, e
interface
function b ()
integer :: b
end function b
end interface
if (a () .ne. 8) call abort
if (b () .ne. (d + e)) call abort
end
with -fdump-tree-original-all, I believe common decls are fine:
grep blk a.f90.003t.original
static integer(kind=4)D.8 bD.1555 [value-expr: blk_D.1554.bD.1552];
static integer(kind=4)D.8 cD.1556 [value-expr: blk_D.1554.cD.1553];
static integer(kind=4)D.8 dD.1562 [value-expr: blk_D.1554.dD.1560];
static integer(kind=4)D.8 eD.1563 [value-expr: blk_D.1554.eD.1561];
static integer(kind=4)D.8 dD.1569 [value-expr: blk_D.1554.dD.1567];
static integer(kind=4)D.8 eD.1570 [value-expr: blk_D.1554.eD.1568];
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44945