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]

Re: [PATCH 4/4] define ASM_OUTPUT_LABEL to the name of a function


On Wed, Aug 5, 2015 at 3:36 PM, Trevor Saunders <tbsaunde@tbsaunde.org> wrote:
> On Wed, Aug 05, 2015 at 01:47:30PM +0200, Richard Biener wrote:
>> On Wed, Aug 5, 2015 at 12:57 PM, Trevor Saunders <tbsaunde@tbsaunde.org> wrote:
>> > On Mon, Jul 27, 2015 at 11:06:58AM +0200, Richard Biener wrote:
>> >> On Sat, Jul 25, 2015 at 4:37 AM,  <tbsaunde+gcc@tbsaunde.org> wrote:
>> >> > From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
>> >> >
>> >> >         * config/arc/arc.h, config/bfin/bfin.h, config/frv/frv.h,
>> >> >         config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
>> >> >         config/lm32/lm32.h, config/mep/mep.h, config/mmix/mmix.h,
>> >> >         config/rs6000/rs6000.c, config/rs6000/xcoff.h, config/spu/spu.h,
>> >> >         config/visium/visium.h, defaults.h: Define ASM_OUTPUT_LABEL to
>> >> > the name of a function.
>> >> >         * output.h (default_output_label): New prototype.
>> >> >         * varasm.c (default_output_label): New function.
>> >> >         * vmsdbgout.c: Include tm_p.h.
>> >> >         * xcoffout.c: Likewise.
>> >>
>> >> Just a general remark - the GCC output machinery is known to be slow,
>> >> adding indirect calls might be not the very best idea without refactoring
>> >> some of it.
>> >>
>> >> Did you do any performance measurements for artificial testcases
>> >> exercising the specific bits you change?
>> >
>> > sorry about the delay, but I finally got a chance to do some perf tests
>> > of the first patch.  I took three test cases fold-const.ii, insn-emit.ii
>> > and a random .i from firefox and did 3 trials of the length of 100
>> > compilations.  The only non default flag was -std=gnu++11.
>> >
>> > results before patch hookizing output_ascii
>> >
>> > fold-const.ii
>> > real    3m18.051s
>> > user    2m41.340s
>> > sys     0m36.544s
>> > real    3m18.141s
>> > user    2m42.236s
>> > sys     0m35.740s
>> > real    3m18.297s
>> > user    2m42.316s
>> > sys     0m35.804s
>> >
>> > insn-emit.ii
>> > real    9m58.229s
>> > user    8m26.960s
>> > sys     1m31.224s
>> > real    9m57.857s
>> > user    8m24.616s
>> > sys     1m33.072s
>> > real    9m57.922s
>> > user    8m25.232s
>> > sys     1m32.512s
>> >
>> > mozilla.ii
>> > real    8m5.732s
>> > user    6m44.888s
>> > sys     1m20.764s
>> > real    8m5.404s
>> > user    6m44.468s
>> > sys     1m20.856s
>> > real    7m59.197s
>> > user    6m39.632s
>> > sys     1m19.472s
>> >
>> > after patch
>> >
>> > fold-const.ii
>> > real    3m18.488s
>> > user    2m41.972s
>> > sys     0m36.388s
>> > real    3m18.215s
>> > user    2m41.640s
>> > sys     0m36.432s
>> > real    3m18.368s
>> > user    2m42.492s
>> > sys     0m35.720s
>> >
>> > insn-emit.ii
>> > real    10m4.700s
>> > user    8m32.536s
>> > sys     1m32.120s
>> > real    10m4.241s
>> > user    8m31.456s
>> > sys     1m32.728s
>> > real    10m4.515s
>> > user    8m32.056s
>> > sys     1m32.396s
>> >
>> > mozilla.ii
>> > real    7m58.018s
>> > user    6m38.008s
>> > sys     1m19.924s
>> > real    7m59.269s
>> > user    6m37.736s
>> > sys     1m21.448s
>> > real    7m58.254s
>> > user    6m37.828s
>> > sys     1m20.324s
>> >
>> > So, roughly that looks to me like a range from improving by .5% to
>> > regressing by 1%.  I'm not sure what could cause an improvement, so I
>> > kind of wonder how valid these results are.
>>
>> Hmm, indeed.  The speedup looks suspicious.
>>
>> > Another question is how one can refactor the output machinary to be
>> > faster.  My first  thought is to buffer text internally before calling
>> > stdio functions, but that seems like a giant job.
>>
>> stdio functions are already buffering, so I don't know either.
>
>  yeah, but the over head of calling functions in libc is higher than
>  that for functions in gcc (especially if they can get inlined)
>  right?  Especially when a lot of these things seme to loop calling
>  putc...

