diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2017-04-14 22:14:34 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@gcc.gnu.org> | 2017-04-14 22:14:34 +0100 |
commit | dd3d6a42fcd881b1f4f8fbd6cc82c1f14124b317 (patch) | |
tree | d956a464bc5962f2dee2f1d70f39ffd824ed2d80 /gcc/fortran/class.c | |
parent | 8c1d6b64e3e163e434b2f8d8521a31c9469089f0 (diff) | |
download | gcc-dd3d6a42fcd881b1f4f8fbd6cc82c1f14124b317.zip gcc-dd3d6a42fcd881b1f4f8fbd6cc82c1f14124b317.tar.gz gcc-dd3d6a42fcd881b1f4f8fbd6cc82c1f14124b317.tar.bz2 |
arc: Fix for loop end detection
We use a negative ID number to link together the doloop_begin and
doloop_end instructions. This negative ID number is setup within
doloop_begin, at this point the ID is stored into the loop end
instruction (doloop_end_i) and placed into the doloop_begin_i
instruction.
In arc.c (arc_reorg) we extract the ID from the doloop_end_i
instruction in order to find the matching doloop_begin_i instruction,
though the ID is only used in some cases.
Currently in arc_reorg when we extract the ID we negate it. This
negation is invalid. The ID stored in both doloop_end_i and
doloop_begin_i is already negative, the negation in arc_reorg means
that if we need to use the ID to find the doloop_begin_i then we will
never find it (as the IDs will never match).
This commit removes the unneeded negation, moves the extraction of the
ID into a more appropriately scoped block and adds a new test for this
issue.
gcc/ChangeLog:
* config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
block, and do not negate it, the stored id is already negative.
gcc/testsuite/ChangeLog:
* gcc.target/arc/loop-1.c: New file.
Co-Authored-By: Guy Benyei <guybe@mellanox.com>
From-SVN: r246933
Diffstat (limited to 'gcc/fortran/class.c')
0 files changed, 0 insertions, 0 deletions