aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury Gribov <tetra2005@gmail.com>2017-06-29 08:50:21 +0000
committerMaxim Ostapenko <chefmax@gcc.gnu.org>2017-06-29 11:50:21 +0300
commitc8fb20d8bd45a88c2f000be86936b64ba67ef8e5 (patch)
tree89facb31679bcd9da11f2eec6fb97c63236f5429
parent1cc6250db088a1d2cee97acf73d917cdd6f48ab1 (diff)
downloadgcc-c8fb20d8bd45a88c2f000be86936b64ba67ef8e5.zip
gcc-c8fb20d8bd45a88c2f000be86936b64ba67ef8e5.tar.gz
gcc-c8fb20d8bd45a88c2f000be86936b64ba67ef8e5.tar.bz2
re PR ipa/80565 (ICE at -O2 and -O3 in 32-bit mode (not 64-bit) on x86_64-linux-gnu (in edge_badness, at ipa-inline.c:1028))
2017-06-29 Yury Gribov <tetra2005@gmail.com> PR bootstrap/80565 * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization code. * ipa-inline.h (edge_growth_cache_entry::edge_growth_cache_entry): New function. (reset_edge_growth_cache): Update to use constructor. From-SVN: r249771
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/ipa-cp.c8
-rw-r--r--gcc/ipa-inline.h10
3 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5211806..68129a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2017-06-29 Yury Gribov <tetra2005@gmail.com>
+
+ PR bootstrap/80565
+ * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
+ code.
+ * ipa-inline.h
+ (edge_growth_cache_entry::edge_growth_cache_entry): New
+ function.
+ (reset_edge_growth_cache): Update to use constructor.
+
2017-06-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index c7e3c71..ee0aa9f 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -159,6 +159,10 @@ public:
/* Time benefit and size cost that specializing the function for this value
can bring about in it's callees (transitively). */
int prop_time_benefit, prop_size_cost;
+
+ ipcp_value_base ()
+ : local_time_benefit (0), local_size_cost (0),
+ prop_time_benefit (0), prop_size_cost (0) {}
};
/* Describes one particular value stored in struct ipcp_lattice. */
@@ -188,6 +192,10 @@ public:
/* True if this valye is currently on the topo-sort stack. */
bool on_stack;
+ ipcp_value()
+ : sources (0), next (0), scc_next (0), topo_next (0),
+ spec_node (0), dfs (0), low_link (0), on_stack (false) {}
+
void add_source (cgraph_edge *cs, ipcp_value *src_val, int src_idx,
HOST_WIDE_INT offset);
};
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h
index 54c1ed9..4b9a1c2 100644
--- a/gcc/ipa-inline.h
+++ b/gcc/ipa-inline.h
@@ -28,6 +28,14 @@ struct edge_growth_cache_entry
sreal time, nonspec_time;
int size;
ipa_hints hints;
+
+ edge_growth_cache_entry()
+ : size (0), hints (0) {}
+
+ edge_growth_cache_entry(int64_t time, int64_t nonspec_time,
+ int size, ipa_hints hints)
+ : time (time), nonspec_time (nonspec_time), size (size),
+ hints (hints) {}
};
extern vec<edge_growth_cache_entry> edge_growth_cache;
@@ -116,7 +124,7 @@ reset_edge_growth_cache (struct cgraph_edge *edge)
{
if ((int)edge_growth_cache.length () > edge->uid)
{
- struct edge_growth_cache_entry zero = {0, 0, 0, 0};
+ struct edge_growth_cache_entry zero (0, 0, 0, 0);
edge_growth_cache[edge->uid] = zero;
}
}