Commit 353c3b7e by Paul Brook Committed by Paul Brook

trans-common.c (find_equivalence): Find multiple rules.

	* trans-common.c (find_equivalence): Find multiple rules.
testsuite/
	* gfortran.fortran-torture/execute/equiv_1.f90: New test.

From-SVN: r82411
parent b1243dd5
2004-05-29 Paul Brook <paul@codesourcery.com>
* trans-common.c (find_equivalence): Find multiple rules.
2004-05-27 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* gfortran.h (gfc_current_locus, gfc_set_locus): Remove.
......
......@@ -649,7 +649,8 @@ add_condition (segment_info *f, gfc_equiv *eq1, gfc_equiv *eq2)
/* Given a segment element, search through the equivalence lists for unused
conditions that involve the symbol. Add these rules to the segment. */
conditions that involve the symbol. Add these rules to the segment. Only
checks for rules involving the first symbol in the equivalence set. */
static bool
find_equivalence (segment_info *f)
......@@ -666,7 +667,7 @@ find_equivalence (segment_info *f)
if (l->used)
continue;
if (c->expr->symtree->n.sym ==f-> sym)
if (c->expr->symtree->n.sym == f-> sym)
{
eq = c;
other = l;
......@@ -682,9 +683,12 @@ find_equivalence (segment_info *f)
if (eq)
{
add_condition (f, eq, other);
l->used = 1;
eq->used = 1;
found = TRUE;
break;
/* If this symbol is the fist in the chain we may find other
matches. Otherwise we can skip to the next equivalence. */
if (eq == l)
break;
}
}
}
......
2004-05-29 Paul Brook <paul@codesourcery.com>
* gfortran.fortran-torture/execute/equiv_1.f90: New test.
2004-05-28 Ziemowit Laski <zlaski@apple.com>
* gcc.dg/altivec-16.c: New test.
......
program prog
common /block/ i
equivalence (a, b, c), (i, j, k ,l)
a = 1.0
b = 2.0
c = 3.0
i = 1
j = 2
k = 3
l = 4
if ((a .ne. 3.0) .or. (b .ne. 3.0) .or. (c .ne. 3.0)) call abort ()
if ((i .ne. 4) .or. (j .ne. 4) .or. (k .ne. 4) .or. (l .ne. 4)) &
call abort ()
end program
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