diff --git a/dev-embedded/gcc6809/gcc6809-4.6.4.recipe b/dev-embedded/gcc6809/gcc6809-4.6.4.recipe index 3f15e7e45..aa0c16ce4 100644 --- a/dev-embedded/gcc6809/gcc6809-4.6.4.recipe +++ b/dev-embedded/gcc6809/gcc6809-4.6.4.recipe @@ -4,13 +4,13 @@ uses the lwtools as a backend. Note that there is no C library provided." HOMEPAGE="http://lwtools.projects.l-w.ca" SOURCE_URI="ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-$portVersion/gcc-$portVersion.tar.bz2" CHECKSUM_SHA256="35af16afa0b67af9b8eb15cafb76d2bc5f568540552522f5dc2c88dd45d977e8" -REVISION="3" +REVISION="4" COPYRIGHT="1988-2013 Free Software Foundation, Inc." LICENSE=" GNU GPL v2 GNU LGPL v2 " -PATCHES="gcc6809lw-$portVersion-9.patchset" +PATCHES="gcc6809-$portVersion.patchset" ARCHITECTURES="!x86_gcc2" SECONDARY_ARCHITECTURES="x86" @@ -44,6 +44,7 @@ BUILD_PREREQUIRES=" cmd:find cmd:flex cmd:gcc$secondaryArchSuffix + cmd:gperf cmd:ld$secondaryArchSuffix cmd:make cmd:makeinfo diff --git a/dev-embedded/gcc6809/patches/gcc6809lw-4.6.4-9.patchset b/dev-embedded/gcc6809/patches/gcc6809-4.6.4.patchset similarity index 97% rename from dev-embedded/gcc6809/patches/gcc6809lw-4.6.4-9.patchset rename to dev-embedded/gcc6809/patches/gcc6809-4.6.4.patchset index 6d2a9e53e..fd4a60d46 100644 --- a/dev-embedded/gcc6809/patches/gcc6809lw-4.6.4-9.patchset +++ b/dev-embedded/gcc6809/patches/gcc6809-4.6.4.patchset @@ -1,7 +1,34 @@ -diff -urN gcc-4.6.4-clean/config.sub gcc-4.6.4/config.sub ---- gcc-4.6.4-clean/config.sub 2010-05-25 07:22:07.000000000 -0600 -+++ gcc-4.6.4/config.sub 2017-11-28 21:12:11.136911706 -0700 -@@ -313,7 +313,7 @@ +From cd2a97f9a8501086afdc3167fb4c8a810c7a71ae Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Tue, 19 Mar 2019 08:08:06 +0100 +Subject: applying patch gcc6809lw-4.6.4-9.patch + + +diff --git a/README.LW b/README.LW +new file mode 100644 +index 0000000..6ddd8ef +--- /dev/null ++++ b/README.LW +@@ -0,0 +1,14 @@ ++This is a port of gcc6809 which is designed to work with the lwtools ++cross-assembler and linker package. You will need several scripts from that ++package, available at http://lost.l-w.ca/coco/lwtools/, in order to use ++this. Instructions for building are present in the lwtools package. ++ ++This work is based extensively on the gcc6809 4.3.4-3 release by Brian ++Dominy (brian@oddchange.com) with some significant renovations to make it ++work with gcc 4.6.4. ++ ++There is no guarantee that it will work for any particular purpose you ++choose to put it to. ++ ++If you run into any problems, contact William Astle (lost@l-w.ca). DO NOT ++contact the main GCC developers! +diff --git a/config.sub b/config.sub +index 204218c..75da021 100755 +--- a/config.sub ++++ b/config.sub +@@ -313,7 +313,7 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; @@ -10,7 +37,7 @@ diff -urN gcc-4.6.4-clean/config.sub gcc-4.6.4/config.sub # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none -@@ -354,7 +354,7 @@ +@@ -354,7 +354,7 @@ case $basic_machine in | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ @@ -19,7 +46,7 @@ diff -urN gcc-4.6.4-clean/config.sub gcc-4.6.4/config.sub | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -@@ -509,6 +509,10 @@ +@@ -509,6 +509,10 @@ case $basic_machine in basic_machine=arm-unknown os=-cegcc ;; @@ -30,10 +57,11 @@ diff -urN gcc-4.6.4-clean/config.sub gcc-4.6.4/config.sub convex-c1) basic_machine=c1-convex os=-bsd -diff -urN gcc-4.6.4-clean/configure gcc-4.6.4/configure ---- gcc-4.6.4-clean/configure 2011-12-18 03:03:44.000000000 -0700 -+++ gcc-4.6.4/configure 2017-11-28 21:12:11.136911706 -0700 -@@ -3439,6 +3439,9 @@ +diff --git a/configure b/configure +index 6be5e9d..33ed6f6 100755 +--- a/configure ++++ b/configure +@@ -3439,6 +3439,9 @@ case "${target}" in m32r-*-*) noconfigdirs="$noconfigdirs ${libgcj}" ;; @@ -43,10 +71,11 @@ diff -urN gcc-4.6.4-clean/configure gcc-4.6.4/configure m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" libgloss_dir=m68hc11 -diff -urN gcc-4.6.4-clean/configure.ac gcc-4.6.4/configure.ac ---- gcc-4.6.4-clean/configure.ac 2011-11-18 04:45:44.000000000 -0700 -+++ gcc-4.6.4/configure.ac 2017-11-28 21:12:11.140911685 -0700 -@@ -885,6 +885,9 @@ +diff --git a/configure.ac b/configure.ac +index ba6d84d..ae8e733 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -885,6 +885,9 @@ case "${target}" in m32r-*-*) noconfigdirs="$noconfigdirs ${libgcj}" ;; @@ -56,10 +85,34 @@ diff -urN gcc-4.6.4-clean/configure.ac gcc-4.6.4/configure.ac m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" libgloss_dir=m68hc11 -diff -urN gcc-4.6.4-clean/gcc/calls.c gcc-4.6.4/gcc/calls.c ---- gcc-4.6.4-clean/gcc/calls.c 2012-02-09 10:27:25.000000000 -0700 -+++ gcc-4.6.4/gcc/calls.c 2017-11-28 21:12:11.140911685 -0700 -@@ -2561,7 +2561,7 @@ +diff --git a/gcc/Makefile.in b/gcc/Makefile.in +index e0b952f..c2f5318 100644 +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -2003,14 +2003,14 @@ $(T)crtbeginT.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + + # Compile the start modules crt0.o and mcrt0.o that are linked with + # every program +-$(T)crt0.o: s-crt0 ; @true +-$(T)mcrt0.o: s-crt0; @true ++crt0.o: s-crt0 ; @true ++mcrt0.o: s-crt0; @true + + s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H) + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ +- -o $(T)crt0.o -c $(CRT0_S) ++ -o crt0.o -c $(CRT0_S) + $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ +- -o $(T)mcrt0.o -c $(MCRT0_S) ++ -o mcrt0.o -c $(MCRT0_S) + $(STAMP) s-crt0 + # + # Compiling object files from source files. +diff --git a/gcc/calls.c b/gcc/calls.c +index 4ad6c3f..f3af562 100644 +--- a/gcc/calls.c ++++ b/gcc/calls.c +@@ -2561,7 +2561,7 @@ expand_call (tree exp, rtx target, int ignore) call sequence. Also do the adjustments before a throwing call, otherwise exception handling can fail; PR 19225. */ @@ -68,9 +121,41 @@ diff -urN gcc-4.6.4-clean/gcc/calls.c gcc-4.6.4/gcc/calls.c || (pending_stack_adjust > 0 && (flags & ECF_MAY_BE_ALLOCA)) || (pending_stack_adjust > 0 -diff -urN gcc-4.6.4-clean/gcc/config/m6809/crt0.S gcc-4.6.4/gcc/config/m6809/crt0.S ---- gcc-4.6.4-clean/gcc/config/m6809/crt0.S 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/crt0.S 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config.gcc b/gcc/config.gcc +index 6dc2427..ea5d286 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -375,6 +375,9 @@ m32r*-*-*) + cpu_type=m32r + extra_options="${extra_options} g.opt" + ;; ++m6809-*-*) ++ cpu_type=m6809 ++ ;; + m68k-*-*) + extra_headers=math-68881.h + ;; +@@ -1706,6 +1709,15 @@ m32rle-*-linux*) + thread_file='posix' + fi + ;; ++m6809-coco-*) ++ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-coco" ++ ;; ++m6809-proto-*) ++ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-proto" ++ ;; ++m6809-*-*) ++ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-sim" ++ ;; + # m68hc11 and m68hc12 share the same machine description. + m68hc11-*-*|m6811-*-*) + tm_file="dbxelf.h elfos.h usegas.h newlib-stdint.h m68hc11/m68hc11.h" +diff --git a/gcc/config/m6809/crt0.S b/gcc/config/m6809/crt0.S +new file mode 100644 +index 0000000..4985f92 +--- /dev/null ++++ b/gcc/config/m6809/crt0.S @@ -0,0 +1,182 @@ +;;; +;;; Copyright 2006, 2007, 2008, 2009 by Brian Dominy @@ -254,9 +339,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/crt0.S gcc-4.6.4/gcc/config/m6809/crt + .word ___crt0_vector + .word ___crt0_vector + .word __start -diff -urN gcc-4.6.4-clean/gcc/config/m6809/libgcc1.s gcc-4.6.4/gcc/config/m6809/libgcc1.s ---- gcc-4.6.4-clean/gcc/config/m6809/libgcc1.s 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/libgcc1.s 2017-11-28 21:12:11.152911619 -0700 +diff --git a/gcc/config/m6809/libgcc1.s b/gcc/config/m6809/libgcc1.s +new file mode 100644 +index 0000000..4a1e1c7 +--- /dev/null ++++ b/gcc/config/m6809/libgcc1.s @@ -0,0 +1,511 @@ +/* libgcc routines for m6809 + Copyright (C) 2006 Free Software Foundation, Inc. @@ -769,9 +856,111 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/libgcc1.s gcc-4.6.4/gcc/config/m6809/ + + + -diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.c gcc-4.6.4/gcc/config/m6809/m6809.c ---- gcc-4.6.4-clean/gcc/config/m6809/m6809.c 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/m6809.c 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config/m6809/m6809-protos.h b/gcc/config/m6809/m6809-protos.h +new file mode 100644 +index 0000000..ba00de5 +--- /dev/null ++++ b/gcc/config/m6809/m6809-protos.h +@@ -0,0 +1,94 @@ ++/* GCC for 6809 : machine-specific function prototypes ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#ifndef __M6809_PROTOS_H__ ++#define __M6809_PROTOS_H__ ++ ++void print_options (FILE *file); ++void m6809_cpu_cpp_builtins (void); ++void m6809_override_options (void); ++void m6809_init_builtins (void); ++unsigned int m6809_get_live_regs (void); ++const char * m6809_get_regs_printable (unsigned int regs); ++unsigned int m6809_get_regs_size (unsigned int regs); ++int m6809_function_has_type_attr_p (tree decl, const char *); ++int m6809_current_function_has_type_attr_p (const char *); ++int prologue_epilogue_required (void); ++int noreturn_functionp (rtx x); ++void output_function_prologue (FILE *file, int size); ++void output_function_epilogue (FILE *file, int size); ++int check_float_value (enum machine_mode mode, double *d, int overflow); ++void m6809_asm_named_section (const char *name, unsigned int flags, tree decl); ++void m6809_asm_file_start (void); ++void m6809_output_ascii (FILE *fp, const char *str, unsigned long size); ++void m6809_declare_function_name (FILE *asm_out_file, const char *name, tree decl); ++void m6809_reorg (void); ++int m6809_current_function_is_void (void); ++int m6809_can_merge_pushpop_p (int op, int regs1, int regs2); ++int m6809_function_value_regno_p (unsigned int regno); ++void emit_prologue_insns (void); ++void emit_epilogue_insns (bool); ++void m6809_conditional_register_usage (void); ++void m6809_output_quoted_string (FILE *asm_file, const char *string); ++int m6809_match_peephole2 (unsigned int peephole_id, unsigned int stage); ++int m6809_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode); ++int power_of_two_p (unsigned int n); ++void m6809_do_casesi (rtx index, rtx lower_bound, rtx range, rtx table_label, rtx default_label); ++void m6809_output_addsi3 (int rtx_code, rtx *operands); ++rtx m6809_function_arg_on_stack (CUMULATIVE_ARGS *cump); ++void expand_constant_shift (int code, rtx dst, rtx src, rtx count); ++int m6809_single_operand_operator (rtx exp); ++ ++#ifdef TREE_CODE ++int m6809_init_cumulative_args (CUMULATIVE_ARGS cum, tree fntype, rtx libname); ++#endif /* TREE_CODE */ ++ ++#ifdef RTX_CODE ++void print_direct_prefix (FILE *file, rtx addr); ++void print_operand (FILE *file, rtx x, int code); ++void print_operand_address (FILE *file, rtx addr); ++void notice_update_cc (rtx exp, rtx insn); ++enum reg_class m6809_preferred_reload_class (rtx x, enum reg_class regclass); ++rtx gen_rtx_const_high (rtx r); ++rtx gen_rtx_const_low (rtx r); ++rtx gen_rtx_register_pushpop (int pop_flag, int regs); ++void emit_libcall_insns (enum machine_mode mode, const char *name, rtx *operands, int count); ++const char * output_branch_insn (enum rtx_code code, rtx *operands, int length); ++void output_far_call_insn (rtx *operands, int has_return); ++void m6809_initialize_trampoline (rtx tramp, tree fndecl, rtx cxt); ++rtx m6809_expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); ++const char * far_functionp (rtx x); ++rtx m6809_function_value (const tree valtype, const tree func); ++void m6809_output_shift_insn (int rtx_code, rtx *operands); ++ ++const char * m6809_get_decl_bank (tree decl); ++void output_branch_insn1 (const char *opcode, rtx *operands, int long_p); ++rtx m6809_builtin_operand (tree arglist, enum machine_mode mode, int opnum); ++const char * far_function_type_p (tree type); ++void m6809_asm_trampoline_template(FILE *f); ++bool m6809_frame_pointer_required (void); ++int m6809_can_eliminate (int from, int to); ++int m6809_initial_elimination_offset (int from, int to); ++void m6809_emit_move_insn (rtx dst, rtx src); ++void m6809_split_shift (enum rtx_code code, rtx *operands); ++bool m6809_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED); ++ ++ ++#endif /* RTX_CODE */ ++ ++#endif /* __M6809_PROTOS_H__ */ +diff --git a/gcc/config/m6809/m6809.c b/gcc/config/m6809/m6809.c +new file mode 100644 +index 0000000..3a66ae0 +--- /dev/null ++++ b/gcc/config/m6809/m6809.c @@ -0,0 +1,3027 @@ +/*------------------------------------------------------------------- + FILE: m6809.c @@ -3800,9 +3989,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.c gcc-4.6.4/gcc/config/m6809/m6 + +/* Defines the target-specific hooks structure. */ +struct gcc_target targetm = TARGET_INITIALIZER; -diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.h gcc-4.6.4/gcc/config/m6809/m6809.h ---- gcc-4.6.4-clean/gcc/config/m6809/m6809.h 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/m6809.h 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config/m6809/m6809.h b/gcc/config/m6809/m6809.h +new file mode 100644 +index 0000000..11eff6d +--- /dev/null ++++ b/gcc/config/m6809/m6809.h @@ -0,0 +1,1336 @@ +/* Definitions of target machine for GNU compiler. MC6809 version. + @@ -5140,9 +5331,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.h gcc-4.6.4/gcc/config/m6809/m6 + M6809_BLOCKAGE +}; + -diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.md gcc-4.6.4/gcc/config/m6809/m6809.md ---- gcc-4.6.4-clean/gcc/config/m6809/m6809.md 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/m6809.md 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config/m6809/m6809.md b/gcc/config/m6809/m6809.md +new file mode 100644 +index 0000000..b86bdd1 +--- /dev/null ++++ b/gcc/config/m6809/m6809.md @@ -0,0 +1,2358 @@ +;; GCC machine description for Motorola 6809 +;; Copyright (C) 1989, 2005, 2006, 2007, 2008, @@ -7502,9 +7695,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.md gcc-4.6.4/gcc/config/m6809/m +;-; vim: set expandtab: +;-; vim: set filetype=lisp: +;;- End: -diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.opt gcc-4.6.4/gcc/config/m6809/m6809.opt ---- gcc-4.6.4-clean/gcc/config/m6809/m6809.opt 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/m6809.opt 2017-11-28 21:12:11.156911596 -0700 +diff --git a/gcc/config/m6809/m6809.opt b/gcc/config/m6809/m6809.opt +new file mode 100644 +index 0000000..6270917 +--- /dev/null ++++ b/gcc/config/m6809/m6809.opt @@ -0,0 +1,98 @@ +; Options for the M6809 port of the compiler +; @@ -7604,107 +7799,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.opt gcc-4.6.4/gcc/config/m6809/ +Enable stack parameters to a farcall + + -diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809-protos.h gcc-4.6.4/gcc/config/m6809/m6809-protos.h ---- gcc-4.6.4-clean/gcc/config/m6809/m6809-protos.h 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/m6809-protos.h 2017-11-28 21:12:11.156911596 -0700 -@@ -0,0 +1,94 @@ -+/* GCC for 6809 : machine-specific function prototypes -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 3, or (at your option) -+any later version. -+ -+GCC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING3. If not see -+. */ -+ -+#ifndef __M6809_PROTOS_H__ -+#define __M6809_PROTOS_H__ -+ -+void print_options (FILE *file); -+void m6809_cpu_cpp_builtins (void); -+void m6809_override_options (void); -+void m6809_init_builtins (void); -+unsigned int m6809_get_live_regs (void); -+const char * m6809_get_regs_printable (unsigned int regs); -+unsigned int m6809_get_regs_size (unsigned int regs); -+int m6809_function_has_type_attr_p (tree decl, const char *); -+int m6809_current_function_has_type_attr_p (const char *); -+int prologue_epilogue_required (void); -+int noreturn_functionp (rtx x); -+void output_function_prologue (FILE *file, int size); -+void output_function_epilogue (FILE *file, int size); -+int check_float_value (enum machine_mode mode, double *d, int overflow); -+void m6809_asm_named_section (const char *name, unsigned int flags, tree decl); -+void m6809_asm_file_start (void); -+void m6809_output_ascii (FILE *fp, const char *str, unsigned long size); -+void m6809_declare_function_name (FILE *asm_out_file, const char *name, tree decl); -+void m6809_reorg (void); -+int m6809_current_function_is_void (void); -+int m6809_can_merge_pushpop_p (int op, int regs1, int regs2); -+int m6809_function_value_regno_p (unsigned int regno); -+void emit_prologue_insns (void); -+void emit_epilogue_insns (bool); -+void m6809_conditional_register_usage (void); -+void m6809_output_quoted_string (FILE *asm_file, const char *string); -+int m6809_match_peephole2 (unsigned int peephole_id, unsigned int stage); -+int m6809_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode); -+int power_of_two_p (unsigned int n); -+void m6809_do_casesi (rtx index, rtx lower_bound, rtx range, rtx table_label, rtx default_label); -+void m6809_output_addsi3 (int rtx_code, rtx *operands); -+rtx m6809_function_arg_on_stack (CUMULATIVE_ARGS *cump); -+void expand_constant_shift (int code, rtx dst, rtx src, rtx count); -+int m6809_single_operand_operator (rtx exp); -+ -+#ifdef TREE_CODE -+int m6809_init_cumulative_args (CUMULATIVE_ARGS cum, tree fntype, rtx libname); -+#endif /* TREE_CODE */ -+ -+#ifdef RTX_CODE -+void print_direct_prefix (FILE *file, rtx addr); -+void print_operand (FILE *file, rtx x, int code); -+void print_operand_address (FILE *file, rtx addr); -+void notice_update_cc (rtx exp, rtx insn); -+enum reg_class m6809_preferred_reload_class (rtx x, enum reg_class regclass); -+rtx gen_rtx_const_high (rtx r); -+rtx gen_rtx_const_low (rtx r); -+rtx gen_rtx_register_pushpop (int pop_flag, int regs); -+void emit_libcall_insns (enum machine_mode mode, const char *name, rtx *operands, int count); -+const char * output_branch_insn (enum rtx_code code, rtx *operands, int length); -+void output_far_call_insn (rtx *operands, int has_return); -+void m6809_initialize_trampoline (rtx tramp, tree fndecl, rtx cxt); -+rtx m6809_expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); -+const char * far_functionp (rtx x); -+rtx m6809_function_value (const tree valtype, const tree func); -+void m6809_output_shift_insn (int rtx_code, rtx *operands); -+ -+const char * m6809_get_decl_bank (tree decl); -+void output_branch_insn1 (const char *opcode, rtx *operands, int long_p); -+rtx m6809_builtin_operand (tree arglist, enum machine_mode mode, int opnum); -+const char * far_function_type_p (tree type); -+void m6809_asm_trampoline_template(FILE *f); -+bool m6809_frame_pointer_required (void); -+int m6809_can_eliminate (int from, int to); -+int m6809_initial_elimination_offset (int from, int to); -+void m6809_emit_move_insn (rtx dst, rtx src); -+void m6809_split_shift (enum rtx_code code, rtx *operands); -+bool m6809_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED); -+ -+ -+#endif /* RTX_CODE */ -+ -+#endif /* __M6809_PROTOS_H__ */ -diff -urN gcc-4.6.4-clean/gcc/config/m6809/predicates.md gcc-4.6.4/gcc/config/m6809/predicates.md ---- gcc-4.6.4-clean/gcc/config/m6809/predicates.md 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/predicates.md 2017-11-28 21:12:11.156911596 -0700 +diff --git a/gcc/config/m6809/predicates.md b/gcc/config/m6809/predicates.md +new file mode 100644 +index 0000000..0e257ec +--- /dev/null ++++ b/gcc/config/m6809/predicates.md @@ -0,0 +1,78 @@ +;; Predicate definitions for Motorola 6809 +;; Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. @@ -7784,9 +7883,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/predicates.md gcc-4.6.4/gcc/config/m6 + +(define_predicate "symbolic_operand" (match_code "symbol_ref")) + -diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-coco gcc-4.6.4/gcc/config/m6809/t-coco ---- gcc-4.6.4-clean/gcc/config/m6809/t-coco 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/t-coco 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config/m6809/t-coco b/gcc/config/m6809/t-coco +new file mode 100644 +index 0000000..db1d76f +--- /dev/null ++++ b/gcc/config/m6809/t-coco @@ -0,0 +1,6 @@ +# For a few minor differences in code generation on the CoCo... +T_CFLAGS = -DTARGET_COCO @@ -7794,9 +7895,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-coco gcc-4.6.4/gcc/config/m6809/t-c +# For doing the startup differently on the CoCo... +CRT0STUFF_T_CFLAGS += -DTARGET_COCO +# vim: set filetype=make: -diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-m6809 gcc-4.6.4/gcc/config/m6809/t-m6809 ---- gcc-4.6.4-clean/gcc/config/m6809/t-m6809 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/t-m6809 2017-11-28 21:12:11.156911596 -0700 +diff --git a/gcc/config/m6809/t-m6809 b/gcc/config/m6809/t-m6809 +new file mode 100644 +index 0000000..2b38a8f +--- /dev/null ++++ b/gcc/config/m6809/t-m6809 @@ -0,0 +1,64 @@ + +# ranlib doesn't exist, so define it to 'true' to make it a no-op @@ -7862,9 +7965,11 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-m6809 gcc-4.6.4/gcc/config/m6809/t- + +$(T)mcrt0.o: $(MCRT0_S) $(GCC_PASSES) + $(GCC_FOR_TARGET) $(CRT0STUFF_T_CFLAGS) $(MULTILIB_CFLAGS) -c -o $(T)mcrt0.o -x assembler-with-cpp $(MCRT0_S) -diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-proto gcc-4.6.4/gcc/config/m6809/t-proto ---- gcc-4.6.4-clean/gcc/config/m6809/t-proto 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/t-proto 2017-11-29 17:11:09.221248469 -0700 +diff --git a/gcc/config/m6809/t-proto b/gcc/config/m6809/t-proto +new file mode 100644 +index 0000000..f3f0fe3 +--- /dev/null ++++ b/gcc/config/m6809/t-proto @@ -0,0 +1,6 @@ +# For a few minor differences in code generation on a custom prototype. +T_CFLAGS = -DTARGET_PROTO @@ -7872,44 +7977,18 @@ diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-proto gcc-4.6.4/gcc/config/m6809/t- +# For doing the startup differently on a custom prototype. +CRT0STUFF_T_CFLAGS += -DTARGET_PROTO +# vim: set filetype=make: -diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-sim gcc-4.6.4/gcc/config/m6809/t-sim ---- gcc-4.6.4-clean/gcc/config/m6809/t-sim 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/gcc/config/m6809/t-sim 2017-11-28 21:12:11.156911596 -0700 +diff --git a/gcc/config/m6809/t-sim b/gcc/config/m6809/t-sim +new file mode 100644 +index 0000000..cd3b094 +--- /dev/null ++++ b/gcc/config/m6809/t-sim @@ -0,0 +1 @@ +CRT0STUFF_T_CFLAGS += -DTARGET_SIM -diff -urN gcc-4.6.4-clean/gcc/config.gcc gcc-4.6.4/gcc/config.gcc ---- gcc-4.6.4-clean/gcc/config.gcc 2013-03-06 10:40:07.000000000 -0700 -+++ gcc-4.6.4/gcc/config.gcc 2017-11-29 17:11:09.229248437 -0700 -@@ -375,6 +375,9 @@ - cpu_type=m32r - extra_options="${extra_options} g.opt" - ;; -+m6809-*-*) -+ cpu_type=m6809 -+ ;; - m68k-*-*) - extra_headers=math-68881.h - ;; -@@ -1706,6 +1709,15 @@ - thread_file='posix' - fi - ;; -+m6809-coco-*) -+ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-coco" -+ ;; -+m6809-proto-*) -+ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-proto" -+ ;; -+m6809-*-*) -+ tmake_file="${tmake_file} m6809/t-m6809 m6809/t-sim" -+ ;; - # m68hc11 and m68hc12 share the same machine description. - m68hc11-*-*|m6811-*-*) - tm_file="dbxelf.h elfos.h usegas.h newlib-stdint.h m68hc11/m68hc11.h" -diff -urN gcc-4.6.4-clean/gcc/gcse.c gcc-4.6.4/gcc/gcse.c ---- gcc-4.6.4-clean/gcc/gcse.c 2011-02-02 23:04:04.000000000 -0700 -+++ gcc-4.6.4/gcc/gcse.c 2017-11-28 21:12:11.156911596 -0700 -@@ -833,7 +833,6 @@ +diff --git a/gcc/gcse.c b/gcc/gcse.c +index 27f7e8f..1079c6f 100644 +--- a/gcc/gcse.c ++++ b/gcc/gcse.c +@@ -833,7 +833,6 @@ want_to_gcse_p (rtx x, int *max_distance_ptr) max_distance = (GCSE_COST_DISTANCE_RATIO * cost) / 10; if (max_distance == 0) return 0; @@ -7917,10 +7996,11 @@ diff -urN gcc-4.6.4-clean/gcc/gcse.c gcc-4.6.4/gcc/gcse.c gcc_assert (max_distance > 0); } else -diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c ---- gcc-4.6.4-clean/gcc/libgcc2.c 2011-01-03 13:52:22.000000000 -0700 -+++ gcc-4.6.4/gcc/libgcc2.c 2017-11-28 21:12:11.156911596 -0700 -@@ -485,6 +485,7 @@ +diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c +index 78d53f0..b5b8c84 100644 +--- a/gcc/libgcc2.c ++++ b/gcc/libgcc2.c +@@ -485,6 +485,7 @@ __ashrdi3 (DWtype u, shift_count_type b) #endif #ifdef L_bswapsi2 @@ -7928,7 +8008,7 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c SItype __bswapsi2 (SItype u) { -@@ -494,7 +495,9 @@ +@@ -494,7 +495,9 @@ __bswapsi2 (SItype u) | (((u) & 0x000000ff) << 24)); } #endif @@ -7938,7 +8018,7 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c DItype __bswapdi2 (DItype u) { -@@ -508,6 +511,7 @@ +@@ -508,6 +511,7 @@ __bswapdi2 (DItype u) | (((u) & 0x00000000000000ffull) << 56)); } #endif @@ -7946,7 +8026,7 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c #ifdef L_ffssi2 #undef int int -@@ -1280,7 +1284,7 @@ +@@ -1280,7 +1284,7 @@ __fixdfdi (DFtype a) UDWtype __fixunssfDI (SFtype a) { @@ -7955,7 +8035,7 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c /* Convert the SFtype to a DFtype, because that is surely not going to lose any bits. Some day someone else can write a faster version that avoids converting to DFtype, and verify it really works right. */ -@@ -1298,7 +1302,7 @@ +@@ -1298,7 +1302,7 @@ __fixunssfDI (SFtype a) /* Assemble result from the two parts. */ return ((UDWtype) hi << W_TYPE_SIZE) | lo; @@ -7964,7 +8044,7 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c if (a < 1) return 0; if (a < Wtype_MAXp1_F) -@@ -1334,8 +1338,6 @@ +@@ -1334,8 +1338,6 @@ __fixunssfDI (SFtype a) return (DWtype)counter << shift; } return -1; @@ -7973,10 +8053,11 @@ diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c #endif } #endif -diff -urN gcc-4.6.4-clean/gcc/longlong.h gcc-4.6.4/gcc/longlong.h ---- gcc-4.6.4-clean/gcc/longlong.h 2011-10-04 01:28:50.000000000 -0600 -+++ gcc-4.6.4/gcc/longlong.h 2017-11-28 21:12:11.160911575 -0700 -@@ -528,6 +528,11 @@ +diff --git a/gcc/longlong.h b/gcc/longlong.h +index acb3185..20dd0ef 100644 +--- a/gcc/longlong.h ++++ b/gcc/longlong.h +@@ -528,6 +528,11 @@ UDItype __umulsidi3 (USItype, USItype); : "cbit") #endif /* __M32R__ */ @@ -7988,32 +8069,11 @@ diff -urN gcc-4.6.4-clean/gcc/longlong.h gcc-4.6.4/gcc/longlong.h #if defined (__mc68000__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \ -diff -urN gcc-4.6.4-clean/gcc/Makefile.in gcc-4.6.4/gcc/Makefile.in ---- gcc-4.6.4-clean/gcc/Makefile.in 2013-04-01 02:32:34.000000000 -0600 -+++ gcc-4.6.4/gcc/Makefile.in 2017-11-28 21:12:11.160911575 -0700 -@@ -2003,14 +2003,14 @@ - - # Compile the start modules crt0.o and mcrt0.o that are linked with - # every program --$(T)crt0.o: s-crt0 ; @true --$(T)mcrt0.o: s-crt0; @true -+crt0.o: s-crt0 ; @true -+mcrt0.o: s-crt0; @true - - s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H) - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ -- -o $(T)crt0.o -c $(CRT0_S) -+ -o crt0.o -c $(CRT0_S) - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ -- -o $(T)mcrt0.o -c $(MCRT0_S) -+ -o mcrt0.o -c $(MCRT0_S) - $(STAMP) s-crt0 - # - # Compiling object files from source files. -diff -urN gcc-4.6.4-clean/gcc/opth-gen.awk gcc-4.6.4/gcc/opth-gen.awk ---- gcc-4.6.4-clean/gcc/opth-gen.awk 2011-02-08 10:41:00.000000000 -0700 -+++ gcc-4.6.4/gcc/opth-gen.awk 2017-11-28 21:12:11.160911575 -0700 -@@ -121,7 +121,7 @@ +diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk +index c3f6c04..63936c0 100644 +--- a/gcc/opth-gen.awk ++++ b/gcc/opth-gen.awk +@@ -121,7 +121,7 @@ BEGIN { END { print "/* This file is auto-generated by opth-gen.awk. */" print "" @@ -8022,7 +8082,7 @@ diff -urN gcc-4.6.4-clean/gcc/opth-gen.awk gcc-4.6.4/gcc/opth-gen.awk print "#define OPTIONS_H" print "" print "#include \"flag-types.h\"" -@@ -432,18 +432,9 @@ +@@ -432,18 +432,9 @@ print "" for (i = 0; i < n_opts; i++) { opt = opt_args("InverseMask", flags[i]) @@ -8044,10 +8104,11 @@ diff -urN gcc-4.6.4-clean/gcc/opth-gen.awk gcc-4.6.4/gcc/opth-gen.awk } print "" -diff -urN gcc-4.6.4-clean/gcc/tree.h gcc-4.6.4/gcc/tree.h ---- gcc-4.6.4-clean/gcc/tree.h 2011-10-06 13:57:52.000000000 -0600 -+++ gcc-4.6.4/gcc/tree.h 2017-11-28 21:12:11.160911575 -0700 -@@ -3563,6 +3563,8 @@ +diff --git a/gcc/tree.h b/gcc/tree.h +index ece68b4..d0ec9d6 100644 +--- a/gcc/tree.h ++++ b/gcc/tree.h +@@ -3563,6 +3563,8 @@ enum tree_index TI_UINTDI_TYPE, TI_UINTTI_TYPE, @@ -8056,10 +8117,11 @@ diff -urN gcc-4.6.4-clean/gcc/tree.h gcc-4.6.4/gcc/tree.h TI_UINT32_TYPE, TI_UINT64_TYPE, -diff -urN gcc-4.6.4-clean/gcc/version.c gcc-4.6.4/gcc/version.c ---- gcc-4.6.4-clean/gcc/version.c 2009-04-21 13:03:23.000000000 -0600 -+++ gcc-4.6.4/gcc/version.c 2017-11-29 17:11:34.133149157 -0700 -@@ -21,16 +21,16 @@ +diff --git a/gcc/version.c b/gcc/version.c +index 9744449..347267d 100644 +--- a/gcc/version.c ++++ b/gcc/version.c +@@ -21,16 +21,16 @@ along with GCC; see the file COPYING3. If not see /* This is the location of the online document giving instructions for reporting bugs. If you distribute a modified version of GCC, @@ -8082,34 +8144,11 @@ diff -urN gcc-4.6.4-clean/gcc/version.c gcc-4.6.4/gcc/version.c -const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION; +const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION " (gcc6809lw pl9)"; const char pkgversion_string[] = PKGVERSION; -diff -urN gcc-4.6.4-clean/libgcc/config.host gcc-4.6.4/libgcc/config.host ---- gcc-4.6.4-clean/libgcc/config.host 2011-11-23 15:15:54.000000000 -0700 -+++ gcc-4.6.4/libgcc/config.host 2017-11-28 21:12:11.160911575 -0700 -@@ -371,6 +371,8 @@ - ;; - m32rle-*-linux*) - ;; -+m6809*) -+ ;; - m68hc11-*-*|m6811-*-*) - ;; - m68hc12-*-*|m6812-*-*) -diff -urN gcc-4.6.4-clean/libgcc/fixed-obj.mk gcc-4.6.4/libgcc/fixed-obj.mk ---- gcc-4.6.4-clean/libgcc/fixed-obj.mk 2007-09-17 16:18:13.000000000 -0600 -+++ gcc-4.6.4/libgcc/fixed-obj.mk 2017-11-28 21:12:11.160911575 -0700 -@@ -23,7 +23,7 @@ - #$(info $o$(objext): -DL$($o-label) $($o-opt)) - - $o$(objext): %$(objext): $(gcc_srcdir)/config/fixed-bit.c -- $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) -+ $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) -save-temps - - ifeq ($(enable_shared),yes) - $(o)_s$(objext): %_s$(objext): $(gcc_srcdir)/config/fixed-bit.c -diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in ---- gcc-4.6.4-clean/libgcc/Makefile.in 2012-12-04 12:11:33.000000000 -0700 -+++ gcc-4.6.4/libgcc/Makefile.in 2017-11-28 21:12:11.160911575 -0700 -@@ -374,8 +374,8 @@ +diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in +index b57aeb6..940c286 100644 +--- a/libgcc/Makefile.in ++++ b/libgcc/Makefile.in +@@ -374,8 +374,8 @@ endif # Build lib2funcs. For the static library also include LIB2FUNCS_ST. lib2funcs-o = $(patsubst %,%$(objext),$(lib2funcs) $(LIB2FUNCS_ST)) $(lib2funcs-o): %$(objext): $(gcc_srcdir)/libgcc2.c @@ -8120,7 +8159,7 @@ diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in libgcc-objects += $(lib2funcs-o) ifeq ($(enable_shared),yes) -@@ -410,8 +410,9 @@ +@@ -410,8 +410,9 @@ endif # Build LIB2_DIVMOD_FUNCS. lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS)) $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c @@ -8132,7 +8171,7 @@ diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in libgcc-objects += $(lib2-divmod-o) ifeq ($(enable_shared),yes) -@@ -443,7 +444,8 @@ +@@ -443,7 +444,8 @@ endif ifneq ($(FPBIT),) fpbit-o = $(patsubst %,%$(objext),$(FPBIT_FUNCS)) $(fpbit-o): %$(objext): $(FPBIT) @@ -8142,7 +8181,7 @@ diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in libgcc-objects += $(fpbit-o) ifeq ($(enable_shared),yes) -@@ -458,7 +460,8 @@ +@@ -458,7 +460,8 @@ endif ifneq ($(DPBIT),) dpbit-o = $(patsubst %,%$(objext),$(DPBIT_FUNCS)) $(dpbit-o): %$(objext): $(DPBIT) @@ -8152,21 +8191,63 @@ diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in libgcc-objects += $(dpbit-o) ifeq ($(enable_shared),yes) -diff -urN gcc-4.6.4-clean/README.LW gcc-4.6.4/README.LW ---- gcc-4.6.4-clean/README.LW 1969-12-31 17:00:00.000000000 -0700 -+++ gcc-4.6.4/README.LW 2017-11-29 17:11:09.189248596 -0700 -@@ -0,0 +1,14 @@ -+This is a port of gcc6809 which is designed to work with the lwtools -+cross-assembler and linker package. You will need several scripts from that -+package, available at http://lost.l-w.ca/coco/lwtools/, in order to use -+this. Instructions for building are present in the lwtools package. -+ -+This work is based extensively on the gcc6809 4.3.4-3 release by Brian -+Dominy (brian@oddchange.com) with some significant renovations to make it -+work with gcc 4.6.4. -+ -+There is no guarantee that it will work for any particular purpose you -+choose to put it to. -+ -+If you run into any problems, contact William Astle (lost@l-w.ca). DO NOT -+contact the main GCC developers! +diff --git a/libgcc/config.host b/libgcc/config.host +index 25e949e..7154892 100644 +--- a/libgcc/config.host ++++ b/libgcc/config.host +@@ -371,6 +371,8 @@ m32r-*-linux*) + ;; + m32rle-*-linux*) + ;; ++m6809*) ++ ;; + m68hc11-*-*|m6811-*-*) + ;; + m68hc12-*-*|m6812-*-*) +diff --git a/libgcc/fixed-obj.mk b/libgcc/fixed-obj.mk +index 3c7c2f3..eb3aa3a 100644 +--- a/libgcc/fixed-obj.mk ++++ b/libgcc/fixed-obj.mk +@@ -23,7 +23,7 @@ endif + #$(info $o$(objext): -DL$($o-label) $($o-opt)) + + $o$(objext): %$(objext): $(gcc_srcdir)/config/fixed-bit.c +- $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) ++ $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) -save-temps + + ifeq ($(enable_shared),yes) + $(o)_s$(objext): %_s$(objext): $(gcc_srcdir)/config/fixed-bit.c +-- +2.19.1 + + +From 6fd8ea7b4c4e6a51f9da7c2e9f7bb626ffb1c475 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Thu, 21 Mar 2019 19:52:53 +0100 +Subject: Fix prototypes to match what our gperf generates + + +diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf +index ef1ed08..12e7fc8 100644 +--- a/gcc/cp/cfns.gperf ++++ b/gcc/cp/cfns.gperf +@@ -16,14 +16,8 @@ for more details. + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ +-#ifdef __GNUC__ +-__inline +-#endif +-static unsigned int hash (const char *, unsigned int); +-#ifdef __GNUC__ +-__inline +-#endif +-const char * libc_name_p (const char *, unsigned int); ++static unsigned int hash (register const char *, register size_t); ++const char * libc_name_p (register const char *, register size_t); + %} + %% + # The standard C library functions, for feeding to gperf; the result is used +-- +2.19.1 +