------- 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