From 6c6fd1087265ccfc2a3f87a956b83012cad3f2a1 Mon Sep 17 00:00:00 2001
From: langton <langton@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 29 Jun 2006 21:49:19 +0000
Subject: [PATCH] 	* config/i386/i386.c (ix86_output_function_epilogue):
 Don't 	insert a label at the end of an function under Mach-O.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115079 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog          |  6 ++++++
 gcc/config/i386/i386.c | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fdcc4b8b7a45..5a8cb4a19246 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-29  Asher Langton  <langton2@llnl.gov>
+
+	PR target/25765
+	* config/i386/i386.c (ix86_output_function_epilogue): Don't
+	insert a label at the end of an function under Mach-O.
+	
 2006-06-29  Eric Christopher  <echristo@apple.com>
 	    Evan Cheng  <evan.cheng@apple.com>
 
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index bce7991ad097..6c8e1a7e66e5 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -5700,6 +5700,23 @@ ix86_output_function_epilogue (FILE *file ATTRIBUTE_UNUSED,
 {
   if (pic_offset_table_rtx)
     REGNO (pic_offset_table_rtx) = REAL_PIC_OFFSET_TABLE_REGNUM;
+#if TARGET_MACHO
+  /* Mach-O doesn't support labels at the end of objects, so if
+     it looks like we might want one, insert a NOP.  */
+  {
+    rtx insn = get_last_insn ();
+    while (insn
+	   && NOTE_P (insn)
+	   && NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED_LABEL)
+      insn = PREV_INSN (insn);
+    if (insn
+	&& (LABEL_P (insn)
+	    || (NOTE_P (insn)
+		&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL)))
+      fputs ("\tnop\n", file);
+  }
+#endif
+
 }
 
 /* Extract the parts of an RTL expression that is a valid memory address
-- 
GitLab