From 349e312b4c93d5d3db61f887e401c02348b6bc2b Mon Sep 17 00:00:00 2001 From: Ilya Enkovich Date: Fri, 24 Jul 2015 13:15:49 +0000 Subject: [PATCH] re PR ipa/66566 ([CHKP] ICE in early_inliner: internal compiler error: in operator[], at vec.h:714) gcc/ PR ipa/66566 * ipa-inline-analysis.c (estimate_calls_size_and_time): Check edge summary is available. gcc/testsuite/ PR ipa/66566 * gcc.target/i386/mpx/pr66566.c: New test. From-SVN: r226155 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-inline-analysis.c | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/mpx/pr66566.c | 12 ++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/mpx/pr66566.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e18f35fe66..aed24e73723 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-07-24 Ilya Enkovich + + PR ipa/66566 + * ipa-inline-analysis.c (estimate_calls_size_and_time): Check + edge summary is available. + 2015-07-24 Richard Biener * genmatch.c (struct dt_node): Add statistic fields. diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 286335eb474..3a8f0eced9d 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -3109,6 +3109,9 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size, struct cgraph_edge *e; for (e = node->callees; e; e = e->next_callee) { + if (inline_edge_summary_vec.length () <= (unsigned) e->uid) + continue; + struct inline_edge_summary *es = inline_edge_summary (e); /* Do not care about zero sized builtins. */ @@ -3140,6 +3143,9 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size, } for (e = node->indirect_calls; e; e = e->next_callee) { + if (inline_edge_summary_vec.length () <= (unsigned) e->uid) + continue; + struct inline_edge_summary *es = inline_edge_summary (e); if (!es->predicate || evaluate_predicate (es->predicate, possible_truths)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3e8c2d2d82f..244bf587ae7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-07-24 Ilya Enkovich + + PR ipa/66566 + * gcc.target/i386/mpx/pr66566.c: New test. + 2015-07-24 H.J. Lu PR bootstrap/66978 diff --git a/gcc/testsuite/gcc.target/i386/mpx/pr66566.c b/gcc/testsuite/gcc.target/i386/mpx/pr66566.c new file mode 100644 index 00000000000..a405c20ac0e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/mpx/pr66566.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcheck-pointer-bounds -mmpx" } */ + +union jsval_layout +{ + void *asPtr; +}; +union jsval_layout a; +union jsval_layout b; +union jsval_layout __inline__ fn1() { return b; } + +void fn2() { a = fn1(); }