:ADDPATCH fortran: This patch does two things: a) It fixes a really stupid bug be me. A tree is a tree is a tree -- and not a linked list; as I was treating the common_root symtree as list, the diagnostic did not always work. b) The checking in MATCH comes too early thus the check whether an element in COMMON lacks the SEQUENCE type did not work if "TYPE(...)" came after "COMMON". Additionally, there was no check for allocateable components. BIND(C) is now treated as SEQUENCE with regards to COMMON. For COMMON: "C589 (R558) If a common-block-object is of a derived type, it shall be a sequence type (4.5.1) or a type with the BIND attribute and it shall have no default initialization." "C588 (R558) A common-block-object shall not be a dummy argument, an allocatable variable, a derived-type object with an ultimate component that is allocatable, an automatic object, a function name, an entry name, a variable with the BIND attribute, or a result name." With regards to the standard, this patch fixes the BIND(C) (was rejected) and "derived-type object with an ultimate component that is allocatable" (was accepted). What currently is missing is a check for "it shall have no default initialization." By the way, BIND(C) in EQUIVALENCE is not allowed: "C576 An equivalence-object shall not be a designator with a base object that is [...] a variable with the BIND attribute". (gfortran did and still does the right thing.) Regression tested on x86-64-linux. Ok for the trunk? Tobias