diff options
author | Mikael Morin <mikael.morin@sfr.fr> | 2011-10-07 21:43:21 +0200 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2011-10-07 19:43:21 +0000 |
commit | 199c387dd1cad65c9ebbfb158e36d4cf005f6838 (patch) | |
tree | 8da38ae31ac3b404d187dd6e3cc9101a0ea6e6c2 /gcc/fortran/trans-array.c | |
parent | 287b3dd2b2d990bebaa274ba2183b09f8e2aadae (diff) | |
download | gcc-199c387dd1cad65c9ebbfb158e36d4cf005f6838.zip gcc-199c387dd1cad65c9ebbfb158e36d4cf005f6838.tar.gz gcc-199c387dd1cad65c9ebbfb158e36d4cf005f6838.tar.bz2 |
trans-array.c (gfc_conv_ss_startstride): Support zero rank loop.
* trans-array.c (gfc_conv_ss_startstride): Support zero rank loop.
From-SVN: r179682
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index ee5761b..067fe0b 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -3279,8 +3279,7 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) loop->dimen = 0; /* Determine the rank of the loop. */ - for (ss = loop->ss; - ss != gfc_ss_terminator && loop->dimen == 0; ss = ss->loop_chain) + for (ss = loop->ss; ss != gfc_ss_terminator; ss = ss->loop_chain) { switch (ss->type) { @@ -3290,7 +3289,7 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) case GFC_SS_COMPONENT: loop->dimen = ss->data.info.dimen; loop->codimen = ss->data.info.codimen; - break; + goto done; /* As usual, lbound and ubound are exceptions!. */ case GFC_SS_INTRINSIC: @@ -3300,14 +3299,14 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) case GFC_ISYM_UBOUND: loop->dimen = ss->data.info.dimen; loop->codimen = 0; - break; + goto done; case GFC_ISYM_LCOBOUND: case GFC_ISYM_UCOBOUND: case GFC_ISYM_THIS_IMAGE: loop->dimen = ss->data.info.dimen; loop->codimen = ss->data.info.codimen; - break; + goto done; default: break; @@ -3320,8 +3319,9 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) /* We should have determined the rank of the expression by now. If not, that's bad news. */ - gcc_assert (loop->dimen + loop->codimen != 0); + gcc_unreachable (); +done: /* Loop over all the SS in the chain. */ for (ss = loop->ss; ss != gfc_ss_terminator; ss = ss->loop_chain) { |