aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2014-10-24 08:06:20 +0200
committerUros Bizjak <uros@gcc.gnu.org>2014-10-24 08:06:20 +0200
commitf1c859ee84ad2d44fa9fc1867b183c47ee1d0489 (patch)
tree4cf7eb2f0d17605bcd0fb6112e7ab3a42ea7f915 /gcc
parent5eda5bad3c455d499b6a3611b433f2945caa239d (diff)
downloadgcc-f1c859ee84ad2d44fa9fc1867b183c47ee1d0489.zip
gcc-f1c859ee84ad2d44fa9fc1867b183c47ee1d0489.tar.gz
gcc-f1c859ee84ad2d44fa9fc1867b183c47ee1d0489.tar.bz2
ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes): Guard division by zero in dumps.
* ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes): Guard division by zero in dumps. (sem_item_optimizer::merge_classes): Ditto. From-SVN: r216612
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-icf.c11
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4187dd9..cefe8ff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-10-24 Martin Liska <mliska@suse.cz>
+
+ * ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes): Guard
+ division by zero in dumps.
+ (sem_item_optimizer::merge_classes): Ditto.
+
2014-10-23 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_can_combine_p): Fix typo in last change.
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index d1238a4..e8c32c7 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -1736,7 +1736,7 @@ sem_item_optimizer::parse_nonsingleton_classes (void)
if (dump_file)
fprintf (dump_file, "Init called for %u items (%.2f%%).\n", init_called_count,
- 100.0f * init_called_count / m_items.length ());
+ m_items.length () ? 100.0f * init_called_count / m_items.length (): 0.0f);
}
/* Equality function for semantic items is used to subdivide existing
@@ -2196,14 +2196,15 @@ sem_item_optimizer::merge_classes (unsigned int prev_class_count)
fprintf (dump_file, "Congruent classes before: %u, after: %u\n",
prev_class_count, class_count);
fprintf (dump_file, "Average class size before: %.2f, after: %.2f\n",
- 1.0f * item_count / prev_class_count,
- 1.0f * item_count / class_count);
+ prev_class_count ? 1.0f * item_count / prev_class_count : 0.0f,
+ class_count ? 1.0f * item_count / class_count : 0.0f);
fprintf (dump_file, "Average non-singular class size: %.2f, count: %u\n",
- 1.0f * non_singular_classes_sum / non_singular_classes_count,
+ non_singular_classes_count ? 1.0f * non_singular_classes_sum /
+ non_singular_classes_count : 0.0f,
non_singular_classes_count);
fprintf (dump_file, "Equal symbols: %u\n", equal_items);
fprintf (dump_file, "Fraction of visited symbols: %.2f%%\n\n",
- 100.0f * equal_items / item_count);
+ item_count ? 100.0f * equal_items / item_count : 0.0f);
}
for (hash_table<congruence_class_group_hash>::iterator it = m_classes.begin ();