Hi Mikael,
> > + if(st == ST_FAIL_IMAGE) > > + new_st.op = EXEC_FAIL_IMAGE; > > + else > > + gcc_unreachable(); > You can use > gcc_assert (st == ST_FAIL_IMAGE); > foo...; > instead of > if (st == ST_FAIL_IMAGE) > foo...; > else > gcc_unreachable (); Be careful, this is not 100% identical in the general case. For older gcc version (gcc < 4008) gcc_assert() is mapped to nothing, esp. not to an abort(), so the behavior can change. But in this case everything is fine, because the patch is most likely not backported. > > + > > + return MATCH_YES; > > + > > + syntax: > > + gfc_syntax_error (st); > > + > > + return MATCH_ERROR; > > +} > > + > > +match > > +gfc_match_fail_image (void) > > +{ > > + /* if (!gfc_notify_std (GFC_STD_F2008_TS, "FAIL IMAGE statement > > at %C")) */ > > + /* return MATCH_ERROR; */ > > + > Can this be uncommented? > > > + return fail_image_statement (ST_FAIL_IMAGE); > > +} > > > > /* Match LOCK/UNLOCK statement. Syntax: > > LOCK ( lock-variable [ , lock-stat-list ] ) > > diff --git a/gcc/fortran/trans-intrinsic.c > > b/gcc/fortran/trans-intrinsic.c index 1aaf4e2..b2f5596 100644 > > --- a/gcc/fortran/trans-intrinsic.c > > +++ b/gcc/fortran/trans-intrinsic.c > > @@ -1647,6 +1647,24 @@ trans_this_image (gfc_se * se, gfc_expr > > *expr) m, lbound)); > > } > > > > +static void > > +gfc_conv_intrinsic_image_status (gfc_se *se, gfc_expr *expr) > > +{ > > + unsigned int num_args; > > + tree *args,tmp; > > + > > + num_args = gfc_intrinsic_argument_list_length (expr); > > + args = XALLOCAVEC (tree, num_args); > > + > > + gfc_conv_intrinsic_function_args (se, expr, args, num_args); > > + > > + if (flag_coarray == GFC_FCOARRAY_LIB) > > + { > Can everything be put under the if? > Does it work with -fcoarray=single? IMO coarray=single should not generate code here, therefore putting everything under the if should to fine. Sorry for the comments ... - Andre -- Andre Vehreschild * Email: vehre ad gmx dot de