aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-06-13 17:45:52 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-06-13 17:45:52 +0000
commit7b6879b2db04384b7228f2aca4533be817b9efbd (patch)
tree5a27e2e554315d1165ede1f75f09d176b8ea3afb /gcc
parent342f89653affafb42ba578c876635a9ae4d06810 (diff)
downloadgcc-7b6879b2db04384b7228f2aca4533be817b9efbd.zip
gcc-7b6879b2db04384b7228f2aca4533be817b9efbd.tar.gz
gcc-7b6879b2db04384b7228f2aca4533be817b9efbd.tar.bz2
re PR fortran/88810 (gcc/fortran/dependency.c:2200: possible cut'n'paste error ?)
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/88810 * dependency.c (gfc_dep_resolver): Re-arrange code to make the logic a bit more transparent. Fix 2 nearby formatting issues. From-SVN: r272254
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/dependency.c56
2 files changed, 36 insertions, 26 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 897d773..ebff427 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/88810
+ * dependency.c (gfc_dep_resolver): Re-arrange code to make the logic
+ a bit more transparent. Fix 2 nearby formatting issues.
+
2019-06-13 Jakub Jelinek <jakub@redhat.com>
* io.c (check_format): Use G_(...) instead of _(...) for error values,
diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c
index ae0f803..8eae644 100644
--- a/gcc/fortran/dependency.c
+++ b/gcc/fortran/dependency.c
@@ -2141,7 +2141,7 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse)
/* Index for the reverse array. */
m = -1;
- for (n=0; n < lref->u.ar.dimen; n++)
+ for (n = 0; n < lref->u.ar.dimen; n++)
{
/* Handle dependency when either of array reference is vector
subscript. There is no dependency if the vector indices
@@ -2163,7 +2163,8 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse)
if (lref->u.ar.dimen_type[n] == DIMEN_RANGE
&& rref->u.ar.dimen_type[n] == DIMEN_RANGE)
- this_dep = check_section_vs_section (&lref->u.ar, &rref->u.ar, n);
+ this_dep = check_section_vs_section (&lref->u.ar,
+ &rref->u.ar, n);
else if (lref->u.ar.dimen_type[n] == DIMEN_ELEMENT
&& rref->u.ar.dimen_type[n] == DIMEN_RANGE)
this_dep = gfc_check_element_vs_section (lref, rref, n);
@@ -2196,35 +2197,38 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse)
if (rref->u.ar.dimen_type[n] == DIMEN_RANGE
&& lref->u.ar.dimen_type[n] == DIMEN_RANGE)
{
- /* Set reverse if backward dependence and not inhibited. */
- if (reverse && reverse[m] == GFC_ENABLE_REVERSE)
- reverse[m] = (this_dep == GFC_DEP_BACKWARD) ?
- GFC_REVERSE_SET : reverse[m];
-
- /* Set forward if forward dependence and not inhibited. */
- if (reverse && reverse[m] == GFC_ENABLE_REVERSE)
- reverse[m] = (this_dep == GFC_DEP_FORWARD) ?
- GFC_FORWARD_SET : reverse[m];
-
- /* Flag up overlap if dependence not compatible with
- the overall state of the expression. */
- if (reverse && reverse[m] == GFC_REVERSE_SET
- && this_dep == GFC_DEP_FORWARD)
+ if (reverse)
{
- reverse[m] = GFC_INHIBIT_REVERSE;
- this_dep = GFC_DEP_OVERLAP;
- }
- else if (reverse && reverse[m] == GFC_FORWARD_SET
- && this_dep == GFC_DEP_BACKWARD)
- {
- reverse[m] = GFC_INHIBIT_REVERSE;
- this_dep = GFC_DEP_OVERLAP;
+ /* Reverse if backward dependence and not inhibited. */
+ if (reverse[m] == GFC_ENABLE_REVERSE
+ && this_dep == GFC_DEP_BACKWARD)
+ reverse[m] = GFC_REVERSE_SET;
+
+ /* Forward if forward dependence and not inhibited. */
+ if (reverse[m] == GFC_ENABLE_REVERSE
+ && this_dep == GFC_DEP_FORWARD)
+ reverse[m] = GFC_FORWARD_SET;
+
+ /* Flag up overlap if dependence not compatible with
+ the overall state of the expression. */
+ if (reverse[m] == GFC_REVERSE_SET
+ && this_dep == GFC_DEP_FORWARD)
+ {
+ reverse[m] = GFC_INHIBIT_REVERSE;
+ this_dep = GFC_DEP_OVERLAP;
+ }
+ else if (reverse[m] == GFC_FORWARD_SET
+ && this_dep == GFC_DEP_BACKWARD)
+ {
+ reverse[m] = GFC_INHIBIT_REVERSE;
+ this_dep = GFC_DEP_OVERLAP;
+ }
}
/* If no intention of reversing or reversing is explicitly
inhibited, convert backward dependence to overlap. */
- if ((reverse == NULL && this_dep == GFC_DEP_BACKWARD)
- || (reverse != NULL && reverse[m] == GFC_INHIBIT_REVERSE))
+ if ((!reverse && this_dep == GFC_DEP_BACKWARD)
+ || (reverse && reverse[m] == GFC_INHIBIT_REVERSE))
this_dep = GFC_DEP_OVERLAP;
}