aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2014-01-17 05:36:19 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2014-01-17 05:36:19 +0000
commitc68b3f5291b6588570760d247a3f5223cb087915 (patch)
tree90a1309bc0a8bc2bd8d5378215cc4fff675d2560
parentb5407ad1efa9c19efa34d187ad9ee60f248ede60 (diff)
downloadgcc-c68b3f5291b6588570760d247a3f5223cb087915.zip
gcc-c68b3f5291b6588570760d247a3f5223cb087915.tar.gz
gcc-c68b3f5291b6588570760d247a3f5223cb087915.tar.bz2
ipa-ref.c (ipa_remove_stmt_references): Fix references traversal when removing references.
* ipa-ref.c (ipa_remove_stmt_references): Fix references traversal when removing references. From-SVN: r206697
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-ref.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5a575e0..5b0795d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-16 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ * ipa-ref.c (ipa_remove_stmt_references): Fix references
+ traversal when removing references.
+
2014-01-16 Jan Hubicka <jh@suse.cz>
PR ipa/59775
diff --git a/gcc/ipa-ref.c b/gcc/ipa-ref.c
index b8c3d51..6aa41e6 100644
--- a/gcc/ipa-ref.c
+++ b/gcc/ipa-ref.c
@@ -291,11 +291,13 @@ void
ipa_remove_stmt_references (symtab_node *referring_node, gimple stmt)
{
struct ipa_ref *r = NULL;
- int i;
+ int i = 0;
- for (i = 0; ipa_ref_list_reference_iterate (&referring_node->ref_list, i, r); i++)
+ while (ipa_ref_list_reference_iterate (&referring_node->ref_list, i, r))
if (r->stmt == stmt)
ipa_remove_reference (r);
+ else
+ i++;
}
/* Remove all stmt references in non-speculative references.