From 0e5da0beef9a58af4db3edb962bfe3112d85ddbc Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Sat, 26 Jul 2003 07:34:21 +0000 Subject: [PATCH] rs6000.c (rs6000_output_function_epilogue): Don't insert a label at the end of an function under Mach-O. * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't insert a label at the end of an function under Mach-O. From-SVN: r69809 --- gcc/ChangeLog | 5 ++++- gcc/config/rs6000/rs6000.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa369f4df13..23f7780ad89 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,7 @@ -2003-07-25 Geoffrey Keating +2003-07-26 Geoffrey Keating + + * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't + insert a label at the end of an function under Mach-O. * c-decl.c (c_static_assembler_name): Remove TREE_STATIC test. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 10a6a53fbf6..19a77fd241b 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -12116,6 +12116,23 @@ rs6000_output_function_epilogue (file, size) } } +#if TARGET_OBJECT_FORMAT == OBJECT_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 + /* Output a traceback table here. See /usr/include/sys/debug.h for info on its format. -- 2.30.2