aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2011-06-04 16:24:20 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2011-06-04 14:24:20 +0000
commite3195c52b954dd2956385f6b209e2d51785d13a1 (patch)
tree5ae5e94e0ba3f23be6459d3fd1878156e922be26
parent047d33a0d40c52a5b227766c9af65d695d10b190 (diff)
downloadgcc-e3195c52b954dd2956385f6b209e2d51785d13a1.zip
gcc-e3195c52b954dd2956385f6b209e2d51785d13a1.tar.gz
gcc-e3195c52b954dd2956385f6b209e2d51785d13a1.tar.bz2
re PR tree-optimization/48929 (ICE: in estimate_size_after_inlining, at ipa-inline-analysis.c:1961 with -findirect-inlining)
PR tree-optimize/48929 * gcc.c-torture/compile/pr48929.c: New testcase. * ipa-inline-analysis.c (remap_edge_predicates): Fix handling of empty predicate. From-SVN: r174638
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-inline-analysis.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr48929.c32
4 files changed, 47 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c7f031f..3306765 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-04 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/48929
+ * ipa-inline-analysis.c (remap_edge_predicates): Fix handling
+ of empty predicate.
+
2011-06-04 Alexandre Oliva <aoliva@redhat.com>
PR debug/48333
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 4a65dd5..45bfeb6 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -1949,6 +1949,8 @@ remap_edge_predicates (struct cgraph_node *node,
if (!e->inline_failed)
remap_edge_predicates (e->callee, info, callee_info, operand_map,
possible_truths, toplev_predicate);
+ else
+ edge_set_predicate (e, toplev_predicate);
}
for (e = node->indirect_calls; e; e = e->next_callee)
{
@@ -1969,6 +1971,8 @@ remap_edge_predicates (struct cgraph_node *node,
e->frequency = 0;
}
}
+ else
+ edge_set_predicate (e, toplev_predicate);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6dd2803..05efca0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-04 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/48929
+ * gcc.c-torture/compile/pr48929.c: New testcase.
+
2011-06-04 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/guality/rotatetest.c (f5, f6): Fix up pastos.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48929.c b/gcc/testsuite/gcc.c-torture/compile/pr48929.c
new file mode 100644
index 0000000..f085dc6
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48929.c
@@ -0,0 +1,32 @@
+/*{ dg-options "-O -findirect-inlining" }*/
+void bar ();
+
+static void
+f4 (double di, double d, double *dd)
+{
+ if (d == 0 && di == 0)
+ *dd = 0;
+ bar ();
+}
+
+static inline void
+f3 (int i, double d)
+{
+ double di = i;
+ double dd;
+ f4 (di, d, &dd);
+}
+
+static inline void
+f2 (int i, double d)
+{
+ if (d < 0)
+ f3 (i, d);
+}
+
+void
+f1 ()
+{
+ f2 (0, 1);
+}
+