diff mbox

[CHKP] Fix ipa-comdats for instrumentation thunks

Message ID 20150407140730.GB11622@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Ilya Enkovich April 7, 2015, 2:07 p.m. UTC
On 06 Apr 20:41, Jan Hubicka wrote:
> > 2015-04-03 20:12 GMT+03:00 Jan Hubicka <hubicka@ucw.cz>:
> > >>
> > >> Currently ipa_comdats doesn't set comdat groups for thunks. At the
> > >
> > > I see, that is a bug.  It is supposed to keep thunks in the same section
> > > as their target (thunks doesn't really work across sections on some target,
> > > like PPC, because there is no way to produce a tailcall)
> > > Does the following fix the problem?
> > 
> > I believe this should help.  Will try it.
> If it passes testing, the patch is preapproved.
> 
> Thanks!
> Honza

Here is a committed version.

Thanks,
Ilya
--
diff mbox

Patch

diff --git a/gcc/ipa-comdats.c b/gcc/ipa-comdats.c
index f349f9f..e24359c 100644
--- a/gcc/ipa-comdats.c
+++ b/gcc/ipa-comdats.c
@@ -377,7 +377,7 @@  ipa_comdats (void)
 	      fprintf (dump_file, "To group: %s\n", IDENTIFIER_POINTER (group));
 	    }
 	  if (is_a <cgraph_node *> (symbol))
-	   dyn_cast <cgraph_node *>(symbol)->call_for_symbol_and_aliases
+	   dyn_cast <cgraph_node *>(symbol)->call_for_symbol_thunks_and_aliases
 		  (set_comdat_group_1,
 		   *comdat_head_map.get (group),
 		   true);
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-1.cc b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-1.cc
new file mode 100644
index 0000000..26d3c48
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-1.cc
@@ -0,0 +1,18 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcheck-pointer-bounds -mmpx" } */
+
+namespace
+{
+  template <int dim>
+  int __attribute__((noinline))
+  f1 ()
+  {
+    return dim;
+  }
+}
+
+int
+test ()
+{
+  return f1<3> ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-2.cc b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-2.cc
new file mode 100644
index 0000000..2b1abe9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-thunk-comdat-2.cc
@@ -0,0 +1,26 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcheck-pointer-bounds -mmpx" } */
+
+class c1
+{
+public:
+  virtual int test1 (const char *);
+};
+
+class c2
+{
+public:
+  int test2 (const char *);
+};
+
+int
+c1::test1 (const char *)
+{
+  return 0;
+}
+
+int
+c2::test2 (const char *)
+{
+  return 0;
+}