This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] ppc toc section creation


Hi!

In http://gcc.gnu.org/ml/gcc-patches/2004-10/msg01052.html
you suggested what the following patch is doing and I was wrong
in replying that this wouldn't work.  Furthermore, I completely
forgot to post this patch.  Sorry about that.
As it has been sitting in my HEAD tree for quite some time, it has
been tested many times on both ppc-redhat-linux and ppc64-redhat-linux.

Ok to commit?

2005-01-24  Jakub Jelinek  <jakub@redhat.com>

	PR target/17751
	* config/rs6000/rs6000.c (rs6000_file_start): Create toc section
	for AIX ABI or ELF -fPIC.
	(rs6000_emit_load_toc_table): Don't create toc_section here.
	(rs6000_xcoff_file_start): Nor here.

	* gcc.dg/ppc64-toc.c: New test.

--- gcc/config/rs6000/rs6000.c.jj	2004-10-04 14:56:03.000000000 +0200
+++ gcc/config/rs6000/rs6000.c	2004-10-18 16:09:05.265350895 +0200
@@ -1179,6 +1179,12 @@ rs6000_file_start (void)
       if (*start == '\0')
 	putc ('\n', file);
     }
+
+  if (DEFAULT_ABI == ABI_AIX || (TARGET_ELF && flag_pic == 2))
+    {
+      toc_section ();
+      text_section ();
+    }
 }
 
 /* Return nonzero if this function is known to have a null epilogue.  */
@@ -11455,13 +11461,6 @@ rs6000_emit_load_toc_table (int fromprol
 		   : gen_reg_rtx (Pmode));
       rtx symF;
 
-      /* possibly create the toc section */
-      if (! toc_initialized)
-	{
-	  toc_section ();
-	  function_section (current_function_decl);
-	}
-
       if (fromprolog)
 	{
 	  rtx symL;
@@ -15915,7 +15914,6 @@ rs6000_xcoff_file_start (void)
   fputs ("\t.file\t", asm_out_file);
   output_quoted_string (asm_out_file, main_input_filename);
   fputc ('\n', asm_out_file);
-  toc_section ();
   if (write_symbols != NO_DEBUG)
     private_data_section ();
   text_section ();
--- gcc/testsuite/gcc.dg/ppc64-toc.c.jj	2004-10-12 18:54:58.000000000 +0200
+++ gcc/testsuite/gcc.dg/ppc64-toc.c	2004-10-12 18:42:16.000000000 +0200
@@ -0,0 +1,22 @@
+/* { dg-do link } */
+/* { dg-options "-m64 -mminimal-toc" { target powerpc64-*-* } } */
+
+char *strchr (const char *, int);
+
+int
+foo (int a)
+{
+  int b;
+
+  b = 0;
+  if ("/"[1] != '\0')
+    if (strchr ("/", a))
+      b = 1;
+  return b;
+}
+
+int
+main (void)
+{
+  return 0;
+}

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]