aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-11-06 22:08:49 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2012-11-06 21:08:49 +0000
commit9dc4346aba8bc3c4600e2e6b5569099ccc01bd85 (patch)
treeffab5c3984b38ea5b36772ada2dc0df12643ad5e /gcc
parentefa1fe237a8fbe632cdffa757d43b8fc6489db38 (diff)
downloadgcc-9dc4346aba8bc3c4600e2e6b5569099ccc01bd85.zip
gcc-9dc4346aba8bc3c4600e2e6b5569099ccc01bd85.tar.gz
gcc-9dc4346aba8bc3c4600e2e6b5569099ccc01bd85.tar.bz2
ipa-inline-analysis.c (estimate_function_body_sizes, [...]): Cap time calculations.
* ipa-inline-analysis.c (estimate_function_body_sizes, inline_update_overall_summary): Cap time calculations. From-SVN: r193259
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-inline-analysis.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 316f55b..f771533 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-06 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline-analysis.c (estimate_function_body_sizes,
+ inline_update_overall_summary): Cap time calculations.
+
2012-11-06 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (ix86_init_machine_status): Do not
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 595cb68..7d89d89 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2442,6 +2442,8 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
{
time += this_time;
size += this_size;
+ if (time > MAX_TIME * INLINE_TIME_SCALE)
+ time = MAX_TIME * INLINE_TIME_SCALE;
}
/* We account everything but the calls. Calls have their own
@@ -3323,7 +3325,11 @@ inline_update_overall_summary (struct cgraph_node *node)
info->size = 0;
info->time = 0;
for (i = 0; VEC_iterate (size_time_entry, info->entry, i, e); i++)
- info->size += e->size, info->time += e->time;
+ {
+ info->size += e->size, info->time += e->time;
+ if (info->time > MAX_TIME * INLINE_TIME_SCALE)
+ info->time = MAX_TIME * INLINE_TIME_SCALE;
+ }
estimate_calls_size_and_time (node, &info->size, &info->time, NULL,
~(clause_t)(1 << predicate_false_condition),
NULL, NULL, NULL);