https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91470
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|needs-reduction |
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-08-27
CC| |marxin at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
There's a reduced test-case:
$ cat pr91470.ii
int input_location, global_trees_0, gfc_conv_intrinsic_findloc_body,
gfc_conv_intrinsic_findloc_loopblock, gfc_conv_intrinsic_findloc_tmp,
gfc_conv_intrinsic_findloc_found, gfc_conv_intrinsic_findloc_loop;
enum tree_code { COND_EXPR };
struct A {};
struct B {
int pre;
int expr;
};
void fn1(B *, B *);
void fn2(int *, int *);
int *fn3(int *);
void fn4(int, tree_code, int *, int *, int *, int);
void fn5(B *, int *);
void fn6() {
A array_arg, value_arg, dim_arg, mask_arg, kind_arg, back_arg;
int *forward_branch;
B arrayse, valuese, maskse, backse;
int i;
value_arg = array_arg;
mask_arg = dim_arg;
back_arg = kind_arg;
for (i = 0; i < 2; i++) {
fn5(&maskse, &gfc_conv_intrinsic_findloc_loop);
fn1(&arrayse, __null);
fn2(&gfc_conv_intrinsic_findloc_body, &valuese.pre);
fn4(input_location, COND_EXPR, &global_trees_0,
&gfc_conv_intrinsic_findloc_tmp, &gfc_conv_intrinsic_findloc_found, 0);
if (i == 0)
forward_branch = fn3(&gfc_conv_intrinsic_findloc_loopblock);
}
fn4(input_location, COND_EXPR, &global_trees_0, &backse.expr, forward_branch,
0);
}