+2015-01-13 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/64565
+ * ipa-inline.c (inline_small_functions): Update callee keys after
+ resolving speculation
+ (inline_small_functions): Always check monotonicity of the queue.
+
2015-01-13 Marek Polacek <polacek@redhat.com>
PR middle-end/64391
reset_edge_caches (where);
update_caller_keys (&edge_heap, where,
updated_nodes, NULL);
+ update_callee_keys (&edge_heap, where,
+ updated_nodes);
bitmap_clear (updated_nodes);
}
}
/* Disable checking for profile because roundoff errors may cause slight
deviations in the order. */
gcc_assert (max_count || cached_badness == current_badness);
- gcc_assert (max_count || current_badness >= badness);
+ gcc_assert (current_badness >= badness);
#else
current_badness = edge_badness (edge, false);
#endif
+2015-01-13 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/64565
+ * g++.dg/torture/pr64565.C: New testcase.
+
2015-01-13 Marek Polacek <polacek@redhat.com>
PR middle-end/64391
--- /dev/null
+/* { dg-do compile } */
+typedef enum
+{
+ NS_OK
+} nsresult;
+struct A
+{
+ static int kIID;
+};
+class B
+{
+};
+class C
+{
+public:
+ C (B p1) { m_fn1 (p1, A::kIID); }
+ void m_fn1 (B, int);
+};
+class D;
+class F
+{
+public:
+ F (int);
+};
+class G
+{
+public:
+ D *operator[](int);
+};
+class H
+{
+ virtual nsresult m_fn2 ();
+
+public:
+ void m_fn3 ();
+};
+class J : H
+{
+ G mQueries;
+ int mLiveUpdate;
+ nsresult m_fn2 ();
+};
+class D
+{
+public:
+ nsresult m_fn4 (int);
+ void m_fn5 (int);
+};
+class I
+{
+public:
+ static I *
+ m_fn6 ()
+ {
+ B __trans_tmp_3;
+ if (!gHistoryService)
+ C serv = __trans_tmp_3;
+ }
+ void m_fn7 ();
+ static I *gHistoryService;
+};
+D *Refresh___trans_tmp_2;
+D Refresh___trans_tmp_6, Refresh___trans_tmp_5;
+int Refresh_hasDomain;
+nsresult
+J::m_fn2 ()
+{
+ m_fn3 ();
+ I history = *I::m_fn6 ();
+ switch (mLiveUpdate)
+ {
+ case 1:
+ {
+ mQueries[0];
+ F query = 0;
+ if (Refresh_hasDomain)
+ return NS_OK;
+ }
+ case 0:
+ {
+ Refresh___trans_tmp_2 = mQueries[0];
+ F query = Refresh___trans_tmp_5.m_fn4 (0);
+ history.m_fn7 ();
+ Refresh___trans_tmp_6.m_fn5 (0);
+ }
+ case 3:
+ m_fn2 ();
+ }
+}