obstacks are used elsewhere to do char buffering.  But not sure how
easy it is to pick low-hanging fruit here.

I suppose it would be nice to isolate the hot parts of the output machinery
only during a bootstrap for example.

>> But yes, going the libas route would improve things here, or for
>> example enhancing gas to be able to eat target binary data
>> without the need to encode it in printable characters...
>>
>> .raw_data number-of-bytes
>> <raw data>
>>
>> Makes it quite unparsable to editors of course ...
>
> The idea of having .S files that aren't reasonably editable seems kind
> of silly, but I guess its up to the gas people.

Heh, indeed.  Maybe instead do

.insert_from_file  <filename>

and do that only when we are using -pipe or so.

Richard.

> Trev
>
>>
>> Richard.
>>
>> > thanks!
>> >
>> > Trev
>> >
>> > far outside of noise,
>> >>
>> >> Richard.
>> >>
>> >> > ---
>> >> >  gcc/config/arc/arc.h              |  3 +--
>> >> >  gcc/config/bfin/bfin.h            |  5 +----
>> >> >  gcc/config/frv/frv.h              |  6 +-----
>> >> >  gcc/config/ia64/ia64-protos.h     |  1 +
>> >> >  gcc/config/ia64/ia64.c            | 11 +++++++++++
>> >> >  gcc/config/ia64/ia64.h            |  8 +-------
>> >> >  gcc/config/lm32/lm32.h            |  3 +--
>> >> >  gcc/config/mep/mep.h              |  8 +-------
>> >> >  gcc/config/mmix/mmix.h            |  3 +--
>> >> >  gcc/config/pa/pa-protos.h         |  1 +
>> >> >  gcc/config/pa/pa.c                | 12 ++++++++++++
>> >> >  gcc/config/pa/pa.h                |  9 +--------
>> >> >  gcc/config/rs6000/rs6000-protos.h |  1 +
>> >> >  gcc/config/rs6000/rs6000.c        |  8 ++++++++
>> >> >  gcc/config/rs6000/xcoff.h         |  3 +--
>> >> >  gcc/config/spu/spu.h              |  3 +--
>> >> >  gcc/config/visium/visium.h        |  3 +--
>> >> >  gcc/defaults.h                    |  6 +-----
>> >> >  gcc/output.h                      |  3 +++
>> >> >  gcc/varasm.c                      |  9 +++++++++
>> >> >  gcc/vmsdbgout.c                   |  1 +
>> >> >  gcc/xcoffout.c                    |  1 +
>> >> >  22 files changed, 60 insertions(+), 48 deletions(-)
>> >> >
>> >> > diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
>> >> > index d98cce1..d3747b9 100644
>> >> > --- a/gcc/config/arc/arc.h
>> >> > +++ b/gcc/config/arc/arc.h
>> >> > @@ -1245,8 +1245,7 @@ do {                                                                      \
>> >> >
>> >> >  /* This is how to output the definition of a user-level label named NAME,
>> >> >     such as the label on a static function or variable NAME.  */
>> >> > -#define ASM_OUTPUT_LABEL(FILE, NAME) \
>> >> > -do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  #define ASM_NAME_P(NAME) ( NAME[0]=='*')
>> >> >
>> >> > diff --git a/gcc/config/bfin/bfin.h b/gcc/config/bfin/bfin.h
>> >> > index 26ba7c2..08906aa 100644
>> >> > --- a/gcc/config/bfin/bfin.h
>> >> > +++ b/gcc/config/bfin/bfin.h
>> >> > @@ -1044,10 +1044,7 @@ typedef enum directives {
>> >> >      ASM_OUTPUT_LABEL(FILE, NAME);      \
>> >> >    } while (0)
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(FILE, NAME)    \
>> >> > -  do {  assemble_name (FILE, NAME);            \
>> >> > -        fputs (":\n",FILE);                    \
>> >> > -      } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  #define ASM_OUTPUT_LABELREF(FILE,NAME)         \
>> >> >      do {  fprintf (FILE, "_%s", NAME); \
>> >> > diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h
>> >> > index b0d66fd..1d25974 100644
>> >> > --- a/gcc/config/frv/frv.h
>> >> > +++ b/gcc/config/frv/frv.h
>> >> > @@ -1668,11 +1668,7 @@ do {                                                                     \
>> >> >     `assemble_name (STREAM, NAME)' to output the name itself; before and after
>> >> >     that, output the additional assembler syntax for defining the name, and a
>> >> >     newline.  */
>> >> > -#define ASM_OUTPUT_LABEL(STREAM, NAME)                                 \
>> >> > -do {                                                                   \
>> >> > -  assemble_name (STREAM, NAME);                                                \
>> >> > -  fputs (":\n", STREAM);                                               \
>> >> > -} while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  /* Globalizing directive for a label.  */
>> >> >  #define GLOBAL_ASM_OP "\t.globl "
>> >> > diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h
>> >> > index 29fc714..8e540e4 100644
>> >> > --- a/gcc/config/ia64/ia64-protos.h
>> >> > +++ b/gcc/config/ia64/ia64-protos.h
>> >> > @@ -72,6 +72,7 @@ extern rtx ia64_expand_builtin (tree, rtx, rtx, machine_mode, int);
>> >> >  extern rtx ia64_va_arg (tree, tree);
>> >> >  #endif /* RTX_CODE */
>> >> >
>> >> > +extern void ia64_output_label (FILE *f, const char *label);
>> >> >  extern void ia64_asm_output_external (FILE *, tree, const char *);
>> >> >  extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *,
>> >> >                                                  unsigned HOST_WIDE_INT,
>> >> > diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
>> >> > index 779fc58..e07ebb5 100644
>> >> > --- a/gcc/config/ia64/ia64.c
>> >> > +++ b/gcc/config/ia64/ia64.c
>> >> > @@ -10522,6 +10522,17 @@ ia64_hpux_function_arg_padding (machine_mode mode, const_tree type)
>> >> >     return DEFAULT_FUNCTION_ARG_PADDING (mode, type);
>> >> >  }
>> >> >
>> >> > +/* Assemble a label.  */
>> >> > +
>> >> > +void
>> >> > +ia64_output_label (FILE *f, const char *label)
>> >> > +{
>> >> > +  ia64_asm_output_label = 1;
>> >> > +  assemble_name (f, label);
>> >> > +  fputs (":\n", f);
>> >> > +  ia64_asm_output_label = 0;
>> >> > +}
>> >> > +
>> >> >  /* Emit text to declare externally defined variables and functions, because
>> >> >     the Intel assembler does not support undefined externals.  */
>> >> >
>> >> > diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h
>> >> > index 4b62423..1afa7b7 100644
>> >> > --- a/gcc/config/ia64/ia64.h
>> >> > +++ b/gcc/config/ia64/ia64.h
>> >> > @@ -1246,13 +1246,7 @@ do {                                                                     \
>> >> >     why ia64_asm_output_label exists.  */
>> >> >
>> >> >  extern int ia64_asm_output_label;
>> >> > -#define ASM_OUTPUT_LABEL(STREAM, NAME)                                 \
>> >> > -do {                                                                   \
>> >> > -  ia64_asm_output_label = 1;                                           \
>> >> > -  assemble_name (STREAM, NAME);                                                \
>> >> > -  fputs (":\n", STREAM);                                               \
>> >> > -  ia64_asm_output_label = 0;                                           \
>> >> > -} while (0)
>> >> > +#define ASM_OUTPUT_LABEL ia64_output_label
>> >> >
>> >> >  /* Globalizing directive for a label.  */
>> >> >  #define GLOBAL_ASM_OP "\t.global "
>> >> > diff --git a/gcc/config/lm32/lm32.h b/gcc/config/lm32/lm32.h
>> >> > index 986383f..9e8c667 100644
>> >> > --- a/gcc/config/lm32/lm32.h
>> >> > +++ b/gcc/config/lm32/lm32.h
>> >> > @@ -443,8 +443,7 @@ do                                                                  \
>> >> >  }                                                                      \
>> >> >  while (0)
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(FILE, NAME) \
>> >> > -  do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  #define ASM_OUTPUT_LABELREF(FILE,NAME) \
>> >> >    do {                                 \
>> >> > diff --git a/gcc/config/mep/mep.h b/gcc/config/mep/mep.h
>> >> > index f7322cb7..8a9d447 100644
>> >> > --- a/gcc/config/mep/mep.h
>> >> > +++ b/gcc/config/mep/mep.h
>> >> > @@ -625,13 +625,7 @@ typedef struct
>> >> >  #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(STREAM, DECL, NAME, SIZE, ALIGNMENT) \
>> >> >         mep_output_aligned_common (STREAM, DECL, NAME, SIZE, ALIGNMENT, 0)
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(STREAM, NAME)         \
>> >> > -  do                                           \
>> >> > -    {                                          \
>> >> > -      assemble_name (STREAM, NAME);            \
>> >> > -      fputs (":\n", STREAM);                   \
>> >> > -    }                                          \
>> >> > -  while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  /* Globalizing directive for a label.  */
>> >> >  #define GLOBAL_ASM_OP "\t.globl "
>> >> > diff --git a/gcc/config/mmix/mmix.h b/gcc/config/mmix/mmix.h
>> >> > index 29d39bc..aac5aa0 100644
>> >> > --- a/gcc/config/mmix/mmix.h
>> >> > +++ b/gcc/config/mmix/mmix.h
>> >> > @@ -647,8 +647,7 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
>> >> >
>> >> >  /* Node: Label Output */
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(STREAM, NAME) \
>> >> > - mmix_asm_output_label (STREAM, NAME)
>> >> > +#define ASM_OUTPUT_LABEL mmix_asm_output_label
>> >> >
>> >> >  #define ASM_OUTPUT_INTERNAL_LABEL(STREAM, NAME) \
>> >> >   mmix_asm_output_internal_label (STREAM, NAME)
>> >> > diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h
>> >> > index 0e13cd5..46a3e3b 100644
>> >> > --- a/gcc/config/pa/pa-protos.h
>> >> > +++ b/gcc/config/pa/pa-protos.h
>> >> > @@ -110,6 +110,7 @@ extern void pa_asm_output_aligned_common (FILE *, const char *,
>> >> >  extern void pa_asm_output_aligned_local (FILE *, const char *,
>> >> >                                          unsigned HOST_WIDE_INT,
>> >> >                                          unsigned int);
>> >> > +extern void pa_output_label (FILE *f, const char *label);
>> >> >  extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
>> >> >  extern bool pa_cannot_change_mode_class (machine_mode, machine_mode,
>> >> >                                          enum reg_class);
>> >> > diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
>> >> > index b24413a..2bcaa7e 100644
>> >> > --- a/gcc/config/pa/pa.c
>> >> > +++ b/gcc/config/pa/pa.c
>> >> > @@ -9761,6 +9761,18 @@ pa_reloc_rw_mask (void)
>> >> >    return 3;
>> >> >  }
>> >> >
>> >> > +/* Assemble a lable.  */
>> >> > +
>> >> > +void
>> >> > +pa_output_label (FILE *f, const char *label)
>> >> > +{
>> >> > +  assemble_name (f, label);
>> >> > +  if (TARGET_GAS)
>> >> > +    fputs (":\n", f);
>> >> > +  else
>> >> > +    fputc ('\n', (f));
>> >> > +}
>> >> > +
>> >> >  static void
>> >> >  pa_globalize_label (FILE *stream, const char *name)
>> >> >  {
>> >> > diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
>> >> > index bdfbb16..595a10b 100644
>> >> > --- a/gcc/config/pa/pa.h
>> >> > +++ b/gcc/config/pa/pa.h
>> >> > @@ -1107,14 +1107,7 @@ do {                                                                          \
>> >> >  /* This is how to output the definition of a user-level label named NAME,
>> >> >     such as the label on a static function or variable NAME.  */
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(FILE,NAME) \
>> >> > -  do {                                                 \
>> >> > -    assemble_name ((FILE), (NAME));                    \
>> >> > -    if (TARGET_GAS)                                    \
>> >> > -      fputs (":\n", (FILE));                           \
>> >> > -    else                                               \
>> >> > -      fputc ('\n', (FILE));                            \
>> >> > -  } while (0)
>> >> > +#define ASM_OUTPUT_LABEL pa_output_label
>> >> >
>> >> >  /* This is how to output a reference to a user-level label named NAME.
>> >> >     `assemble_name' uses this.  */
>> >> > diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
>> >> > index 560a825..031614f 100644
>> >> > --- a/gcc/config/rs6000/rs6000-protos.h
>> >> > +++ b/gcc/config/rs6000/rs6000-protos.h
>> >> > @@ -169,6 +169,7 @@ extern int function_ok_for_sibcall (tree);
>> >> >  extern int rs6000_reg_parm_stack_space (tree, bool);
>> >> >  extern void rs6000_xcoff_declare_function_name (FILE *, const char *, tree);
>> >> >  extern void rs6000_xcoff_declare_object_name (FILE *, const char *, tree);
>> >> > +extern void rs6000_xcoff_output_label (FILE *f, const char *label);
>> >> >  extern void rs6000_elf_declare_function_name (FILE *, const char *, tree);
>> >> >  extern bool rs6000_elf_in_small_data_p (const_tree);
>> >> >  #ifdef ARGS_SIZE_RTX
>> >> > diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
>> >> > index c8794b4..a214010 100644
>> >> > --- a/gcc/config/rs6000/rs6000.c
>> >> > +++ b/gcc/config/rs6000/rs6000.c
>> >> > @@ -30364,6 +30364,14 @@ rs6000_xcoff_asm_output_anchor (rtx symbol)
>> >> >    fprintf (asm_out_file, "\n");
>> >> >  }
>> >> >
>> >> > +/* Assemble the given label.  */
>> >> > +void
>> >> > +rs6000_xcoff_output_label (FILE *f, const char *label)
>> >> > +{
>> >> > +  RS6000_OUTPUT_BASENAME (f, label);
>> >> > +  fputs (":\n", f);
>> >> > +}
>> >> > +
>> >> >  static void
>> >> >  rs6000_xcoff_asm_globalize_label (FILE *stream, const char *name)
>> >> >  {
>> >> > diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h
>> >> > index 8b0cb27..263e239 100644
>> >> > --- a/gcc/config/rs6000/xcoff.h
>> >> > +++ b/gcc/config/rs6000/xcoff.h
>> >> > @@ -119,8 +119,7 @@
>> >> >  /* This is how to output the definition of a user-level label named NAME,
>> >> >     such as the label on a static function or variable NAME.  */
>> >> >
>> >> > -#define ASM_OUTPUT_LABEL(FILE,NAME)    \
>> >> > -  do { RS6000_OUTPUT_BASENAME (FILE, NAME); fputs (":\n", FILE); } while (0)
>> >> > +#define ASM_OUTPUT_LABEL rs6000_xcoff_output_label
>> >> >
>> >> >  /* This is how to output a command to make the user-level label named NAME
>> >> >     defined for reference from other files.  */
>> >> > diff --git a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h
>> >> > index 25fa435..f35b55e 100644
>> >> > --- a/gcc/config/spu/spu.h
>> >> > +++ b/gcc/config/spu/spu.h
>> >> > @@ -443,8 +443,7 @@ do {                                                                        \
>> >> >
>> >> >
>> >> >  /* Label Output */
>> >> > -#define ASM_OUTPUT_LABEL(FILE,NAME)    \
>> >> > -  do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  #define ASM_OUTPUT_LABELREF(FILE, NAME) \
>> >> >    asm_fprintf (FILE, "%U%s", default_strip_name_encoding (NAME))
>> >> > diff --git a/gcc/config/visium/visium.h b/gcc/config/visium/visium.h
>> >> > index a2ab61c..6457c55 100644
>> >> > --- a/gcc/config/visium/visium.h
>> >> > +++ b/gcc/config/visium/visium.h
>> >> > @@ -1440,8 +1440,7 @@ do                                                                        \
>> >> >     `assemble_name (STREAM, NAME)' to output the name itself; before
>> >> >     and after that, output the additional assembler syntax for defining
>> >> >     the name, and a newline. */
>> >> > -#define ASM_OUTPUT_LABEL(STREAM,NAME)     \
>> >> > -  do { assemble_name (STREAM, NAME); fputs (":\n", STREAM); } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >
>> >> >  /* Globalizing directive for a label */
>> >> >  #define GLOBAL_ASM_OP "\t.global "
>> >> > diff --git a/gcc/defaults.h b/gcc/defaults.h
>> >> > index 3ecf9fd..b1465de 100644
>> >> > --- a/gcc/defaults.h
>> >> > +++ b/gcc/defaults.h
>> >> > @@ -89,11 +89,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
>> >> >     NAME, such as the label on variable NAME.  */
>> >> >
>> >> >  #ifndef ASM_OUTPUT_LABEL
>> >> > -#define ASM_OUTPUT_LABEL(FILE,NAME) \
>> >> > -  do {                                         \
>> >> > -    assemble_name ((FILE), (NAME));            \
>> >> > -    fputs (":\n", (FILE));                     \
>> >> > -  } while (0)
>> >> > +#define ASM_OUTPUT_LABEL default_output_label
>> >> >  #endif
>> >> >
>> >> >  /* This is how to output the definition of a user-level label named
>> >> > diff --git a/gcc/output.h b/gcc/output.h
>> >> > index 8aa648a..07172d5 100644
>> >> > --- a/gcc/output.h
>> >> > +++ b/gcc/output.h
>> >> > @@ -246,6 +246,9 @@ extern void assemble_name_raw (FILE *, const char *);
>> >> >     be marked as referenced.  */
>> >> >  extern void assemble_name (FILE *, const char *);
>> >> >
>> >> > +/* Assemble a label.  */
>> >> > +extern void default_output_label (FILE *f, const char *label);
>> >> > +
>> >> >  /* Return the assembler directive for creating a given kind of integer
>> >> >     object.  SIZE is the number of bytes in the object and ALIGNED_P
>> >> >     indicates whether it is known to be aligned.  Return NULL if the
>> >> > diff --git a/gcc/varasm.c b/gcc/varasm.c
>> >> > index c2bfbf0..9c5f12d 100644
>> >> > --- a/gcc/varasm.c
>> >> > +++ b/gcc/varasm.c
>> >> > @@ -2580,6 +2580,15 @@ assemble_name (FILE *file, const char *name)
>> >> >    assemble_name_raw (file, name);
>> >> >  }
>> >> >
>> >> > +/* Assemble a label.  */
>> >> > +
>> >> > +void
>> >> > +default_output_label (FILE *f, const char *label)
>> >> > +{
>> >> > +  assemble_name (f, label);
>> >> > +  fputs (":\n", f);
>> >> > +}
>> >> > +
>> >> >  /* Allocate SIZE bytes writable static space with a gensym name
>> >> >     and return an RTX to refer to its address.  */
>> >> >
>> >> > diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
>> >> > index 0204740..d04b8fb 100644
>> >> > --- a/gcc/vmsdbgout.c
>> >> > +++ b/gcc/vmsdbgout.c
>> >> > @@ -37,6 +37,7 @@ along with GCC; see the file COPYING3.  If not see
>> >> >  #include "langhooks.h"
>> >> >  #include "function.h"
>> >> >  #include "target.h"
>> >> > +#include "tm_p.h"
>> >> >
>> >> >  /* Difference in seconds between the VMS Epoch and the Unix Epoch */
>> >> >  static const long long vms_epoch_offset = 3506716800ll;
>> >> > diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
>> >> > index 0f11115..83959c8 100644
>> >> > --- a/gcc/xcoffout.c
>> >> > +++ b/gcc/xcoffout.c
>> >> > @@ -35,6 +35,7 @@ along with GCC; see the file COPYING3.  If not see
>> >> >  #include "output.h"
>> >> >  #include "target.h"
>> >> >  #include "debug.h"
>> >> > +#include "tm_p.h"
>> >> >
>> >> >  #ifdef XCOFF_DEBUGGING_INFO
>> >> >
>> >> > --
>> >> > 2.4.0
>> >> >


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