Three tiny nits:
Index: gcc/fortran/trans-expr.c
+ /* Try simply setting expr_type to EXPR_NUL, which should result
s/NUL/NULL/
Index: gcc/fortran/symbol.c
@@ -3583,6 +3585,8 @@ generate_isocbinding_symbol (const char
--------------------
tmp_sym->attr.is_bind_c = 1;
+ tmp_sym->attr.referenced = 1;
+
tmp_sym->ts.derived = tmp_sym;
--------------------
I think you used spaces instead of tabs here (last line has a tab,
others have spaces).
Index: libgfortran/intrinsics/iso_c_binding.c
+/* Set the fields of a Fortran pointer descriptor to point to the
+ given C address. It uses <code>c_f_pointer_u0</code> for the common
"<code>" should be removed.