|| a->cray_pointer
|| sym->assoc
|| (!a->referenced && !a->result)
- || (a->dummy && a->intent != INTENT_OUT)
+ || (a->dummy && (a->intent != INTENT_OUT
+ || sym->ns->proc_name->attr.if_source == IFSRC_IFBODY))
|| (a->function && sym != sym->result)
);
}
/* Assign default initializer. */
if (!(sym->value || sym->attr.pointer || sym->attr.allocatable)
- && (!no_init_flag || sym->attr.intent == INTENT_OUT))
+ && (!no_init_flag
+ || (sym->attr.intent == INTENT_OUT
+ && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY)))
sym->value = gfc_generate_initializer (&sym->ts, can_generate_init (sym));
return true;
|| sym->ts.u.derived->attr.alloc_comp
|| sym->ts.u.derived->attr.pointer_comp))
&& !(a->function && sym != sym->result))
- || (a->dummy && a->intent == INTENT_OUT && !a->pointer))
+ || (a->dummy && !a->pointer && a->intent == INTENT_OUT
+ && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY))
apply_default_init (sym);
else if (a->function && sym->result && a->access != ACCESS_PRIVATE
&& (sym->ts.u.derived->attr.alloc_comp
if (sym->ts.type == BT_CLASS && sym->ns == gfc_current_ns
&& sym->attr.dummy && sym->attr.intent == INTENT_OUT
+ && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY
&& !CLASS_DATA (sym)->attr.class_pointer
&& !CLASS_DATA (sym)->attr.allocatable)
apply_default_init (sym);
+2021-10-04 Tobias Burnus <tobias@codesourcery.com>
+
+ Backported from master:
+ 2021-10-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * testsuite/libgomp.fortran/order-reproducible-1.f90: New test
+ based on libgomp.c-c++-common/order-reproducible-1.c.
+ * testsuite/libgomp.fortran/order-reproducible-2.f90: Likewise.
+ * testsuite/libgomp.fortran/my-usleep.c: New test.
+
2021-10-02 Tobias Burnus <tobias@codesourcery.com>
Backported from master: