aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2016-05-16 21:33:02 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2016-05-16 19:33:02 +0000
commit19322a8706b14dd29f2a8ac925e32356ca6d3112 (patch)
tree7c95157fdec589bf4c2449659d0737681576009a
parent1743ce80017ca13a486cf50a0ed4d32757238a64 (diff)
downloadgcc-19322a8706b14dd29f2a8ac925e32356ca6d3112.zip
gcc-19322a8706b14dd29f2a8ac925e32356ca6d3112.tar.gz
gcc-19322a8706b14dd29f2a8ac925e32356ca6d3112.tar.bz2
ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig into instrumentation thunks.
* ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig into instrumentation thunks. * cif-code.def (CIF_CHKP): New. From-SVN: r236299
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cif-code.def4
-rw-r--r--gcc/ipa-inline-analysis.c8
3 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index db88e28..1703331 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-16 Jan Hubicka <hubicka@ucw.cz>
+
+ * ipa-inline-analysis.c (compute_inline_parameters): Disable inlinig
+ into instrumentation thunks.
+ * cif-code.def (CIF_CHKP): New.
+
2016-05-16 Uros Bizjak <ubizjak@gmail.com>
* config/i386/xopintrin.h: Correct "unsinged" typo in the comments.
diff --git a/gcc/cif-code.def b/gcc/cif-code.def
index 196151f..b5e019f 100644
--- a/gcc/cif-code.def
+++ b/gcc/cif-code.def
@@ -135,3 +135,7 @@ DEFCIFCODE(CILK_SPAWN, CIF_FINAL_ERROR,
/* We proved that the call is unreachable. */
DEFCIFCODE(UNREACHABLE, CIF_FINAL_ERROR,
N_("unreachable"))
+
+/* We can't inline because of instrumentation thunk. */
+DEFCIFCODE(CHKP, CIF_FINAL_ERROR,
+ N_("caller is instrumetnation thunk"))
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 82d1774..8b5ca86 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2943,7 +2943,13 @@ compute_inline_parameters (struct cgraph_node *node, bool early)
info->self_size = info->size;
info->self_time = info->time;
/* We can not inline instrumetnation clones. */
- info->inlinable = !node->thunk.add_pointer_bounds_args;
+ if (node->thunk.add_pointer_bounds_args)
+ {
+ info->inlinable = false;
+ node->callees->inline_failed = CIF_CHKP;
+ }
+ else
+ info->inlinable = true;
}
else
{