Message ID | alpine.LSU.2.11.1412011443480.5894@zhemvz.fhfr.qr |
---|---|
State | New |
Headers | show |
Your change is OK (we don’t want to use the type of the result, but the type of the argument indeed). > Index: gcc/fortran/trans-intrinsic.c > =================================================================== > --- gcc/fortran/trans-intrinsic.c (revision 218211) > +++ gcc/fortran/trans-intrinsic.c (working copy) > @@ -3729,7 +3729,7 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * s > possible value is HUGE in both cases. */ > if (op == GT_EXPR) > tmp = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (tmp), tmp); > - if (op == GT_EXPR && expr->ts.type == BT_INTEGER) > + if (op == GT_EXPR && arrayexpr->ts.type == BT_INTEGER) > tmp = fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE (tmp), tmp, > build_int_cst (type, 1)); Logic would dictate that it is "build_int_cst (TREE_TYPE (tmp), 1)” instead of "build_int_cst (type, 1)” in that last line. Probably doesn’t matter much, as it will be all folded into the same value anyway, but could you test and commit that change together, while you’re at it? Thanks, FX
On Mon, 1 Dec 2014, FX wrote: > Your change is OK (we don’t want to use the type of the result, but the type of the argument indeed). > > > > Index: gcc/fortran/trans-intrinsic.c > > =================================================================== > > --- gcc/fortran/trans-intrinsic.c (revision 218211) > > +++ gcc/fortran/trans-intrinsic.c (working copy) > > @@ -3729,7 +3729,7 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * s > > possible value is HUGE in both cases. */ > > if (op == GT_EXPR) > > tmp = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (tmp), tmp); > > - if (op == GT_EXPR && expr->ts.type == BT_INTEGER) > > + if (op == GT_EXPR && arrayexpr->ts.type == BT_INTEGER) > > tmp = fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE (tmp), tmp, > > build_int_cst (type, 1)); > > > Logic would dictate that it is "build_int_cst (TREE_TYPE (tmp), 1)” > instead of "build_int_cst (type, 1)” in that last line. Probably doesn’t > matter much, as it will be all folded into the same value anyway, but > could you test and commit that change together, while you’re at it? Sure, will re-test and commit tomorrow. Thanks, Richard.
Index: gcc/fortran/trans-intrinsic.c =================================================================== --- gcc/fortran/trans-intrinsic.c (revision 218211) +++ gcc/fortran/trans-intrinsic.c (working copy) @@ -3729,7 +3729,7 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * s possible value is HUGE in both cases. */ if (op == GT_EXPR) tmp = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (tmp), tmp); - if (op == GT_EXPR && expr->ts.type == BT_INTEGER) + if (op == GT_EXPR && arrayexpr->ts.type == BT_INTEGER) tmp = fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE (tmp), tmp, build_int_cst (type, 1));