Home | History | Annotate | Download | only in fortran

Lines Matching refs:e2

124 are_identical_variables (gfc_expr *e1, gfc_expr *e2)
128 if (e1->symtree->n.sym->attr.dummy && e2->symtree->n.sym->attr.dummy)
131 if (e1->symtree->n.sym->name != e2->symtree->n.sym->name)
137 if (e1->symtree->n.sym != e2->symtree->n.sym)
147 r2 = e2->ref;
207 /* Compare two functions for equality. Returns 0 if e1==e2, -2 otherwise. If
211 gfc_dep_compare_functions (gfc_expr *e1, gfc_expr *e2, bool impure_ok)
217 if (e1->expr_type != EXPR_FUNCTION || e2->expr_type != EXPR_FUNCTION)
220 if ((e1->value.function.esym && e2->value.function.esym
221 && e1->value.function.esym == e2->value.function.esym
223 || (e1->value.function.isym && e2->value.function.isym
224 && e1->value.function.isym == e2->value.function.isym
228 args2 = e2->value.function.actual;
239 gfc_expr *e1, *e2;
241 e2 = args2->expr;
243 if (gfc_dep_compare_expr (e1, e2) != 0)
252 && e2->expr_type == EXPR_CONSTANT
253 && e2->ts.type == BT_CHARACTER
254 && e1->value.character.length != e2->value.character.length)
308 * +1 if e1 > e2
309 * 0 if e1 == e2
310 * -1 if e1 < e2
312 * -3 if e1 /= e2, but we cannot tell which one is larger.
317 gfc_dep_compare_expr (gfc_expr *e1, gfc_expr *e2)
321 if (e1 == NULL && e2 == NULL)
323 else if (e1 == NULL || e2 == NULL)
327 e2 = gfc_discard_nops (e2);
334 && gfc_dep_compare_expr (e1->value.op.op1, e2) == 0)
338 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_PLUS)
342 l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1);
343 r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2);
355 l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op2);
356 r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op1);
371 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_PLUS)
373 if (e2->value.op.op2->expr_type == EXPR_CONSTANT
374 && e2->value.op.op2->ts.type == BT_INTEGER
375 && gfc_dep_compare_expr (e1, e2->value.op.op1) == 0)
376 return -mpz_sgn (e2->value.op.op2->value.integer);
384 && gfc_dep_compare_expr (e1->value.op.op1, e2) == 0)
388 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
392 l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1);
393 r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2);
410 && e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_CONCAT)
414 l = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1);
415 r = gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2);
423 gfc_expr *e2_left = e2->value.op.op1;
435 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
437 if (e2->value.op.op2->expr_type == EXPR_CONSTANT
438 && e2->value.op.op2->ts.type == BT_INTEGER
439 && gfc_dep_compare_expr (e1, e2->value.op.op1) == 0)
440 return mpz_sgn (e2->value.op.op2->value.integer);
443 if (e1->expr_type != e2->expr_type)
450 if (e1->ts.type == BT_CHARACTER && e2->ts.type == BT_CHARACTER)
451 return gfc_compare_string (e1, e2);
456 if (e2->expr_type == EXPR_CONSTANT)
458 if (e1->ts.type == BT_REAL && e2->ts.type == BT_REAL)
460 if (mpfr_cmp (e1->value.real, e2->value.real) == 0)
465 else if (e1->ts.type == BT_COMPLEX && e2->ts.type == BT_COMPLEX)
467 if (mpc_cmp (e1->value.complex, e2->value.complex) == 0)
474 if (e1->ts.type != BT_INTEGER || e2->ts.type != BT_INTEGER)
477 /* For INTEGER, all cases where e2 is not constant should have
479 gcc_assert (e2->expr_type == EXPR_CONSTANT);
481 i = mpz_cmp (e1->value.integer, e2->value.integer);
489 if (are_identical_variables (e1, e2))
496 if (e1->value.op.op != e2->value.op.op)
500 i = gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1);
503 if (gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op1) == 0
504 && gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op2) == 0)
507 && gfc_dep_compare_expr (e1->value.op.op1, e2->value.op.op2) == 0
508 && gfc_dep_compare_expr (e1->value.op.op2, e2->value.op.op1) == 0)
515 return gfc_dep_compare_functions (e1, e2, false);
533 gfc_dep_difference (gfc_expr *e1, gfc_expr *e2, mpz_t *result)
537 if (e1 == NULL || e2 == NULL)
540 if (e1->ts.type != BT_INTEGER || e2->ts.type != BT_INTEGER)
544 e2 = gfc_discard_nops (e2);
551 if (e1->expr_type == EXPR_CONSTANT && e2->expr_type == EXPR_CONSTANT)
553 mpz_sub (*result, e1->value.integer, e2->value.integer);
564 && gfc_dep_compare_expr (e1_op1, e2) == 0)
572 && gfc_dep_compare_expr (e1_op2, e2) == 0)
578 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_PLUS)
580 e2_op1 = gfc_discard_nops (e2->value.op.op1);
581 e2_op2 = gfc_discard_nops (e2->value.op.op2);
623 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
625 e2_op1 = gfc_discard_nops (e2->value.op.op1);
626 e2_op2 = gfc_discard_nops (e2->value.op.op2);
662 if (gfc_dep_compare_expr (e1_op1, e2) == 0)
668 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_PLUS)
670 e2_op1 = gfc_discard_nops (e2->value.op.op1);
671 e2_op2 = gfc_discard_nops (e2->value.op.op2);
694 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
696 e2_op1 = gfc_discard_nops (e2->value.op.op1);
697 e2_op2 = gfc_discard_nops (e2->value.op.op2);
711 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
713 e2_op1 = gfc_discard_nops (e2->value.op.op1);
714 e2_op2 = gfc_discard_nops (e2->value.op.op2);
728 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_PLUS)
730 e2_op1 = gfc_discard_nops (e2->value.op.op1);
731 e2_op2 = gfc_discard_nops (e2->value.op.op2);
749 if (e2->expr_type == EXPR_OP && e2->value.op.op == INTRINSIC_MINUS)
751 e2_op1 = gfc_discard_nops (e2->value.op.op1);
752 e2_op2 = gfc_discard_nops (e2->value.op.op2);
763 if (gfc_dep_compare_expr (e1, e2) == 0)
781 gfc_expr *e2;
790 e2 = ar2->stride[n];
792 if (e1 && !e2)
798 else if (e2 && !e1)
800 i = gfc_expr_is_one (e2, -1);
804 else if (e1 && e2)
806 i = gfc_dep_compare_expr (e1, e2);
814 e2 = ar2->start[n];
815 if (e1 || e2)
821 if (ar2->as && !e2)
822 e2 = ar2->as->lower[n];
825 if (!(e1 && e2))
828 i = gfc_dep_compare_expr (e1, e2);
835 e2 = ar2->end[n];
836 if (e1 || e2)
842 if (ar2->as && !e2)
843 e2 = ar2->as->upper[n];
846 if (!(e1 && e2))
849 i = gfc_dep_compare_expr (e1, e2);
1128 /* Return 1 if e1 and e2 are equivalenced arrays, either
1137 e1->ref and e2->ref to determine whether the actually accessed
1141 gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2)
1147 && e2->expr_type == EXPR_VARIABLE);
1150 || !e2->symtree->n.sym->attr.in_equivalence|| !e1->rank || !e2->rank)
1160 e1 and e2 are members of the same group and satisfy the
1174 if (s->sym == e2->symtree->n.sym)