Commit 2f118814 by Tobias Schlüter

arith.c (gfc_arith_uplus): Rename to ...

* arith.c (gfc_arith_uplus): Rename to ...
(gfc_arith_identity): ... this.
(gfc_parentheses): New function.
(gfc_uplus): Adapt to renamed function.
* arith.h (gfc_parentheses): Add prototype.
* expr.c (gfc_copy_expr): Deal with INTRINSIC_PARENTHESES.
(simplifiy_intrinsic_op): Treat INTRINSIC_UPLUS separately from
INTRINSIC_PARENTHESES.

From-SVN: r123750
parent 2d3649b2
2007-04-12 Tobias Schlüter <tobi@gcc.gnu.org>
* arith.c (gfc_arith_uplus): Rename to ...
(gfc_arith_identity): ... this.
(gfc_parentheses): New function.
(gfc_uplus): Adapt to renamed function.
* arith.h (gfc_parentheses): Add prototype.
* expr.c (gfc_copy_expr): Deal with INTRINSIC_PARENTHESES.
(simplifiy_intrinsic_op): Treat INTRINSIC_UPLUS separately from
INTRINSIC_PARENTHESES.
2007-04-12 Tobias Burnus <burnus@net-b.de>
PR fortran/31472
......
......@@ -595,10 +595,11 @@ check_result (arith rc, gfc_expr *x, gfc_expr *r, gfc_expr **rp)
/* It may seem silly to have a subroutine that actually computes the
unary plus of a constant, but it prevents us from making exceptions
in the code elsewhere. */
in the code elsewhere. Used for unary plus and parenthesized
expressions. */
static arith
gfc_arith_uplus (gfc_expr *op1, gfc_expr **resultp)
gfc_arith_identity (gfc_expr *op1, gfc_expr **resultp)
{
*resultp = gfc_copy_expr (op1);
return ARITH_OK;
......@@ -1763,9 +1764,16 @@ eval_intrinsic_f3 (gfc_intrinsic_op operator,
gfc_expr *
gfc_parentheses (gfc_expr *op)
{
return eval_intrinsic_f2 (INTRINSIC_PARENTHESES, gfc_arith_identity,
op, NULL);
}
gfc_expr *
gfc_uplus (gfc_expr *op)
{
return eval_intrinsic_f2 (INTRINSIC_UPLUS, gfc_arith_uplus, op, NULL);
return eval_intrinsic_f2 (INTRINSIC_UPLUS, gfc_arith_identity, op, NULL);
}
......
......@@ -43,6 +43,7 @@ int gfc_compare_expr (gfc_expr *, gfc_expr *);
int gfc_compare_string (gfc_expr *, gfc_expr *);
/* Constant folding for gfc_expr trees. */
gfc_expr *gfc_parentheses (gfc_expr * op);
gfc_expr *gfc_uplus (gfc_expr * op);
gfc_expr *gfc_uminus (gfc_expr * op);
gfc_expr *gfc_add (gfc_expr *, gfc_expr *);
......
......@@ -465,6 +465,7 @@ gfc_copy_expr (gfc_expr *p)
switch (q->value.op.operator)
{
case INTRINSIC_NOT:
case INTRINSIC_PARENTHESES:
case INTRINSIC_UPLUS:
case INTRINSIC_UMINUS:
q->value.op.op1 = gfc_copy_expr (p->value.op.op1);
......@@ -771,8 +772,11 @@ simplify_intrinsic_op (gfc_expr *p, int type)
switch (p->value.op.operator)
{
case INTRINSIC_UPLUS:
case INTRINSIC_PARENTHESES:
result = gfc_parentheses (op1);
break;
case INTRINSIC_UPLUS:
result = gfc_uplus (op1);
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment