target.h (asm_out.file_start, [...]): New hooks.
* target.h (asm_out.file_start, file_start_app_off, file_start_file_directive): New hooks. * target-def.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE, TARGET_ASM_FILE_START_APP_OFF, TARGET_ASM_FILE_START): New hook-definition macros. * doc/tm.texi: Document new hooks; remove docs of ASM_FILE_START. * varasm.c (default_file_start): New. * output.h: Prototype it. * toplev.c (init_asm_output): Use targetm.asm_out.file_start. * system.h: Poison ASM_FILE_START. * config/alpha/alpha.c (alpha_write_verstamp): Delete. (alpha_file_start): New, define if !TARGET_ABI_UNICOSMK. (unicosmk_asm_file_start): Rename unicosmk_file_start, make static, take no arguments. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_END, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set as appropriate. * config/alpha/unicosmk.h: Don't define ASM_FILE_START nor TARGET_ASM_FILE_END. Remove reference to ASM_FILE_START in comment. * config/arc/arc.c (arc_asm_file_start): Rename arc_file_start, take no arguments, make static. (TARGET_ASM_FILE_START): Set it. * config/arm/arm.c (aof_file_start): New static function. (TARGET_ASM_FILE_START): Set it, when appropriate. * config/arm/coff.h, config/arm/elf.h: Set TARGET_ASM_FILE_START_APP_OFF to true. * config/avr/avr.c (asm_file_start): Rename avr_file_start, take no arguments, make static. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set them. * config/c4x/c4x.c (c4x_file_start): New static function. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set them. * config/cris/cris.c (cris_file_start): New static function. (TARGET_ASM_FILE_START): Set it. * config/dsp16xx/dsp16xx.c (coff_dsp16xx_file_start): Rename dsp16xx_file_start, make static. (luxworks_dsp16xx_file_start): Delete. (TARGET_ASM_FILE_START): Set it. * config/h8300/h8300.c (asm_file_start): Rename h8300_file_start, make static, take no arguments. (TARGET_ASM_FILE_START): Set it. * config/i370/i370.c (i370_file_start): New static function. (TARGET_ASM_FILE_START): Set it. * config/i386/i386.c (x86_file_start): New static function. (TARGET_ASM_FILE_START): Set it. * config/i386/i386.h (X86_FILE_START_VERSION_DIRECTIVE, X86_FILE_START_FLTUSED): New macros, default to false. * config/i386/i386-interix.h: Override X86_FILE_START_FLTUSED to 1. * config/i386/sysv4.h, config/i386/sco5.h: Override X86_FILE_START_VERSION_DIRECTIVE to true. * config/ia64/ia64.c (ia64_file_start): New static function. (TARGET_ASM_FILE_START): Set it. (emit_safe_across_calls): Take no arguments. * config/ia64/ia64.md: Update to match. * config/m32r/m32r.c (m32r_asm_file_start): Rename m32r_file_start, make static, take no arguments. (TARGET_ASM_FILE_START): Set it. * config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Rename m68hc11_file_start, make static, take no arguments. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. (print_options): Delete. * config/m68k/m68k.c (m68k_hp320_file_start): New static function. (TARGET_ASM_FILE_START_APP_OFF): Set. * config/m68k/hp320.h: Set TARGET_ASM_FILE_START to m68k_hp320_file_start. * config/mips/mips.c (iris6_asm_file_start, mips_asm_file_start): Make static, take no arguments. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. * config/mmix/mmix.c (mmix_asm_file_start): Rename mmix_file_start, make static, take no arguments. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. * config/mn10300/mn10300.c (asm_file_start): Rename mn10300_file_start, make static, take no arguments. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. * config/ns32k/ns32k.c (TARGET_ASM_FILE_START_APP_OFF): Set. * config/pa/pa.c (pa_file_start_level, pa_file_start_space, pa_file_start_file, pa_file_start_mcount, pa_elf_file_start, pa_som_file_start, pa_linux_file_start, pa_hpux64_gas_file_start, pa_hpux64_hpas_file_start): New static functions. * config/pa/elf.h: Set TARGET_ASM_FILE_START to pa_elf_file_start. * config/pa/pa-linux.h: Set TARGET_ASM_FILE_START to pa_linux_file_start. * config/pa/pa64-hpux.h: Set TARGET_ASM_FILE_START to pa_hpux64_gas_file_start or pa_hpux64_hpas_file_start, as appropriate. * config/pa/som.h: Set TARGET_ASM_FILE_START to pa_som_file_start. * config/rs6000/rs6000.c: Include xcoffout.h when TARGET_XCOFF. (rs6000_file_start): Make static, take no arguments. Reset default_cpu under certain conditions. (rs6000_xcoff_file_start): New function. * config/rs6000/rs6000.h (TARGET_ASM_FILE_START): Set. * config/rs6000/xcoff.h (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Override. * config/sh/sh.c (output_file_start): Rename sh_file_start, make static, take no arguments. Merge in old code from sh/elf.h's ASM_FILE_START, conditioned on TARGET_ELF. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. * config/sh/sh.c (TARGET_ELF): Define to 0. * config/sh/elf.h (TARGET_ELF): Redefine to 1. * config/v850/v850.c (asm_file_start): Delete. (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set. * config/vax/vax.c (vax_file_start): New static function. (TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_APP_OFF): Set. * config/darwin.h: Override ASM_FILE_START_FILE_DIRECTIVE to false. * config/elfos.h, config/svr3.h, config/arm/elf.h, config/arm/pe.h * config/i386/att.h, config/i386/gas.h, config/i386/linux.h * config/i386/sysv4.h, config/i386/sco5.h, config/i960/i960-coff.h * config/m68k/coff.h, config/m68k/hp320.h, config/mcore/mcore-pe.h * config/vax/vaxv.h: Set ASM_FILE_START_FILE_DIRECTIVE to true. * config/darwin.h, config/elfos.h, config/alpha/elf.h * config/alpha/openbsd.h, config/alpha/osf.h, config/alpha/vms.h * config/arc/arc.h, config/arm/aof.h, config/arm/aout.h * config/arm/coff.h, config/arm/elf.h, config/arm/pe.h * config/avr/avr.h, config/c4x/c4x.h, config/cris/cris.h * config/dsp16xx/dsp16xx.h, config/h8300/elf.h, config/h8300/h8300.h * config/i370/i370.h, config/i386/att.h, config/i386/gas.h * config/i386/i386-interix.h, config/i386/linux.h, config/i386/sysv4.h * config/i386/sco5.h, config/i960/i960-coff.h, config/i960/i960.h * config/ia64/ia64.h, config/ia64/sysv4.h, config/m32r/m32r.h * config/m68hc11/m68hc11.h, config/m68k/coff.h, config/m68k/m68k.h * config/mcore/mcore-pe.h, config/mips/iris6.h, config/mips/mips.h * config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h * config/pa/elf.h, config/pa/pa-linux.h, config/pa/pa64-hpux.h * config/pa/som.h, config/pdp11/pdp11.h, config/rs6000/linux64.h * config/rs6000/lynx.h, config/rs6000/xcoff.h, config/sh/elf.h * config/sh/sh.h, config/sparc/sparc.h, config/v850/v850.h * config/vax/vax.h, config/vax/vaxv.h: Don't (re)define ASM_FILE_START. * config/alpha/alpha-protos.h, config/arc/arc-protos.h * config/avr/avr-protos.h, config/dsp16xx/dsp16xx-protos.h * config/h8300/h8300-protos.h, config/ia64/ia64-protos.h * config/m32r/m32r-protos.h, config/m68hc11/m68hc11-protos.h * config/mips/mips-protos.h, config/mmix/mmix-protos.h * config/mn10300/mn10300-protos.h, config/rs6000/rs6000-protos.h * config/sh/sh-protos.h, config/v850/v850-protos.h: Update. * xcoffout.h, config/rs6000/aix.h, config/rs6000/xcoff.h: Remove reference to ASM_FILE_START in comment. * config/arm/aof.h, config/arm/aout.h, config/arm/freebsd.h * config/arm/linux-gas.h, config/arm/netbsd-elf.h * config/arm/netbsd.h: Delete definition of ARM_OS_NAME. From-SVN: r68229
This commit is contained in:
parent
b556e18c83
commit
1bc7c5b629
220
gcc/ChangeLog
220
gcc/ChangeLog
|
@ -1,3 +1,151 @@
|
|||
2003-06-19 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* target.h (asm_out.file_start, file_start_app_off,
|
||||
file_start_file_directive): New hooks.
|
||||
* target-def.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
|
||||
TARGET_ASM_FILE_START_APP_OFF, TARGET_ASM_FILE_START):
|
||||
New hook-definition macros.
|
||||
* doc/tm.texi: Document new hooks; remove docs of ASM_FILE_START.
|
||||
* varasm.c (default_file_start): New.
|
||||
* output.h: Prototype it.
|
||||
* toplev.c (init_asm_output): Use targetm.asm_out.file_start.
|
||||
* system.h: Poison ASM_FILE_START.
|
||||
|
||||
* config/alpha/alpha.c (alpha_write_verstamp): Delete.
|
||||
(alpha_file_start): New, define if !TARGET_ABI_UNICOSMK.
|
||||
(unicosmk_asm_file_start): Rename unicosmk_file_start,
|
||||
make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_END,
|
||||
TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set as appropriate.
|
||||
* config/alpha/unicosmk.h: Don't define ASM_FILE_START nor
|
||||
TARGET_ASM_FILE_END. Remove reference to ASM_FILE_START in
|
||||
comment.
|
||||
* config/arc/arc.c (arc_asm_file_start): Rename
|
||||
arc_file_start, take no arguments, make static.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/arm/arm.c (aof_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START): Set it, when appropriate.
|
||||
* config/arm/coff.h, config/arm/elf.h:
|
||||
Set TARGET_ASM_FILE_START_APP_OFF to true.
|
||||
* config/avr/avr.c (asm_file_start): Rename avr_file_start,
|
||||
take no arguments, make static.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
|
||||
Set them.
|
||||
* config/c4x/c4x.c (c4x_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
|
||||
Set them.
|
||||
* config/cris/cris.c (cris_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/dsp16xx/dsp16xx.c (coff_dsp16xx_file_start): Rename
|
||||
dsp16xx_file_start, make static.
|
||||
(luxworks_dsp16xx_file_start): Delete.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/h8300/h8300.c (asm_file_start): Rename
|
||||
h8300_file_start, make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/i370/i370.c (i370_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/i386/i386.c (x86_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/i386/i386.h (X86_FILE_START_VERSION_DIRECTIVE,
|
||||
X86_FILE_START_FLTUSED): New macros, default to false.
|
||||
* config/i386/i386-interix.h: Override X86_FILE_START_FLTUSED to 1.
|
||||
* config/i386/sysv4.h, config/i386/sco5.h: Override
|
||||
X86_FILE_START_VERSION_DIRECTIVE to true.
|
||||
* config/ia64/ia64.c (ia64_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
(emit_safe_across_calls): Take no arguments.
|
||||
* config/ia64/ia64.md: Update to match.
|
||||
* config/m32r/m32r.c (m32r_asm_file_start): Rename
|
||||
m32r_file_start, make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START): Set it.
|
||||
* config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Rename
|
||||
m68hc11_file_start, make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
(print_options): Delete.
|
||||
* config/m68k/m68k.c (m68k_hp320_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START_APP_OFF): Set.
|
||||
* config/m68k/hp320.h: Set TARGET_ASM_FILE_START to
|
||||
m68k_hp320_file_start.
|
||||
* config/mips/mips.c (iris6_asm_file_start, mips_asm_file_start):
|
||||
Make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
* config/mmix/mmix.c (mmix_asm_file_start): Rename
|
||||
mmix_file_start, make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
* config/mn10300/mn10300.c (asm_file_start): Rename
|
||||
mn10300_file_start, make static, take no arguments.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
* config/ns32k/ns32k.c (TARGET_ASM_FILE_START_APP_OFF): Set.
|
||||
* config/pa/pa.c (pa_file_start_level, pa_file_start_space,
|
||||
pa_file_start_file, pa_file_start_mcount, pa_elf_file_start,
|
||||
pa_som_file_start, pa_linux_file_start, pa_hpux64_gas_file_start,
|
||||
pa_hpux64_hpas_file_start): New static functions.
|
||||
* config/pa/elf.h: Set TARGET_ASM_FILE_START to pa_elf_file_start.
|
||||
* config/pa/pa-linux.h: Set TARGET_ASM_FILE_START to
|
||||
pa_linux_file_start.
|
||||
* config/pa/pa64-hpux.h: Set TARGET_ASM_FILE_START to
|
||||
pa_hpux64_gas_file_start or pa_hpux64_hpas_file_start, as
|
||||
appropriate.
|
||||
* config/pa/som.h: Set TARGET_ASM_FILE_START to pa_som_file_start.
|
||||
* config/rs6000/rs6000.c: Include xcoffout.h when TARGET_XCOFF.
|
||||
(rs6000_file_start): Make static, take no arguments. Reset
|
||||
default_cpu under certain conditions.
|
||||
(rs6000_xcoff_file_start): New function.
|
||||
* config/rs6000/rs6000.h (TARGET_ASM_FILE_START): Set.
|
||||
* config/rs6000/xcoff.h (TARGET_ASM_FILE_START,
|
||||
TARGET_ASM_FILE_START_FILE_DIRECTIVE): Override.
|
||||
* config/sh/sh.c (output_file_start): Rename
|
||||
sh_file_start, make static, take no arguments. Merge in old
|
||||
code from sh/elf.h's ASM_FILE_START, conditioned on TARGET_ELF.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
* config/sh/sh.c (TARGET_ELF): Define to 0.
|
||||
* config/sh/elf.h (TARGET_ELF): Redefine to 1.
|
||||
* config/v850/v850.c (asm_file_start): Delete.
|
||||
(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
|
||||
* config/vax/vax.c (vax_file_start): New static function.
|
||||
(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_APP_OFF): Set.
|
||||
|
||||
* config/darwin.h: Override ASM_FILE_START_FILE_DIRECTIVE to false.
|
||||
* config/elfos.h, config/svr3.h, config/arm/elf.h, config/arm/pe.h
|
||||
* config/i386/att.h, config/i386/gas.h, config/i386/linux.h
|
||||
* config/i386/sysv4.h, config/i386/sco5.h, config/i960/i960-coff.h
|
||||
* config/m68k/coff.h, config/m68k/hp320.h, config/mcore/mcore-pe.h
|
||||
* config/vax/vaxv.h: Set ASM_FILE_START_FILE_DIRECTIVE to true.
|
||||
|
||||
* config/darwin.h, config/elfos.h, config/alpha/elf.h
|
||||
* config/alpha/openbsd.h, config/alpha/osf.h, config/alpha/vms.h
|
||||
* config/arc/arc.h, config/arm/aof.h, config/arm/aout.h
|
||||
* config/arm/coff.h, config/arm/elf.h, config/arm/pe.h
|
||||
* config/avr/avr.h, config/c4x/c4x.h, config/cris/cris.h
|
||||
* config/dsp16xx/dsp16xx.h, config/h8300/elf.h, config/h8300/h8300.h
|
||||
* config/i370/i370.h, config/i386/att.h, config/i386/gas.h
|
||||
* config/i386/i386-interix.h, config/i386/linux.h, config/i386/sysv4.h
|
||||
* config/i386/sco5.h, config/i960/i960-coff.h, config/i960/i960.h
|
||||
* config/ia64/ia64.h, config/ia64/sysv4.h, config/m32r/m32r.h
|
||||
* config/m68hc11/m68hc11.h, config/m68k/coff.h, config/m68k/m68k.h
|
||||
* config/mcore/mcore-pe.h, config/mips/iris6.h, config/mips/mips.h
|
||||
* config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h
|
||||
* config/pa/elf.h, config/pa/pa-linux.h, config/pa/pa64-hpux.h
|
||||
* config/pa/som.h, config/pdp11/pdp11.h, config/rs6000/linux64.h
|
||||
* config/rs6000/lynx.h, config/rs6000/xcoff.h, config/sh/elf.h
|
||||
* config/sh/sh.h, config/sparc/sparc.h, config/v850/v850.h
|
||||
* config/vax/vax.h, config/vax/vaxv.h: Don't (re)define ASM_FILE_START.
|
||||
|
||||
* config/alpha/alpha-protos.h, config/arc/arc-protos.h
|
||||
* config/avr/avr-protos.h, config/dsp16xx/dsp16xx-protos.h
|
||||
* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
|
||||
* config/m32r/m32r-protos.h, config/m68hc11/m68hc11-protos.h
|
||||
* config/mips/mips-protos.h, config/mmix/mmix-protos.h
|
||||
* config/mn10300/mn10300-protos.h, config/rs6000/rs6000-protos.h
|
||||
* config/sh/sh-protos.h, config/v850/v850-protos.h: Update.
|
||||
|
||||
* xcoffout.h, config/rs6000/aix.h, config/rs6000/xcoff.h:
|
||||
Remove reference to ASM_FILE_START in comment.
|
||||
* config/arm/aof.h, config/arm/aout.h, config/arm/freebsd.h
|
||||
* config/arm/linux-gas.h, config/arm/netbsd-elf.h
|
||||
* config/arm/netbsd.h: Delete definition of ARM_OS_NAME.
|
||||
|
||||
2003-06-19 Graeme Peterson <gp@qnx.com>
|
||||
|
||||
* gcc.c (target_sysroot_suffix, target_sysroot_hdrs_suffix,
|
||||
|
@ -36,8 +184,8 @@
|
|||
|
||||
2003-06-19 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* expr.c (const_vector_from_tree): Initialize remaining elements
|
||||
to 0.
|
||||
* expr.c (const_vector_from_tree): Initialize remaining elements
|
||||
to 0.
|
||||
|
||||
2003-06-19 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
|
@ -96,8 +244,8 @@
|
|||
|
||||
2003-06-18 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/ia64/unwind-ia64.c (_Unwind_GetCFA): New.
|
||||
(_Unwind_FindEnclosingFunction): Implement.
|
||||
* config/ia64/unwind-ia64.c (_Unwind_GetCFA): New.
|
||||
(_Unwind_FindEnclosingFunction): Implement.
|
||||
|
||||
2003-06-18 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
|
@ -107,7 +255,7 @@
|
|||
INSN_SCHEDULING is defined.
|
||||
|
||||
2003-06-18 Stephen Clarke <stephen.clarke@superh.com>
|
||||
J"orn Rennecke <joern.rennecke@superh.com>
|
||||
J"orn Rennecke <joern.rennecke@superh.com>
|
||||
|
||||
* bt-load.c: New file.
|
||||
* Makefile.in (OBJS): Include bt-load.o
|
||||
|
@ -164,17 +312,17 @@
|
|||
2003-06-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config.gcc: Add an extra_header for ARM targets.
|
||||
Support configuring with --with-cpu=iwmmxt.
|
||||
Support configuring with --with-cpu=iwmmxt.
|
||||
* doc/invoke.texi: Document new value for -mcpu= ARM switch.
|
||||
* config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register
|
||||
* config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register
|
||||
names. Fix formatting.
|
||||
* config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register
|
||||
* config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register
|
||||
names.
|
||||
* config/arm/arm-protos.h (arm_emit_vector_const): New
|
||||
* config/arm/arm-protos.h (arm_emit_vector_const): New
|
||||
prototype.
|
||||
(arm_output_load_gr): New prototype.
|
||||
* config/arm/arm.c (extra_reg_names1): Delete.
|
||||
(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN, FL_IWMMXT,
|
||||
(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN, FL_IWMMXT,
|
||||
* arch_is_iwmmxt): Define.
|
||||
(all_cores, all_architecture): Add entry for iwmmxt.
|
||||
(arm_override_options): Add support for iwmmxt.
|
||||
|
@ -193,47 +341,47 @@
|
|||
(add_minipool_backward_ref, add_minipool_offsets,
|
||||
dump_minipool, push_minipool_fix): Likewise.
|
||||
(struct builtin_description): New struct.
|
||||
(builtin_description): New array of iwmmxt builtin functions.
|
||||
(arm_init_iwmmxt_builtins): New function.
|
||||
(arm_init_builtins): New function.
|
||||
(safe_vector_operand): New function.
|
||||
(arm_expand_binop_builtin): New function.
|
||||
(arm_expand_unop_builtin): New function.
|
||||
(arm_expand_builtin): New function.
|
||||
(arm_emit_vector_const): New function.
|
||||
(arm_output_load_gr): New function.
|
||||
* config/arm/arm.h (TARGET_CPU_iwmmxt, TARGET_IWMMXT,
|
||||
(builtin_description): New array of iwmmxt builtin functions.
|
||||
(arm_init_iwmmxt_builtins): New function.
|
||||
(arm_init_builtins): New function.
|
||||
(safe_vector_operand): New function.
|
||||
(arm_expand_binop_builtin): New function.
|
||||
(arm_expand_unop_builtin): New function.
|
||||
(arm_expand_builtin): New function.
|
||||
(arm_emit_vector_const): New function.
|
||||
(arm_output_load_gr): New function.
|
||||
* config/arm/arm.h (TARGET_CPU_iwmmxt, TARGET_IWMMXT,
|
||||
TARGET_REALLY_IWMMXT, arm_arch_iwmmxt, IWMMXT_ALIGNMENT,
|
||||
TYPE_NEEDS_IWMMXT_ALIGNMENT, ADJUST_FIELD_ALIGN,
|
||||
DATA_ALIGNMENT, LOCAL_ALIGNMENT, VECTOR_MODE_SUPPORTED_P): Define.
|
||||
(BIGGEST_ALIGNMENT): Set to 64 if ATPCS support is enabled.
|
||||
(CPP_CPU_ARCH_SPEC): Add entries for iwmmxt.
|
||||
(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER,
|
||||
(BIGGEST_ALIGNMENT): Set to 64 if ATPCS support is enabled.
|
||||
(CPP_CPU_ARCH_SPEC): Add entries for iwmmxt.
|
||||
(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER,
|
||||
reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
|
||||
REG_CLASS_FOR_LETTER): Add iwmmxt registers.
|
||||
(SUBTARGET_CONDITIONAL_REGISTER_USAGE): Disable iwmmxt
|
||||
(SUBTARGET_CONDITIONAL_REGISTER_USAGE): Disable iwmmxt
|
||||
registers unless the iwmmxt target is selected.
|
||||
(FIRST_IWMMXT_GR_REGNUM, LAST_IWMMXT_GR_REGNUM,
|
||||
(FIRST_IWMMXT_GR_REGNUM, LAST_IWMMXT_GR_REGNUM,
|
||||
FIRST_IWMMXT_REGNUM, LAST_IWMMXT_REGNUM, IS_IWMMXT_REGNUM,
|
||||
IS_IWMMXT_GR_REGNUM): Define.
|
||||
(FIRST_PSEUDO_REGISTER): Bump to 63.
|
||||
(struct machine_function): Add sibcall_blocked field.
|
||||
(Struct CUMULATIVE_ARGS): Add iwmmxt_nregs, named_count and
|
||||
(FIRST_PSEUDO_REGISTER): Bump to 63.
|
||||
(struct machine_function): Add sibcall_blocked field.
|
||||
(Struct CUMULATIVE_ARGS): Add iwmmxt_nregs, named_count and
|
||||
nargs fields.
|
||||
(enum arm_builtins): New enum list.
|
||||
* config/arm/arm.md (UNSPEC_WSHUFH, UNSPEC_WACC,
|
||||
(enum arm_builtins): New enum list.
|
||||
* config/arm/arm.md (UNSPEC_WSHUFH, UNSPEC_WACC,
|
||||
UNSPEC_TMOVMSK, UNSPEC_WSAD, UNSPEC_WSADZ, UNSPEC_WMACS,
|
||||
UNSPEC_WMACU, UNSPEC_WMACSZ, UNSPEC_WMACUZ, UNSPEC_CLRDI,
|
||||
UNSPEC_WMADDS, UNSPEC_WMADDU): New unspecs.
|
||||
(VUNSPEC_TMRC, VUNSPEC_TMCR, VUNSPEC_ALIGN8, VUNSPEC_WCMP_EQ,
|
||||
VUNSPEC_WCMP_GTU, VUNSPEC_WCMP_GT): New vunspecs.
|
||||
(movv2si, movv4hi, movv8qi): New expands for vector moves.
|
||||
Include iwmmxt.md.
|
||||
(movv2si, movv4hi, movv8qi): New expands for vector moves.
|
||||
Include iwmmxt.md.
|
||||
* config/arm/t-xscale-elf (MULTILIB_OPITONS): Add iwmmxt
|
||||
multilib.
|
||||
(MULTILIB_DIRNAMES, MULTILIB_REDUNDANT_DIRS): Likewise.
|
||||
* config/arm/mmintrin.h: New ARM specific header file.
|
||||
* config/arm/iwmmx.md: New iWMMXt specific machine patterns.
|
||||
(MULTILIB_DIRNAMES, MULTILIB_REDUNDANT_DIRS): Likewise.
|
||||
* config/arm/mmintrin.h: New ARM specific header file.
|
||||
* config/arm/iwmmx.md: New iWMMXt specific machine patterns.
|
||||
|
||||
2003-06-18 J"orn Rennecke <joern.rennecke@superh.com>
|
||||
|
||||
|
@ -337,7 +485,7 @@
|
|||
* config/ns32k/NOTES: Likewise.
|
||||
|
||||
2003-06-17 Ranjit Mathew <rmathew@hotmail.com>
|
||||
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* doc/sourcebuild.texi (libgcj Tests): Simplify instructions on how
|
||||
to run Java runtime tests separately.
|
||||
|
|
|
@ -30,7 +30,6 @@ extern HOST_WIDE_INT alpha_initial_elimination_offset (unsigned int,
|
|||
unsigned int);
|
||||
extern int alpha_pv_save_size (void);
|
||||
extern int alpha_using_fp (void);
|
||||
extern void alpha_write_verstamp (FILE *);
|
||||
extern void alpha_expand_prologue (void);
|
||||
extern void alpha_expand_epilogue (void);
|
||||
extern void alpha_output_filename (FILE *, const char *);
|
||||
|
@ -169,7 +168,6 @@ extern void unicosmk_add_extern (const char *);
|
|||
extern void unicosmk_output_align (FILE *, int);
|
||||
extern char * unicosmk_text_section (void);
|
||||
extern char * unicosmk_data_section (void);
|
||||
extern void unicosmk_asm_file_start (FILE *);
|
||||
extern void unicosmk_output_common (FILE *, const char *, int, int);
|
||||
extern int unicosmk_initial_elimination_offset (int, int);
|
||||
#endif
|
||||
|
|
|
@ -6780,20 +6780,6 @@ alpha_does_function_need_gp (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Write a version stamp. Don't write anything if we are running as a
|
||||
cross-compiler. Otherwise, use the versions in /usr/include/stamp.h. */
|
||||
|
||||
#ifdef HAVE_STAMP_H
|
||||
#include <stamp.h>
|
||||
#endif
|
||||
|
||||
void
|
||||
alpha_write_verstamp (FILE *file ATTRIBUTE_UNUSED)
|
||||
{
|
||||
#ifdef MS_STAMP
|
||||
fprintf (file, "\t.verstamp %d %d\n", MS_STAMP, LS_STAMP);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Helper function to set RTX_FRAME_RELATED_P on instructions, including
|
||||
sequences. */
|
||||
|
@ -8687,6 +8673,36 @@ alpha_reorg (void)
|
|||
}
|
||||
}
|
||||
|
||||
#if !TARGET_ABI_UNICOSMK
|
||||
|
||||
#ifdef HAVE_STAMP_H
|
||||
#include <stamp.h>
|
||||
#endif
|
||||
|
||||
static void
|
||||
alpha_file_start (void)
|
||||
{
|
||||
default_file_start ();
|
||||
#ifdef MS_STAMP
|
||||
fprintf (file, "\t.verstamp %d %d\n", MS_STAMP, LS_STAMP);
|
||||
#endif
|
||||
|
||||
fputs ("\t.set noreorder\n", asm_out_file);
|
||||
fputs ("\t.set volatile\n", asm_out_file);
|
||||
if (!TARGET_ABI_OPEN_VMS)
|
||||
fputs ("\t.set noat\n", asm_out_file);
|
||||
if (TARGET_EXPLICIT_RELOCS)
|
||||
fputs ("\t.set nomacro\n", asm_out_file);
|
||||
if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX)
|
||||
fprintf (asm_out_file,
|
||||
"\t.arch %s\n",
|
||||
TARGET_CPU_EV6 ? "ev6"
|
||||
: (TARGET_CPU_EV5
|
||||
? (TARGET_MAX ? "pca56" : TARGET_BWX ? "ev56" : "ev5")
|
||||
: "ev4"));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OBJECT_FORMAT_ELF
|
||||
|
||||
/* Switch to the section to which we should output X. The only thing
|
||||
|
@ -9728,14 +9744,14 @@ unicosmk_output_dex (FILE *file)
|
|||
|
||||
/* Output text that to appear at the beginning of an assembler file. */
|
||||
|
||||
void
|
||||
unicosmk_asm_file_start (FILE *file)
|
||||
static void
|
||||
unicosmk_file_start (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
fputs ("\t.ident\t", file);
|
||||
unicosmk_output_module_name (file);
|
||||
fputs ("\n\n", file);
|
||||
fputs ("\t.ident\t", asm_out_file);
|
||||
unicosmk_output_module_name (asm_out_file);
|
||||
fputs ("\n\n", asm_out_file);
|
||||
|
||||
/* The Unicos/Mk assembler uses different register names. Instead of trying
|
||||
to support them, we simply use micro definitions. */
|
||||
|
@ -9746,12 +9762,12 @@ unicosmk_asm_file_start (FILE *file)
|
|||
register. */
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
fprintf (file, "$%d <- r%d\n", i, i);
|
||||
fprintf (asm_out_file, "$%d <- r%d\n", i, i);
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
fprintf (file, "$f%d <- f%d\n", i, i);
|
||||
fprintf (asm_out_file, "$f%d <- f%d\n", i, i);
|
||||
|
||||
putc ('\n', file);
|
||||
putc ('\n', asm_out_file);
|
||||
|
||||
/* The .align directive fill unused space with zeroes which does not work
|
||||
in code sections. We define the macro 'gcc@code@align' which uses nops
|
||||
|
@ -9759,24 +9775,24 @@ unicosmk_asm_file_start (FILE *file)
|
|||
biggest possible alignment since . refers to the current offset from
|
||||
the beginning of the section. */
|
||||
|
||||
fputs ("\t.macro gcc@code@align n\n", file);
|
||||
fputs ("gcc@n@bytes = 1 << n\n", file);
|
||||
fputs ("gcc@here = . % gcc@n@bytes\n", file);
|
||||
fputs ("\t.if ne, gcc@here, 0\n", file);
|
||||
fputs ("\t.repeat (gcc@n@bytes - gcc@here) / 4\n", file);
|
||||
fputs ("\tbis r31,r31,r31\n", file);
|
||||
fputs ("\t.endr\n", file);
|
||||
fputs ("\t.endif\n", file);
|
||||
fputs ("\t.endm gcc@code@align\n\n", file);
|
||||
fputs ("\t.macro gcc@code@align n\n", asm_out_file);
|
||||
fputs ("gcc@n@bytes = 1 << n\n", asm_out_file);
|
||||
fputs ("gcc@here = . % gcc@n@bytes\n", asm_out_file);
|
||||
fputs ("\t.if ne, gcc@here, 0\n", asm_out_file);
|
||||
fputs ("\t.repeat (gcc@n@bytes - gcc@here) / 4\n", asm_out_file);
|
||||
fputs ("\tbis r31,r31,r31\n", asm_out_file);
|
||||
fputs ("\t.endr\n", asm_out_file);
|
||||
fputs ("\t.endif\n", asm_out_file);
|
||||
fputs ("\t.endm gcc@code@align\n\n", asm_out_file);
|
||||
|
||||
/* Output extern declarations which should always be visible. */
|
||||
unicosmk_output_default_externs (file);
|
||||
unicosmk_output_default_externs (asm_out_file);
|
||||
|
||||
/* Open a dummy section. We always need to be inside a section for the
|
||||
section-switching code to work correctly.
|
||||
??? This should be a module id or something like that. I still have to
|
||||
figure out what the rules for those are. */
|
||||
fputs ("\n\t.psect\t$SG00000,data\n", file);
|
||||
fputs ("\n\t.psect\t$SG00000,data\n", asm_out_file);
|
||||
}
|
||||
|
||||
/* Output text to appear at the end of an assembler file. This includes all
|
||||
|
@ -9877,6 +9893,18 @@ unicosmk_need_dex (rtx x ATTRIBUTE_UNUSED)
|
|||
#undef TARGET_ASM_FUNCTION_END_PROLOGUE
|
||||
#define TARGET_ASM_FUNCTION_END_PROLOGUE alpha_output_function_end_prologue
|
||||
|
||||
#if TARGET_ABI_UNICOSMK
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START unicosmk_file_start
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END unicosmk_file_end
|
||||
#else
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START alpha_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#endif
|
||||
|
||||
#undef TARGET_SCHED_ADJUST_COST
|
||||
#define TARGET_SCHED_ADJUST_COST alpha_adjust_cost
|
||||
#undef TARGET_SCHED_ISSUE_RATE
|
||||
|
|
|
@ -49,27 +49,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "%{G*} %{relax:-relax} %{!gstabs*:-no-mdebug}%{gstabs*:-mdebug}"
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
if (write_symbols == DBX_DEBUG) \
|
||||
{ \
|
||||
alpha_write_verstamp (FILE); \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
} \
|
||||
fprintf (FILE, "\t.set noat\n"); \
|
||||
fprintf (FILE, "\t.set noreorder\n"); \
|
||||
if (TARGET_EXPLICIT_RELOCS) \
|
||||
fprintf (FILE, "\t.set nomacro\n"); \
|
||||
if (TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) \
|
||||
{ \
|
||||
fprintf (FILE, "\t.arch %s\n", \
|
||||
(TARGET_CPU_EV6 ? "ev6" \
|
||||
: TARGET_MAX ? "pca56" : "ev56")); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#undef IDENT_ASM_OP
|
||||
#define IDENT_ASM_OP "\t.ident\t"
|
||||
|
||||
|
|
|
@ -88,29 +88,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#define DWARF2_UNWIND_INFO 0
|
||||
#endif
|
||||
|
||||
/* Assembler format: file framework. */
|
||||
|
||||
/* Taken from alpha/osf.h. This used to be common to all alpha
|
||||
configurations, but elf has departed from it.
|
||||
Check alpha/alpha.h, alpha/osf.h for it when egcs is upgraded. */
|
||||
#ifndef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
alpha_write_verstamp (FILE); \
|
||||
fprintf (FILE, "\t.set noreorder\n"); \
|
||||
fprintf (FILE, "\t.set volatile\n"); \
|
||||
fprintf (FILE, "\t.set noat\n"); \
|
||||
if (TARGET_SUPPORT_ARCH) \
|
||||
fprintf (FILE, "\t.arch %s\n", \
|
||||
TARGET_CPU_EV6 ? "ev6" \
|
||||
: (TARGET_CPU_EV5 \
|
||||
? (TARGET_MAX ? "pca56" : TARGET_BWX ? "ev56" : "ev5") \
|
||||
: "ev4")); \
|
||||
\
|
||||
ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Assembler format: label output. */
|
||||
|
||||
#define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE) \
|
||||
|
|
|
@ -84,22 +84,6 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
#define MD_STARTFILE_PREFIX "/usr/lib/cmplrs/cc/"
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
alpha_write_verstamp (FILE); \
|
||||
fprintf (FILE, "\t.set noreorder\n"); \
|
||||
fprintf (FILE, "\t.set volatile\n"); \
|
||||
fprintf (FILE, "\t.set noat\n"); \
|
||||
if (TARGET_SUPPORT_ARCH) \
|
||||
fprintf (FILE, "\t.arch %s\n", \
|
||||
TARGET_CPU_EV6 ? "ev6" \
|
||||
: (TARGET_CPU_EV5 \
|
||||
? (TARGET_MAX ? "pca56" : TARGET_BWX ? "ev56" : "ev5") \
|
||||
: "ev4")); \
|
||||
\
|
||||
ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
|
||||
}
|
||||
|
||||
/* Tru64 UNIX V5.1 requires a special as flag. Empty by default. */
|
||||
|
||||
#define ASM_OLDAS_SPEC ""
|
||||
|
|
|
@ -333,16 +333,7 @@ ssib_section () \
|
|||
in_section = in_ssib; \
|
||||
}
|
||||
|
||||
/* This outputs text to go at the start of an assembler file. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) unicosmk_asm_file_start (FILE)
|
||||
|
||||
/* This outputs text to go at the end of an assembler file. */
|
||||
|
||||
#define TARGET_ASM_FILE_END unicosmk_file_end
|
||||
|
||||
/* We take care of that in ASM_FILE_START. */
|
||||
/* We take care of this in unicosmk_file_start. */
|
||||
|
||||
#undef ASM_OUTPUT_SOURCE_FILENAME
|
||||
|
||||
|
|
|
@ -242,21 +242,6 @@ typedef struct {int num_args; enum avms_arg_type atypes[6];} avms_arg_info;
|
|||
#undef STACK_CHECK_BUILTIN
|
||||
#define STACK_CHECK_BUILTIN 0
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
alpha_write_verstamp (FILE); \
|
||||
fprintf (FILE, "\t.set noreorder\n"); \
|
||||
fprintf (FILE, "\t.set volatile\n"); \
|
||||
if (TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) \
|
||||
{ \
|
||||
fprintf (FILE, "\t.arch %s\n", \
|
||||
(TARGET_CPU_EV6 ? "ev6" \
|
||||
: TARGET_MAX ? "pca56" : "ev56")); \
|
||||
} \
|
||||
ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
|
||||
}
|
||||
|
||||
#define LINK_SECTION_ASM_OP "\t.link"
|
||||
#define READONLY_DATA_SECTION_ASM_OP "\t.rdata"
|
||||
#define LITERALS_SECTION_ASM_OP "\t.literals"
|
||||
|
|
|
@ -66,7 +66,6 @@ extern void arc_setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *,
|
|||
|
||||
|
||||
extern void arc_init PARAMS ((void));
|
||||
extern void arc_asm_file_start PARAMS ((FILE *));
|
||||
extern unsigned int arc_compute_frame_size PARAMS ((int));
|
||||
extern void arc_save_restore PARAMS ((FILE *, const char *, unsigned int,
|
||||
unsigned int, const char *));
|
||||
|
|
|
@ -94,6 +94,7 @@ static tree arc_handle_interrupt_attribute PARAMS ((tree *, tree, tree, int, boo
|
|||
static bool arc_assemble_integer PARAMS ((rtx, unsigned int, int));
|
||||
static void arc_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void arc_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void arc_file_start PARAMS ((void));
|
||||
static void arc_internal_label PARAMS ((FILE *, const char *, unsigned long));
|
||||
static bool arc_rtx_costs PARAMS ((rtx, int, int, int *));
|
||||
static int arc_address_cost PARAMS ((rtx));
|
||||
|
@ -110,6 +111,8 @@ static int arc_address_cost PARAMS ((rtx));
|
|||
#define TARGET_ASM_FUNCTION_PROLOGUE arc_output_function_prologue
|
||||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE arc_output_function_epilogue
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START arc_file_start
|
||||
#undef TARGET_ATTRIBUTE_TABLE
|
||||
#define TARGET_ATTRIBUTE_TABLE arc_attribute_table
|
||||
#undef TARGET_ASM_INTERNAL_LABEL
|
||||
|
@ -1657,11 +1660,11 @@ arc_initialize_trampoline (tramp, fnaddr, cxt)
|
|||
/* Set the cpu type and print out other fancy things,
|
||||
at the top of the file. */
|
||||
|
||||
void
|
||||
arc_asm_file_start (file)
|
||||
FILE *file;
|
||||
static void
|
||||
arc_file_start ()
|
||||
{
|
||||
fprintf (file, "\t.cpu %s\n", arc_cpu_string);
|
||||
default_file_start ();
|
||||
fprintf (asm_out_file, "\t.cpu %s\n", arc_cpu_string);
|
||||
}
|
||||
|
||||
/* Print operand X (an rtx) in assembler syntax to file FILE.
|
||||
|
|
|
@ -1110,10 +1110,6 @@ extern const char *arc_text_section, *arc_data_section, *arc_rodata_section;
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) arc_asm_file_start (FILE)
|
||||
|
||||
/* A C string constant describing how to begin a comment in the target
|
||||
assembler language. The compiler assumes that the comment will
|
||||
end at the end of the line. */
|
||||
|
|
|
@ -130,45 +130,6 @@
|
|||
whole table generation until the end of the function. */
|
||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
||||
|
||||
#ifndef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "(generic)"
|
||||
#endif
|
||||
|
||||
/* For the AOF linker, we need to reference __main to force the standard
|
||||
library to get linked in. */
|
||||
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
{ \
|
||||
fprintf ((STREAM), "%s Generated by gcc %s for ARM/%s\n", \
|
||||
ASM_COMMENT_START, version_string, ARM_OS_NAME); \
|
||||
fprintf ((STREAM), "__r0\tRN\t0\n"); \
|
||||
fprintf ((STREAM), "__a1\tRN\t0\n"); \
|
||||
fprintf ((STREAM), "__a2\tRN\t1\n"); \
|
||||
fprintf ((STREAM), "__a3\tRN\t2\n"); \
|
||||
fprintf ((STREAM), "__a4\tRN\t3\n"); \
|
||||
fprintf ((STREAM), "__v1\tRN\t4\n"); \
|
||||
fprintf ((STREAM), "__v2\tRN\t5\n"); \
|
||||
fprintf ((STREAM), "__v3\tRN\t6\n"); \
|
||||
fprintf ((STREAM), "__v4\tRN\t7\n"); \
|
||||
fprintf ((STREAM), "__v5\tRN\t8\n"); \
|
||||
fprintf ((STREAM), "__v6\tRN\t9\n"); \
|
||||
fprintf ((STREAM), "__sl\tRN\t10\n"); \
|
||||
fprintf ((STREAM), "__fp\tRN\t11\n"); \
|
||||
fprintf ((STREAM), "__ip\tRN\t12\n"); \
|
||||
fprintf ((STREAM), "__sp\tRN\t13\n"); \
|
||||
fprintf ((STREAM), "__lr\tRN\t14\n"); \
|
||||
fprintf ((STREAM), "__pc\tRN\t15\n"); \
|
||||
fprintf ((STREAM), "__f0\tFN\t0\n"); \
|
||||
fprintf ((STREAM), "__f1\tFN\t1\n"); \
|
||||
fprintf ((STREAM), "__f2\tFN\t2\n"); \
|
||||
fprintf ((STREAM), "__f3\tFN\t3\n"); \
|
||||
fprintf ((STREAM), "__f4\tFN\t4\n"); \
|
||||
fprintf ((STREAM), "__f5\tFN\t5\n"); \
|
||||
fprintf ((STREAM), "__f6\tFN\t6\n"); \
|
||||
fprintf ((STREAM), "__f7\tFN\t7\n"); \
|
||||
text_section (); \
|
||||
}
|
||||
|
||||
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
||||
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
||||
give the same symbol without quotes for an alternative entry point. You
|
||||
|
@ -285,7 +246,7 @@ do { \
|
|||
"wr0", "wr1", "wr2", "wr3", \
|
||||
"wr4", "wr5", "wr6", "wr7", \
|
||||
"wr8", "wr9", "wr10", "wr11", \
|
||||
"wr12", "wr13", "wr14", "wr15"
|
||||
"wr12", "wr13", "wr14", "wr15" \
|
||||
}
|
||||
|
||||
#define ADDITIONAL_REGISTER_NAMES \
|
||||
|
|
|
@ -20,24 +20,6 @@
|
|||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "(generic)"
|
||||
#endif
|
||||
|
||||
/* The text to go at the start of the assembler file. */
|
||||
#ifndef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
{ \
|
||||
asm_fprintf (STREAM,"%Rrfp\t.req\t%Rr9\n"); \
|
||||
asm_fprintf (STREAM,"%Rsl\t.req\t%Rr10\n"); \
|
||||
asm_fprintf (STREAM,"%Rfp\t.req\t%Rr11\n"); \
|
||||
asm_fprintf (STREAM,"%Rip\t.req\t%Rr12\n"); \
|
||||
asm_fprintf (STREAM,"%Rsp\t.req\t%Rr13\n"); \
|
||||
asm_fprintf (STREAM,"%Rlr\t.req\t%Rr14\n"); \
|
||||
asm_fprintf (STREAM,"%Rpc\t.req\t%Rr15\n"); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ASM_APP_ON
|
||||
#define ASM_APP_ON ""
|
||||
#endif
|
||||
|
|
|
@ -147,6 +147,7 @@ static void arm_encode_section_info (tree, rtx, int);
|
|||
static void aof_globalize_label (FILE *, const char *);
|
||||
static void aof_dump_imports (FILE *);
|
||||
static void aof_dump_pic_table (FILE *);
|
||||
static void aof_file_start (void);
|
||||
static void aof_file_end (void);
|
||||
#endif
|
||||
|
||||
|
@ -169,6 +170,8 @@ static void aof_file_end (void);
|
|||
#define TARGET_ASM_ALIGNED_SI_OP "\tDCD\t"
|
||||
#undef TARGET_ASM_GLOBALIZE_LABEL
|
||||
#define TARGET_ASM_GLOBALIZE_LABEL aof_globalize_label
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START aof_file_start
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END aof_file_end
|
||||
#else
|
||||
|
@ -12838,6 +12841,37 @@ aof_globalize_label (FILE *stream, const char *name)
|
|||
arm_main_function = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
aof_file_start ()
|
||||
{
|
||||
fputs ("__r0\tRN\t0\n", asm_out_file);
|
||||
fputs ("__a1\tRN\t0\n", asm_out_file);
|
||||
fputs ("__a2\tRN\t1\n", asm_out_file);
|
||||
fputs ("__a3\tRN\t2\n", asm_out_file);
|
||||
fputs ("__a4\tRN\t3\n", asm_out_file);
|
||||
fputs ("__v1\tRN\t4\n", asm_out_file);
|
||||
fputs ("__v2\tRN\t5\n", asm_out_file);
|
||||
fputs ("__v3\tRN\t6\n", asm_out_file);
|
||||
fputs ("__v4\tRN\t7\n", asm_out_file);
|
||||
fputs ("__v5\tRN\t8\n", asm_out_file);
|
||||
fputs ("__v6\tRN\t9\n", asm_out_file);
|
||||
fputs ("__sl\tRN\t10\n", asm_out_file);
|
||||
fputs ("__fp\tRN\t11\n", asm_out_file);
|
||||
fputs ("__ip\tRN\t12\n", asm_out_file);
|
||||
fputs ("__sp\tRN\t13\n", asm_out_file);
|
||||
fputs ("__lr\tRN\t14\n", asm_out_file);
|
||||
fputs ("__pc\tRN\t15\n", asm_out_file);
|
||||
fputs ("__f0\tFN\t0\n", asm_out_file);
|
||||
fputs ("__f1\tFN\t1\n", asm_out_file);
|
||||
fputs ("__f2\tFN\t2\n", asm_out_file);
|
||||
fputs ("__f3\tFN\t3\n", asm_out_file);
|
||||
fputs ("__f4\tFN\t4\n", asm_out_file);
|
||||
fputs ("__f5\tFN\t5\n", asm_out_file);
|
||||
fputs ("__f6\tFN\t6\n", asm_out_file);
|
||||
fputs ("__f7\tFN\t7\n", asm_out_file);
|
||||
text_section ();
|
||||
}
|
||||
|
||||
static void
|
||||
aof_file_end (void)
|
||||
{
|
||||
|
|
|
@ -45,21 +45,7 @@
|
|||
|
||||
#include "dbxcoff.h"
|
||||
|
||||
/* A C statement to output assembler commands which will identify the
|
||||
object file as having been compiled with GCC (or another GNU
|
||||
compiler). */
|
||||
|
||||
/* This outputs a lot of .req's to define alias for various registers.
|
||||
Let's try to avoid this. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do \
|
||||
{ \
|
||||
fprintf (STREAM, "%s Generated by gcc %s for ARM/coff\n", \
|
||||
ASM_COMMENT_START, version_string); \
|
||||
fprintf (STREAM, ASM_APP_OFF); \
|
||||
} \
|
||||
while (0)
|
||||
#define TARGET_ASM_FILE_START_APP_OFF true
|
||||
|
||||
/* Switch into a generic section. */
|
||||
#define TARGET_ASM_NAMED_SECTION default_coff_asm_named_section
|
||||
|
|
|
@ -114,20 +114,8 @@
|
|||
{ "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
|
||||
#endif
|
||||
|
||||
|
||||
/* This outputs a lot of .req's to define alias for various registers.
|
||||
Let's try to avoid this. */
|
||||
#ifndef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do \
|
||||
{ \
|
||||
fprintf (STREAM, "%s Generated by gcc %s for ARM/elf\n", \
|
||||
ASM_COMMENT_START, version_string); \
|
||||
output_file_directive (STREAM, main_input_filename); \
|
||||
fprintf (STREAM, ASM_APP_OFF); \
|
||||
} \
|
||||
while (0)
|
||||
#endif
|
||||
#define TARGET_ASM_FILE_START_APP_OFF true
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef TARGET_ASM_NAMED_SECTION
|
||||
#define TARGET_ASM_NAMED_SECTION arm_elf_asm_named_section
|
||||
|
|
|
@ -47,8 +47,5 @@
|
|||
#undef SUBTARGET_CPU_DEFAULT
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
|
||||
|
||||
#undef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "FreeBSD"
|
||||
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)");
|
||||
|
|
|
@ -23,10 +23,6 @@
|
|||
/* This is how we tell the assembler that a symbol is weak.
|
||||
GAS always supports weak symbols. */
|
||||
|
||||
/* This is used in ASM_FILE_START. */
|
||||
#undef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "Linux"
|
||||
|
||||
/* Unsigned chars produces much better code than signed. */
|
||||
#define DEFAULT_SIGNED_CHAR 0
|
||||
|
||||
|
|
|
@ -23,10 +23,6 @@
|
|||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fputs (" (NetBSD/arm ELF)", stderr);
|
||||
|
||||
/* This is used in ASM_FILE_START. */
|
||||
#undef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "NetBSD"
|
||||
|
||||
/* arm.h defaults to ARM6 CPU. */
|
||||
|
||||
/* This defaults us to little-endian. */
|
||||
|
|
|
@ -23,10 +23,6 @@
|
|||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fputs (" (ARM/NetBSD)", stderr);
|
||||
|
||||
/* This is used in ASM_FILE_START. */
|
||||
#undef ARM_OS_NAME
|
||||
#define ARM_OS_NAME "NetBSD"
|
||||
|
||||
/* Unsigned chars produces much better code than signed. */
|
||||
#define DEFAULT_SIGNED_CHAR 0
|
||||
|
||||
|
|
|
@ -104,17 +104,7 @@
|
|||
#undef TARGET_ASM_NAMED_SECTION
|
||||
#define TARGET_ASM_NAMED_SECTION default_pe_asm_named_section
|
||||
|
||||
/* This outputs a lot of .req's to define alias for various registers.
|
||||
Let's try to avoid this. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do \
|
||||
{ \
|
||||
asm_fprintf (STREAM, "%@ Generated by gcc %s for ARM/pe\n",\
|
||||
version_string); \
|
||||
output_file_directive ((STREAM), main_input_filename); \
|
||||
} \
|
||||
while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* Output a reference to a label. */
|
||||
#undef ASM_OUTPUT_LABELREF
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
|
||||
extern int function_arg_regno_p PARAMS ((int r));
|
||||
extern void asm_file_start PARAMS ((FILE *file));
|
||||
extern void avr_init_once PARAMS ((void));
|
||||
extern void avr_override_options PARAMS ((void));
|
||||
extern void avr_optimization_options PARAMS ((int level, int size));
|
||||
|
|
|
@ -63,6 +63,7 @@ static tree avr_handle_progmem_attribute PARAMS ((tree *, tree, tree, int, boo
|
|||
static tree avr_handle_fndecl_attribute PARAMS ((tree *, tree, tree, int, bool *));
|
||||
const struct attribute_spec avr_attribute_table[];
|
||||
static bool avr_assemble_integer PARAMS ((rtx, unsigned int, int));
|
||||
static void avr_file_start PARAMS ((void));
|
||||
static void avr_file_end PARAMS ((void));
|
||||
static void avr_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void avr_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
|
@ -219,6 +220,10 @@ int avr_case_values_threshold = 30000;
|
|||
#define TARGET_ASM_ALIGNED_HI_OP "\t.word\t"
|
||||
#undef TARGET_ASM_INTEGER
|
||||
#define TARGET_ASM_INTEGER avr_assemble_integer
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START avr_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END avr_file_end
|
||||
|
||||
|
@ -4888,30 +4893,30 @@ avr_section_type_flags (decl, name, reloc)
|
|||
return flags;
|
||||
}
|
||||
|
||||
/* Outputs to the stdio stream FILE some
|
||||
appropriate text to go at the start of an assembler file. */
|
||||
/* Outputs some appropriate text to go at the start of an assembler
|
||||
file. */
|
||||
|
||||
void
|
||||
asm_file_start (file)
|
||||
FILE *file;
|
||||
static void
|
||||
avr_file_start ()
|
||||
{
|
||||
if (avr_asm_only_p)
|
||||
error ("MCU `%s' supported for assembler only", avr_mcu_name);
|
||||
|
||||
output_file_directive (file, main_input_filename);
|
||||
fprintf (file, "\t.arch %s\n", avr_mcu_name);
|
||||
default_file_start ();
|
||||
|
||||
fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);
|
||||
fputs ("__SREG__ = 0x3f\n"
|
||||
"__SP_H__ = 0x3e\n"
|
||||
"__SP_L__ = 0x3d\n", file);
|
||||
"__SP_L__ = 0x3d\n", asm_out_file);
|
||||
|
||||
fputs ("__tmp_reg__ = 0\n"
|
||||
"__zero_reg__ = 1\n", file);
|
||||
"__zero_reg__ = 1\n", asm_out_file);
|
||||
|
||||
/* FIXME: output these only if there is anything in the .data / .bss
|
||||
sections - some code size could be saved by not linking in the
|
||||
initialization code from libgcc if one or both sections are empty. */
|
||||
fputs ("\t.global __do_copy_data\n", file);
|
||||
fputs ("\t.global __do_clear_bss\n", file);
|
||||
fputs ("\t.global __do_copy_data\n", asm_out_file);
|
||||
fputs ("\t.global __do_clear_bss\n", asm_out_file);
|
||||
|
||||
commands_in_file = 0;
|
||||
commands_in_prologues = 0;
|
||||
|
|
|
@ -1687,18 +1687,6 @@ progmem_section () \
|
|||
This macro is irrelevant if there is no separate readonly data
|
||||
section. */
|
||||
|
||||
#define ASM_FILE_START(STREAM) asm_file_start (STREAM)
|
||||
/* A C expression which outputs to the stdio stream STREAM some
|
||||
appropriate text to go at the start of an assembler file.
|
||||
|
||||
Normally this macro is defined to output a line containing
|
||||
`#NO_APP', which is a comment that has no effect on most
|
||||
assemblers but tells the GNU assembler that it can save time by not
|
||||
checking for certain assembler constructs.
|
||||
|
||||
On systems that use SDB, it is necessary to output certain
|
||||
commands; see `attasm.h'. */
|
||||
|
||||
#define ASM_COMMENT_START " ; "
|
||||
/* A C string constant describing how to begin a comment in the target
|
||||
assembler language. The compiler assumes that the comment will
|
||||
|
|
|
@ -185,6 +185,7 @@ static int c4x_valid_operands PARAMS ((enum rtx_code, rtx *,
|
|||
enum machine_mode, int));
|
||||
static int c4x_arn_reg_operand PARAMS ((rtx, enum machine_mode, unsigned int));
|
||||
static int c4x_arn_mem_operand PARAMS ((rtx, enum machine_mode, unsigned int));
|
||||
static void c4x_file_start PARAMS ((void));
|
||||
static void c4x_file_end PARAMS ((void));
|
||||
static void c4x_check_attribute PARAMS ((const char *, tree, tree, tree *));
|
||||
static int c4x_r11_set_p PARAMS ((rtx));
|
||||
|
@ -207,6 +208,10 @@ static int c4x_address_cost PARAMS ((rtx));
|
|||
#define TARGET_ASM_ALIGNED_HI_OP NULL
|
||||
#undef TARGET_ASM_ALIGNED_SI_OP
|
||||
#define TARGET_ASM_ALIGNED_SI_OP NULL
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START c4x_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END c4x_file_end
|
||||
|
||||
|
@ -4563,6 +4568,26 @@ c4x_external_ref (name)
|
|||
extern_head = p;
|
||||
}
|
||||
|
||||
/* We need to have a data section we can identify so that we can set
|
||||
the DP register back to a data pointer in the small memory model.
|
||||
This is only required for ISRs if we are paranoid that someone
|
||||
may have quietly changed this register on the sly. */
|
||||
static void
|
||||
c4x_file_start ()
|
||||
{
|
||||
int dspversion = 0;
|
||||
if (TARGET_C30) dspversion = 30;
|
||||
if (TARGET_C31) dspversion = 31;
|
||||
if (TARGET_C32) dspversion = 32;
|
||||
if (TARGET_C33) dspversion = 33;
|
||||
if (TARGET_C40) dspversion = 40;
|
||||
if (TARGET_C44) dspversion = 44;
|
||||
|
||||
default_file_start ();
|
||||
fprintf (asm_out_file, "\t.version\t%d\n", dspversion);
|
||||
fputs ("\n\t.data\ndata_sec:\n", asm_out_file);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
c4x_file_end ()
|
||||
|
|
|
@ -1548,35 +1548,6 @@ fini_section () \
|
|||
|
||||
|
||||
/* Overall Framework of an Assembler File. */
|
||||
/* We need to have a data section we can identify so that we can set
|
||||
the DP register back to a data pointer in the small memory model.
|
||||
This is only required for ISRs if we are paranoid that someone
|
||||
may have quietly changed this register on the sly. */
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
int dspversion = 0; \
|
||||
if (TARGET_C30) dspversion = 30; \
|
||||
if (TARGET_C31) dspversion = 31; \
|
||||
if (TARGET_C32) dspversion = 32; \
|
||||
if (TARGET_C33) dspversion = 33; \
|
||||
if (TARGET_C40) dspversion = 40; \
|
||||
if (TARGET_C44) dspversion = 44; \
|
||||
fprintf (FILE, "\t.version\t%d\n", dspversion); \
|
||||
fprintf (FILE, "\t.file\t"); \
|
||||
if (TARGET_TI) \
|
||||
{ \
|
||||
const char *p; \
|
||||
const char *after_dir = main_input_filename; \
|
||||
for (p = main_input_filename; *p; p++) \
|
||||
if (*p == '/') \
|
||||
after_dir = p + 1; \
|
||||
output_quoted_string (FILE, after_dir); \
|
||||
} \
|
||||
else \
|
||||
output_quoted_string (FILE, main_input_filename); \
|
||||
fputs ("\n\t.data\ndata_sec:\n", FILE); \
|
||||
}
|
||||
|
||||
#define ASM_COMMENT_START ";"
|
||||
|
||||
|
|
|
@ -105,6 +105,8 @@ static void cris_operand_lossage PARAMS ((const char *, rtx));
|
|||
static void cris_asm_output_mi_thunk
|
||||
PARAMS ((FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree));
|
||||
|
||||
static void cris_file_start PARAMS ((void));
|
||||
|
||||
static bool cris_rtx_costs PARAMS ((rtx, int, int, int *));
|
||||
static int cris_address_cost PARAMS ((rtx));
|
||||
|
||||
|
@ -162,6 +164,9 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION;
|
|||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START cris_file_start
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS cris_rtx_costs
|
||||
#undef TARGET_ADDRESS_COST
|
||||
|
@ -2761,6 +2766,24 @@ cris_asm_output_mi_thunk (stream, thunkdecl, delta, vcall_offset, funcdecl)
|
|||
}
|
||||
}
|
||||
|
||||
/* Boilerplate emitted at start of file.
|
||||
|
||||
NO_APP *only at file start* means faster assembly. It also means
|
||||
comments are not allowed. In some cases comments will be output
|
||||
for debugging purposes. Make sure they are allowed then.
|
||||
|
||||
We want a .file directive only if TARGET_ELF. */
|
||||
static void
|
||||
cris_file_start ()
|
||||
{
|
||||
/* These expressions can vary at run time, so we cannot put
|
||||
them into TARGET_INITIALIZER. */
|
||||
targetm.file_start_app_off = !(TARGET_PDEBUG || flag_print_asm_name);
|
||||
targetm.file_start_file_directive = TARGET_ELF;
|
||||
|
||||
default_file_start ();
|
||||
}
|
||||
|
||||
/* The EXPAND_BUILTIN_VA_ARG worker. This is modified from the
|
||||
"standard" implementation of va_arg: read the value from the current
|
||||
address and increment by the size of one or two registers. The
|
||||
|
|
|
@ -1392,24 +1392,6 @@ call_ ## FUNC (void) \
|
|||
|
||||
/* Node: File Framework */
|
||||
|
||||
/* NO_APP *only at file start* means faster assembly.
|
||||
It also means comments are not allowed.
|
||||
In some cases comments will be output for debugging purposes.
|
||||
Make sure they are allowed then. */
|
||||
/* Override previous definitions (elfos.h). */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do \
|
||||
{ \
|
||||
if (TARGET_PDEBUG || flag_print_asm_name) \
|
||||
fprintf ((STREAM), "#APP\n"); \
|
||||
else \
|
||||
fprintf ((STREAM), "#NO_APP\n"); \
|
||||
if (TARGET_ELF) \
|
||||
output_file_directive ((STREAM), main_input_filename); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* We don't want an .ident for gcc. To avoid that but still support
|
||||
#ident, we override ASM_OUTPUT_IDENT and, since the gcc .ident is its
|
||||
only use besides ASM_OUTPUT_IDENT, undef IDENT_ASM_OP from elfos.h. */
|
||||
|
|
|
@ -326,9 +326,8 @@ do { text_section (); \
|
|||
|
||||
/* Don't output a .file directive. That is only used by the assembler for
|
||||
error reporting. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE)
|
||||
#undef ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define ASM_FILE_START_FILE_DIRECTIVE false
|
||||
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END darwin_file_end
|
||||
|
|
|
@ -77,9 +77,6 @@ extern int initial_frame_pointer_offset PARAMS ((void));
|
|||
extern void asm_output_common PARAMS ((FILE *, const char *, int, int));
|
||||
extern void asm_output_local PARAMS ((FILE *, const char *, int, int));
|
||||
extern void asm_output_float PARAMS ((FILE *, double));
|
||||
extern void dsp16xx_file_start PARAMS ((void));
|
||||
extern void coff_dsp16xx_file_start PARAMS ((FILE *));
|
||||
extern void luxworks_dsp16xx_file_start PARAMS ((FILE *));
|
||||
extern bool dsp16xx_compare_gen;
|
||||
extern int hard_regno_mode_ok PARAMS ((int, enum machine_mode));
|
||||
extern enum reg_class dsp16xx_reg_class_from_letter PARAMS ((int));
|
||||
|
|
|
@ -151,6 +151,7 @@ static const char *const lshift_right_asm_first[] =
|
|||
static int reg_save_size PARAMS ((void));
|
||||
static void dsp16xx_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void dsp16xx_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void dsp16xx_file_start PARAMS ((void));
|
||||
static bool dsp16xx_rtx_costs PARAMS ((rtx, int, int, int *));
|
||||
static int dsp16xx_address_cost PARAMS ((rtx));
|
||||
|
||||
|
@ -168,6 +169,9 @@ static int dsp16xx_address_cost PARAMS ((rtx));
|
|||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE dsp16xx_output_function_epilogue
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START dsp16xx_file_start
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS dsp16xx_rtx_costs
|
||||
#undef TARGET_ADDRESS_COST
|
||||
|
@ -2373,49 +2377,10 @@ dsp16xx_function_arg_advance (cum, mode, type, named)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
coff_dsp16xx_file_start (file)
|
||||
FILE *file;
|
||||
static void
|
||||
dsp16xx_file_start ()
|
||||
{
|
||||
fprintf (file, "#include <%s.h>\n", save_chip_name);
|
||||
}
|
||||
|
||||
void
|
||||
luxworks_dsp16xx_file_start (file)
|
||||
FILE *file;
|
||||
{
|
||||
char *temp_filename;
|
||||
int len, err_code;
|
||||
|
||||
|
||||
fprintf (file, "\t.debug ");
|
||||
err_code = (TARGET_DEBUG) ? fprintf (file, "yes, ") : fprintf (file, "no, ");
|
||||
err_code = (TARGET_SAVE_TEMPS) ? fprintf (file, "asm, ") : fprintf (file, "temp, ");
|
||||
len = strlen (main_input_filename);
|
||||
temp_filename = (char *) xmalloc (len + 2);
|
||||
strcpy (temp_filename, main_input_filename);
|
||||
#ifdef __CYGWIN32__
|
||||
p = temp_filename;
|
||||
while (*p != '\0') {
|
||||
if (*p == '\\')
|
||||
*p = '/';
|
||||
p++;
|
||||
}
|
||||
#endif
|
||||
fprintf (file, "\"%s\"\n", temp_filename);
|
||||
|
||||
fprintf (file, "#include <%s.h>\n", save_chip_name);
|
||||
|
||||
/*
|
||||
* Add dummy sections, so that they always exist in the
|
||||
* object code. These have been created so that the number and
|
||||
* type of sections remain consistent with and without -g option. Note
|
||||
* that the .data, .text, .const and .bss are always created when -g
|
||||
* is provided as an option. */
|
||||
fprintf (file, "\t.rsect \".text\" , nodelete\n");
|
||||
fprintf (file, "\t.rsect \".data\" , nodelete\n");
|
||||
fprintf (file, "\t.rsect \".const\" , nodelete\n");
|
||||
fprintf (file, "\t.rsect \".bss\" , nodelete\n");
|
||||
fprintf (asm_out_file, "#include <%s.h>\n", save_chip_name);
|
||||
}
|
||||
|
||||
rtx
|
||||
|
|
|
@ -1487,9 +1487,6 @@ extern struct dsp16xx_frame_info current_frame_info;
|
|||
|
||||
/* THE OVERALL FRAMEWORK OF AN ASSEMBLER FILE */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
#define ASM_FILE_START(FILE) coff_dsp16xx_file_start (FILE)
|
||||
|
||||
/* A C string constant describing how to begin a comment in the target
|
||||
assembler language. */
|
||||
#define ASM_COMMENT_START ""
|
||||
|
|
|
@ -96,16 +96,9 @@ Boston, MA 02111-1307, USA. */
|
|||
#undef SET_ASM_OP
|
||||
#define SET_ASM_OP "\t.set\t"
|
||||
|
||||
/* This is how to begin an assembly language file. Most svr4 assemblers want
|
||||
at least a .file directive to come first, and some want to see a .version
|
||||
directive come right after that. Here we just establish a default
|
||||
which generates only the .file directive. If you need a .version
|
||||
directive for any specific target, you should override this definition
|
||||
in the target-specific file which includes this one. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
output_file_directive ((FILE), main_input_filename)
|
||||
/* Most svr4 assemblers want a .file directive at the beginning of
|
||||
their input file. */
|
||||
#define ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* This is how to allocate empty space in some section. The .zero
|
||||
pseudo-op is used for this on most svr4 assemblers. */
|
||||
|
|
|
@ -31,12 +31,6 @@
|
|||
%{pg:gcrti.o%s}%{!pg:crti.o%s} \
|
||||
crtbegin.o%s"
|
||||
|
||||
/* Output at beginning/end of assembler file. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
(output_file_directive ((FILE), main_input_filename), \
|
||||
asm_file_start (FILE))
|
||||
|
||||
#undef USER_LABEL_PREFIX
|
||||
#define USER_LABEL_PREFIX "_"
|
||||
|
||||
|
|
|
@ -94,7 +94,6 @@ extern int h8300_can_use_return_insn_p (void);
|
|||
extern void h8300_expand_prologue (void);
|
||||
extern void h8300_expand_epilogue (void);
|
||||
extern int h8300_current_function_interrupt_function_p (void);
|
||||
extern void asm_file_start (FILE *);
|
||||
extern int h8300_initial_elimination_offset (int, int);
|
||||
|
||||
struct cpp_reader;
|
||||
|
|
|
@ -655,29 +655,15 @@ h8300_current_function_interrupt_function_p (void)
|
|||
|
||||
/* Output assembly code for the start of the file. */
|
||||
|
||||
void
|
||||
asm_file_start (FILE *file)
|
||||
static void
|
||||
h8300_file_start (void)
|
||||
{
|
||||
fprintf (file, ";\tGCC For the Hitachi H8/300\n");
|
||||
fprintf (file, ";\tBy Hitachi America Ltd and Cygnus Support\n");
|
||||
default_file_start ();
|
||||
|
||||
if (optimize_size)
|
||||
fprintf (file, "; -Os\n");
|
||||
else if (optimize)
|
||||
fprintf (file, "; -O%d\n", optimize);
|
||||
if (TARGET_H8300H)
|
||||
if (TARGET_NORMAL_MODE)
|
||||
fprintf (file, "\n\t.h8300hn\n");
|
||||
else
|
||||
fprintf (file, "\n\t.h8300h\n");
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300hn\n" : "\t.h8300h\n", asm_out_file);
|
||||
else if (TARGET_H8300S)
|
||||
if (TARGET_NORMAL_MODE)
|
||||
fprintf (file, "\n\t.h8300sn\n");
|
||||
else
|
||||
fprintf (file, "\n\t.h8300s\n");
|
||||
else
|
||||
fprintf (file, "\n\n");
|
||||
output_file_directive (file, main_input_filename);
|
||||
fputs (TARGET_NORMAL_MODE ? "\t.h8300sn\n" : "\t.h8300s\n", asm_out_file);
|
||||
}
|
||||
|
||||
/* Output assembly language code for the end of file. */
|
||||
|
@ -4360,6 +4346,11 @@ byte_accesses_mergeable_p (rtx addr1, rtx addr2)
|
|||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE h8300_output_function_epilogue
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START h8300_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END h8300_file_end
|
||||
|
||||
|
|
|
@ -1030,10 +1030,6 @@ struct cum_arg
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning/end of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(FILE) asm_file_start (FILE)
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -107,6 +107,7 @@ static void i370_globalize_label PARAMS ((FILE *, const char *));
|
|||
#endif
|
||||
static void i370_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void i370_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void i370_file_start PARAMS ((void));
|
||||
static void i370_file_end PARAMS ((void));
|
||||
|
||||
#ifdef LONGEXTERNAL
|
||||
|
@ -320,6 +321,8 @@ static const unsigned char ebcasc[256] =
|
|||
#define TARGET_ASM_FUNCTION_PROLOGUE i370_output_function_prologue
|
||||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE i370_output_function_epilogue
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START i370_file_start
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END i370_file_end
|
||||
#undef TARGET_ASM_INTERNAL_LABEL
|
||||
|
@ -1602,6 +1605,12 @@ i370_output_function_epilogue (file, l)
|
|||
fprintf (file, "\tDC\tA(PG%d)\n", i);
|
||||
}
|
||||
|
||||
static void
|
||||
i370_file_start ()
|
||||
{
|
||||
fputs ("\tRMODE\tANY\n\tCSECT\n", asm_out_file);
|
||||
}
|
||||
|
||||
static void
|
||||
i370_file_end ()
|
||||
{
|
||||
|
|
|
@ -1029,10 +1029,6 @@ enum reg_class
|
|||
"0", "2", "4", "6" \
|
||||
}
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ fputs ("\tRMODE\tANY\n", FILE); \
|
||||
fputs ("\tCSECT\n", FILE); }
|
||||
|
||||
#define ASM_COMMENT_START "*"
|
||||
#define ASM_APP_OFF ""
|
||||
#define ASM_APP_ON ""
|
||||
|
|
|
@ -45,14 +45,7 @@ do \
|
|||
} while (0)
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
/* The .file command should always begin the output. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
if (ix86_asm_dialect == ASM_INTEL) \
|
||||
fputs ("\t.intel_syntax\n", FILE); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* This is how to output an assembler line
|
||||
that says to advance the location counter
|
||||
|
|
|
@ -121,12 +121,4 @@ Boston, MA 02111-1307, USA. */
|
|||
/* Print opcodes the way that GAS expects them. */
|
||||
#define GAS_MNEMONICS 1
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
/* The .file command should always begin the output. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
if (ix86_asm_dialect == ASM_INTEL) \
|
||||
fputs ("\t.intel_syntax\n", FILE); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
|
|
@ -92,16 +92,8 @@ Boston, MA 02111-1307, USA. */
|
|||
/* The global __fltused is necessary to cause the printf/scanf routines
|
||||
for outputting/inputting floating point numbers to be loaded. Since this
|
||||
is kind of hard to detect, we just do it all the time. */
|
||||
|
||||
#ifdef ASM_FILE_START
|
||||
#undef ASM_FILE_START
|
||||
#endif
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { fprintf (FILE, "\t.file\t"); \
|
||||
output_quoted_string (FILE, dump_base_name); \
|
||||
fprintf (FILE, "\n"); \
|
||||
fprintf (FILE, ".global\t__fltused\n"); \
|
||||
} while (0)
|
||||
#undef X86_FILE_START_FLTUSED
|
||||
#define X86_FILE_START_FLTUSED 1
|
||||
|
||||
/* A table of bytes codes used by the ASM_OUTPUT_ASCII and
|
||||
ASM_OUTPUT_LIMITED_STRING macros. Each byte in the table
|
||||
|
|
|
@ -829,6 +829,7 @@ static void x86_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
|
|||
HOST_WIDE_INT, tree));
|
||||
static bool x86_can_output_mi_thunk PARAMS ((tree, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, tree));
|
||||
static void x86_file_start PARAMS ((void));
|
||||
static void ix86_reorg PARAMS ((void));
|
||||
bool ix86_expand_carry_flag_compare PARAMS ((enum rtx_code, rtx, rtx, rtx*));
|
||||
|
||||
|
@ -1006,6 +1007,9 @@ static void init_ext_80387_constants PARAMS ((void));
|
|||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK x86_can_output_mi_thunk
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START x86_file_start
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS ix86_rtx_costs
|
||||
#undef TARGET_ADDRESS_COST
|
||||
|
@ -15532,6 +15536,18 @@ x86_output_mi_thunk (file, thunk, delta, vcall_offset, function)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
x86_file_start ()
|
||||
{
|
||||
default_file_start ();
|
||||
if (X86_FILE_START_VERSION_DIRECTIVE)
|
||||
fputs ("\t.version\t\"01.01\"\n", asm_out_file);
|
||||
if (X86_FILE_START_FLTUSED)
|
||||
fputs ("\t.global\t__fltused\n", asm_out_file);
|
||||
if (ix86_asm_dialect == ASM_INTEL)
|
||||
fputs ("\t.intel_syntax\n", asm_out_file);
|
||||
}
|
||||
|
||||
int
|
||||
x86_field_alignment (field, computed)
|
||||
tree field;
|
||||
|
|
|
@ -3229,6 +3229,10 @@ struct machine_function GTY(())
|
|||
#define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
|
||||
#define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching)
|
||||
|
||||
/* Control behavior of x86_file_start. */
|
||||
#define X86_FILE_START_VERSION_DIRECTIVE false
|
||||
#define X86_FILE_START_FLTUSED false
|
||||
|
||||
/*
|
||||
Local variables:
|
||||
version-control: t
|
||||
|
|
|
@ -25,13 +25,7 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
/* Output at beginning of assembler file. */
|
||||
/* The .file command should always begin the output. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
if (ix86_asm_dialect == ASM_INTEL) \
|
||||
fputs ("\t.intel_syntax\n", FILE); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (i386 Linux/ELF)");
|
||||
|
||||
|
|
|
@ -44,12 +44,9 @@ Boston, MA 02111-1307, USA. */
|
|||
#define CTORS_SECTION_ASM_OP "\t.section\t.ctors, \"aw\""
|
||||
#define DTORS_SECTION_ASM_OP "\t.section\t.dtors, \"aw\""
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive((FILE),main_input_filename); \
|
||||
fprintf ((FILE), "\t.version\t\"01.01\"\n"); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#undef X86_FILE_START_VERSION_DIRECTIVE
|
||||
#define X86_FILE_START_VERSION_DIRECTIVE true
|
||||
|
||||
/* A C statement (sans semicolon) to output to the stdio stream
|
||||
FILE the assembler definition of uninitialized global DECL named
|
||||
|
|
|
@ -34,12 +34,9 @@ Boston, MA 02111-1307, USA. */
|
|||
/* Output at beginning of assembler file. */
|
||||
/* The .file command should always begin the output. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
fprintf (FILE, "\t.version\t\"01.01\"\n"); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#undef X86_FILE_START_VERSION_DIRECTIVE
|
||||
#define X86_FILE_START_VERSION_DIRECTIVE true
|
||||
|
||||
#undef DBX_REGISTER_NUMBER
|
||||
#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
|
||||
|
|
|
@ -32,9 +32,8 @@ Boston, MA 02111-1307, USA. */
|
|||
use the standard definition of LIB_SPEC. */
|
||||
#undef LIB_SPEC
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
output_file_directive ((FILE), main_input_filename)
|
||||
/* Emit a .file directive. */
|
||||
#define ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* Support the ctors and dtors sections for g++. */
|
||||
|
||||
|
|
|
@ -1161,10 +1161,6 @@ extern struct rtx_def *i960_compare_op0, *i960_compare_op1;
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(file)
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ extern int ia64_register_move_cost PARAMS((enum machine_mode, enum reg_class,
|
|||
enum reg_class));
|
||||
extern int ia64_epilogue_uses PARAMS((int));
|
||||
extern int ia64_eh_uses PARAMS((int));
|
||||
extern void emit_safe_across_calls PARAMS((FILE *));
|
||||
extern void emit_safe_across_calls PARAMS((void));
|
||||
extern void ia64_init_builtins PARAMS((void));
|
||||
extern void ia64_override_options PARAMS((void));
|
||||
extern int ia64_dbx_register_number PARAMS((int));
|
||||
|
|
|
@ -241,6 +241,7 @@ static void bundling PARAMS ((FILE *, int, rtx, rtx));
|
|||
|
||||
static void ia64_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, tree));
|
||||
static void ia64_file_start PARAMS ((void));
|
||||
|
||||
static void ia64_select_rtx_section PARAMS ((enum machine_mode, rtx,
|
||||
unsigned HOST_WIDE_INT));
|
||||
|
@ -356,6 +357,9 @@ static const struct attribute_spec ia64_attribute_table[] =
|
|||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START ia64_file_start
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS ia64_rtx_costs
|
||||
#undef TARGET_ADDRESS_COST
|
||||
|
@ -1608,9 +1612,15 @@ ia64_split_call (retval, addr, retaddr, scratch_r, scratch_b,
|
|||
|
||||
/* Begin the assembly file. */
|
||||
|
||||
static void
|
||||
ia64_file_start ()
|
||||
{
|
||||
default_file_start ();
|
||||
emit_safe_across_calls ();
|
||||
}
|
||||
|
||||
void
|
||||
emit_safe_across_calls (f)
|
||||
FILE *f;
|
||||
emit_safe_across_calls ()
|
||||
{
|
||||
unsigned int rs, re;
|
||||
int out_state;
|
||||
|
@ -1627,19 +1637,19 @@ emit_safe_across_calls (f)
|
|||
continue;
|
||||
if (out_state == 0)
|
||||
{
|
||||
fputs ("\t.pred.safe_across_calls ", f);
|
||||
fputs ("\t.pred.safe_across_calls ", asm_out_file);
|
||||
out_state = 1;
|
||||
}
|
||||
else
|
||||
fputc (',', f);
|
||||
fputc (',', asm_out_file);
|
||||
if (re == rs + 1)
|
||||
fprintf (f, "p%u", rs);
|
||||
fprintf (asm_out_file, "p%u", rs);
|
||||
else
|
||||
fprintf (f, "p%u-p%u", rs, re - 1);
|
||||
fprintf (asm_out_file, "p%u-p%u", rs, re - 1);
|
||||
rs = re + 1;
|
||||
}
|
||||
if (out_state)
|
||||
fputc ('\n', f);
|
||||
fputc ('\n', asm_out_file);
|
||||
}
|
||||
|
||||
/* Helper function for ia64_compute_frame_size: find an appropriate general
|
||||
|
|
|
@ -1456,11 +1456,6 @@ do { \
|
|||
|
||||
#define EH_USES(REGNO) ia64_eh_uses (REGNO)
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
emit_safe_across_calls (FILE)
|
||||
|
||||
/* Output part N of a function descriptor for DECL. For ia64, both
|
||||
words are emitted with a single relocation, so ignore N > 0. */
|
||||
#define ASM_OUTPUT_FDESC(FILE, DECL, PART) \
|
||||
|
|
|
@ -5432,7 +5432,7 @@
|
|||
[(unspec_volatile [(const_int 0)] UNSPECV_PSAC_NORMAL)]
|
||||
""
|
||||
{
|
||||
emit_safe_across_calls (asm_out_file);
|
||||
emit_safe_across_calls ();
|
||||
return "";
|
||||
}
|
||||
[(set_attr "itanium_class" "ignore")
|
||||
|
|
|
@ -117,26 +117,6 @@ do { \
|
|||
fputc ('\n', FILE); \
|
||||
} while (0)
|
||||
|
||||
/* A C expression which outputs to the stdio stream STREAM some appropriate
|
||||
text to go at the start of an assembler file. */
|
||||
|
||||
/* ??? Looks like almost every port, except for a few original ones, get this
|
||||
wrong. Must emit #NO_APP as first line of file to turn of special assembler
|
||||
preprocessing of files. */
|
||||
|
||||
/* ??? Even worse, it doesn't work, because gas does not accept the tab chars
|
||||
that dwarf2out.c emits when #NO_APP. */
|
||||
|
||||
/* ??? Unrelated, but dwarf2out.c emits unnecessary newlines after strings,
|
||||
may as well fix at the same time. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do { \
|
||||
output_file_directive (STREAM, main_input_filename); \
|
||||
emit_safe_across_calls (STREAM); \
|
||||
} while (0)
|
||||
|
||||
/* Override default elf definition. */
|
||||
#undef TARGET_ASM_SELECT_RTX_SECTION
|
||||
#define TARGET_ASM_SELECT_RTX_SECTION ia64_select_rtx_section
|
||||
|
|
|
@ -30,7 +30,6 @@ extern unsigned m32r_compute_frame_size PARAMS ((int));
|
|||
extern int m32r_first_insn_address PARAMS ((void));
|
||||
extern void m32r_expand_prologue PARAMS ((void));
|
||||
extern void m32r_finalize_pic PARAMS ((void));
|
||||
extern void m32r_asm_file_start PARAMS ((FILE *));
|
||||
extern int direct_return PARAMS ((void));
|
||||
#ifdef TREE_CODE
|
||||
extern enum m32r_function_type m32r_compute_function_type PARAMS ((tree));
|
||||
|
|
|
@ -77,6 +77,8 @@ static tree m32r_handle_model_attribute PARAMS ((tree *, tree, tree, int, bool
|
|||
static void m32r_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void m32r_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
|
||||
static void m32r_file_start PARAMS ((void));
|
||||
|
||||
static int m32r_adjust_cost PARAMS ((rtx, rtx, rtx, int));
|
||||
static int m32r_adjust_priority PARAMS ((rtx, int));
|
||||
static void m32r_sched_init PARAMS ((FILE *, int, int));
|
||||
|
@ -103,6 +105,9 @@ static bool m32r_rtx_costs PARAMS ((rtx, int, int, int *));
|
|||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE m32r_output_function_epilogue
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START m32r_file_start
|
||||
|
||||
#undef TARGET_SCHED_ADJUST_COST
|
||||
#define TARGET_SCHED_ADJUST_COST m32r_adjust_cost
|
||||
#undef TARGET_SCHED_ADJUST_PRIORITY
|
||||
|
@ -2215,15 +2220,13 @@ m32r_initialize_trampoline (tramp, fnaddr, cxt)
|
|||
{
|
||||
}
|
||||
|
||||
/* Set the cpu type and print out other fancy things,
|
||||
at the top of the file. */
|
||||
|
||||
void
|
||||
m32r_asm_file_start (file)
|
||||
FILE * file;
|
||||
static void
|
||||
m32r_file_start ()
|
||||
{
|
||||
default_file_start ();
|
||||
|
||||
if (flag_verbose_asm)
|
||||
fprintf (file,
|
||||
fprintf (asm_out_file,
|
||||
"%s M32R/D special options: -G " HOST_WIDE_INT_PRINT_UNSIGNED "\n",
|
||||
ASM_COMMENT_START, g_switch_value);
|
||||
}
|
||||
|
|
|
@ -30,7 +30,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#undef PTRDIFF_TYPE
|
||||
#undef WCHAR_TYPE
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#undef ASM_FILE_START
|
||||
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
|
||||
#undef TARGET_VERSION
|
||||
#undef CPP_SPEC
|
||||
|
@ -1517,9 +1516,6 @@ do { \
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
#define ASM_FILE_START(FILE) m32r_asm_file_start (FILE)
|
||||
|
||||
/* A C string constant describing how to begin a comment in the target
|
||||
assembler language. The compiler assumes that the comment will
|
||||
end at the end of the line. */
|
||||
|
|
|
@ -33,8 +33,6 @@ extern int m68hc11_initial_elimination_offset PARAMS((int, int));
|
|||
extern void expand_prologue PARAMS((void));
|
||||
extern void expand_epilogue PARAMS((void));
|
||||
|
||||
extern void m68hc11_asm_file_start PARAMS((FILE*, const char*));
|
||||
|
||||
#ifdef TREE_CODE
|
||||
extern void m68hc11_function_arg_advance PARAMS((CUMULATIVE_ARGS*,
|
||||
enum machine_mode,
|
||||
|
|
|
@ -58,7 +58,6 @@ Note:
|
|||
#include "target.h"
|
||||
#include "target-def.h"
|
||||
|
||||
static void print_options PARAMS ((FILE *));
|
||||
static void emit_move_after_reload PARAMS ((rtx, rtx, rtx));
|
||||
static rtx simplify_logical PARAMS ((enum machine_mode, int, rtx, rtx *));
|
||||
static void m68hc11_emit_logical PARAMS ((enum machine_mode, int, rtx *));
|
||||
|
@ -82,6 +81,7 @@ static void asm_print_register PARAMS ((FILE *, int));
|
|||
static void m68hc11_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
|
||||
static void m68hc11_asm_out_constructor PARAMS ((rtx, int));
|
||||
static void m68hc11_asm_out_destructor PARAMS ((rtx, int));
|
||||
static void m68hc11_file_start PARAMS ((void));
|
||||
static void m68hc11_encode_section_info PARAMS((tree, rtx, int));
|
||||
static int autoinc_mode PARAMS((rtx));
|
||||
static int m68hc11_make_autoinc_notes PARAMS((rtx *, void *));
|
||||
|
@ -230,6 +230,11 @@ static int nb_soft_regs;
|
|||
#undef TARGET_ASM_FUNCTION_EPILOGUE
|
||||
#define TARGET_ASM_FUNCTION_EPILOGUE m68hc11_output_function_epilogue
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START m68hc11_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef TARGET_ENCODE_SECTION_INFO
|
||||
#define TARGET_ENCODE_SECTION_INFO m68hc11_encode_section_info
|
||||
|
||||
|
@ -5660,62 +5665,12 @@ m68hc11_rtx_costs (x, code, outer_code, total)
|
|||
}
|
||||
|
||||
|
||||
/* print_options - called at the start of the code generation for a
|
||||
module. */
|
||||
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
static void
|
||||
print_options (out)
|
||||
FILE *out;
|
||||
m68hc11_file_start ()
|
||||
{
|
||||
const char *a_time;
|
||||
long c_time;
|
||||
int i;
|
||||
extern int save_argc;
|
||||
extern char **save_argv;
|
||||
|
||||
fprintf (out, ";;; Command:\t");
|
||||
for (i = 0; i < save_argc; i++)
|
||||
{
|
||||
fprintf (out, "%s", save_argv[i]);
|
||||
if (i + 1 < save_argc)
|
||||
fprintf (out, " ");
|
||||
}
|
||||
fprintf (out, "\n");
|
||||
c_time = time (0);
|
||||
a_time = ctime (&c_time);
|
||||
fprintf (out, ";;; Compiled:\t%s", a_time);
|
||||
#ifdef __GNUC__
|
||||
#ifndef __VERSION__
|
||||
#define __VERSION__ "[unknown]"
|
||||
#endif
|
||||
fprintf (out, ";;; (META)compiled by GNU C version %s.\n", __VERSION__);
|
||||
#else
|
||||
fprintf (out, ";;; (META)compiled by CC.\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
m68hc11_asm_file_start (out, main_file)
|
||||
FILE *out;
|
||||
const char *main_file;
|
||||
{
|
||||
fprintf (out, ";;;-----------------------------------------\n");
|
||||
fprintf (out, ";;; Start %s gcc assembly output\n",
|
||||
TARGET_M6811
|
||||
? "MC68HC11"
|
||||
: TARGET_M68S12 ? "MC68HCS12" : "MC68HC12");
|
||||
fprintf (out, ";;; gcc compiler %s\n", version_string);
|
||||
print_options (out);
|
||||
fprintf (out, ";;;-----------------------------------------\n");
|
||||
output_file_directive (out, main_file);
|
||||
|
||||
if (TARGET_SHORT)
|
||||
fprintf (out, "\t.mode mshort\n");
|
||||
else
|
||||
fprintf (out, "\t.mode mlong\n");
|
||||
default_file_start ();
|
||||
|
||||
fprintf (asm_out_file, "\t.mode %s\n", TARGET_SHORT ? "mshort" : "mlong");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1511,17 +1511,6 @@ do { \
|
|||
#define TARGET_ASM_CONSTRUCTOR m68hc11_asm_out_constructor
|
||||
#define TARGET_ASM_DESTRUCTOR m68hc11_asm_out_destructor
|
||||
|
||||
/* This is how to begin an assembly language file. Most svr4 assemblers want
|
||||
at least a .file directive to come first, and some want to see a .version
|
||||
directive come right after that. Here we just establish a default
|
||||
which generates only the .file directive. If you need a .version
|
||||
directive for any specific target, you should override this definition
|
||||
in the target-specific file which includes this one. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
m68hc11_asm_file_start ((FILE), main_input_filename)
|
||||
|
||||
/* Comment character */
|
||||
#define ASM_COMMENT_START ";"
|
||||
|
||||
|
|
|
@ -76,9 +76,7 @@ Boston, MA 02111-1307, USA. */
|
|||
"%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp", \
|
||||
"%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7" }
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
output_file_directive ((FILE), main_input_filename)
|
||||
#define ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* If defined, a C expression whose value is a string containing the
|
||||
assembler operation to identify the following data as uninitialized global
|
||||
|
|
|
@ -112,7 +112,6 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
#endif /* default is -msoft-float */
|
||||
|
||||
|
||||
/* -m68000 requires special flags to the assembler. */
|
||||
#define ASM_SPEC \
|
||||
"%{m68000:-mc68000}%{mc68000:-mc68000}%{!mc68000:%{!m68000:-mc68020}}"
|
||||
|
@ -168,7 +167,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#undef REGISTER_NAMES
|
||||
#undef ASM_OUTPUT_REG_PUSH
|
||||
#undef ASM_OUTPUT_REG_POP
|
||||
#undef ASM_FILE_START
|
||||
#undef ASM_APP_ON
|
||||
#undef ASM_APP_OFF
|
||||
#undef TEXT_SECTION_ASM_OP
|
||||
|
@ -211,16 +209,7 @@ Boston, MA 02111-1307, USA. */
|
|||
fprintf (FILE, "\tmov.l (%%sp)+,%s\n", reg_names[REGNO])
|
||||
|
||||
/* For HPUX versions before 6.5, define this macro as empty. */
|
||||
#define ASM_FILE_START(FILE) \
|
||||
if (TARGET_68020) \
|
||||
{ \
|
||||
if (TARGET_68881) \
|
||||
fprintf (FILE, "\tversion 3\n"); /* 68020 fp regs saved */ \
|
||||
else \
|
||||
fprintf (FILE, "\tversion 2\n"); /* 68020 no fp regs saved */ \
|
||||
} \
|
||||
else \
|
||||
fprintf (FILE, "\tversion 1\n"); /* 68010 */
|
||||
#define TARGET_ASM_FILE_START m68k_hp320_file_start
|
||||
|
||||
#define ASM_APP_ON ""
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ static void m68k_svr3_asm_out_constructor PARAMS ((rtx, int));
|
|||
#endif
|
||||
#ifdef HPUX_ASM
|
||||
static void m68k_hp320_internal_label PARAMS ((FILE *, const char *, unsigned long));
|
||||
static void m68k_hp320_file_start PARAMS ((void));
|
||||
#endif
|
||||
static void m68k_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, tree));
|
||||
|
@ -131,6 +132,9 @@ int m68k_last_compare_had_fp_operands;
|
|||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
|
||||
|
||||
#undef TARGET_ASM_FILE_START_APP_OFF
|
||||
#define TARGET_ASM_FILE_START_APP_OFF true
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS m68k_rtx_costs
|
||||
|
||||
|
@ -3663,6 +3667,16 @@ m68k_hp320_internal_label (stream, prefix, labelno)
|
|||
else
|
||||
fprintf (stream, "%s%ld:\n", prefix, labelno);
|
||||
}
|
||||
|
||||
static void
|
||||
m68k_hp320_file_start ()
|
||||
{
|
||||
/* version 1: 68010.
|
||||
2: 68020 without FPU.
|
||||
3: 68020 with FPU. */
|
||||
fprintf (asm_out_file, "\tversion %d\n",
|
||||
TARGET_68020 ? (TARGET_68881 ? 3 : 2) : 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
|
|
|
@ -1292,11 +1292,6 @@ __transfer_from_trampoline () \
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
fprintf (FILE, "#NO_APP\n");
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -105,15 +105,7 @@ drectve_section () \
|
|||
} \
|
||||
while (0);
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
do \
|
||||
{ \
|
||||
fprintf (STREAM, "%s Generated by gcc %s for MCore/pe\n", \
|
||||
ASM_COMMENT_START, version_string); \
|
||||
output_file_directive ((STREAM), main_input_filename); \
|
||||
} \
|
||||
while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef ASM_OUTPUT_SOURCE_LINE
|
||||
#define ASM_OUTPUT_SOURCE_LINE(FILE, LINE, COUNTER) \
|
||||
|
|
|
@ -356,8 +356,6 @@ current_section_flags () \
|
|||
/* SGI assembler needs all sorts of extra help to do alignment properly. */
|
||||
#undef ASM_OUTPUT_ALIGN
|
||||
#define ASM_OUTPUT_ALIGN iris6_asm_output_align
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START iris6_asm_file_start
|
||||
|
||||
#undef MAX_OFILE_ALIGNMENT
|
||||
#define MAX_OFILE_ALIGNMENT (32768*8)
|
||||
|
|
|
@ -28,8 +28,6 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
extern HOST_WIDE_INT compute_frame_size PARAMS ((HOST_WIDE_INT));
|
||||
extern int mips_initial_elimination_offset PARAMS ((int, int));
|
||||
extern void mips_asm_file_start PARAMS ((FILE *));
|
||||
extern void iris6_asm_file_start PARAMS ((FILE *));
|
||||
extern void iris6_asm_output_align PARAMS ((FILE *, unsigned));
|
||||
extern const char * current_section_name PARAMS ((void));
|
||||
extern unsigned int current_section_flags PARAMS ((void));
|
||||
|
|
|
@ -276,6 +276,7 @@ static void iris6_asm_named_section PARAMS ((const char *,
|
|||
static int iris_section_align_entry_eq PARAMS ((const void *, const void *));
|
||||
static hashval_t iris_section_align_entry_hash PARAMS ((const void *));
|
||||
static int iris6_section_align_1 PARAMS ((void **, void *));
|
||||
static void iris6_file_start PARAMS ((void));
|
||||
static void iris6_file_end PARAMS ((void));
|
||||
#endif
|
||||
static int mips_adjust_cost PARAMS ((rtx, rtx, rtx, int));
|
||||
|
@ -292,6 +293,7 @@ static int mips_use_dfa_pipeline_interface PARAMS ((void));
|
|||
static bool mips_rtx_costs PARAMS ((rtx, int, int, int *));
|
||||
static int mips_address_cost PARAMS ((rtx));
|
||||
static void mips_encode_section_info PARAMS ((tree, rtx, int));
|
||||
static void mips_file_start PARAMS ((void));
|
||||
static void mips_file_end PARAMS ((void));
|
||||
|
||||
/* Structure to be filled in by compute_frame_size with register
|
||||
|
@ -875,12 +877,17 @@ const struct mips_cpu_info mips_cpu_info_table[] = {
|
|||
#undef TARGET_MACHINE_DEPENDENT_REORG
|
||||
#define TARGET_MACHINE_DEPENDENT_REORG mips_reorg
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#ifdef TARGET_IRIX6
|
||||
#define TARGET_ASM_FILE_START iris6_file_start
|
||||
#define TARGET_ASM_FILE_END iris6_file_end
|
||||
#else
|
||||
#define TARGET_ASM_FILE_START mips_file_start
|
||||
#define TARGET_ASM_FILE_END mips_file_end
|
||||
#endif
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||
|
||||
|
@ -6101,11 +6108,10 @@ mips_output_ascii (stream, string_param, len)
|
|||
relevant .comm/.lcomm/.extern/.sdata declaration when the code is
|
||||
processed, it generates a two instruction sequence. */
|
||||
|
||||
void
|
||||
mips_asm_file_start (stream)
|
||||
FILE *stream;
|
||||
static void
|
||||
mips_file_start ()
|
||||
{
|
||||
ASM_OUTPUT_SOURCE_FILENAME (stream, main_input_filename);
|
||||
default_file_start ();
|
||||
|
||||
/* Versions of the MIPS assembler before 2.20 generate errors if a branch
|
||||
inside of a .set noreorder section jumps to a label outside of the .set
|
||||
|
@ -6113,7 +6119,7 @@ mips_asm_file_start (stream)
|
|||
fixing the bug. */
|
||||
|
||||
if (TARGET_MIPS_AS && optimize && flag_delayed_branch)
|
||||
fprintf (stream, "\t.set\tnobopt\n");
|
||||
fprintf (asm_out_file, "\t.set\tnobopt\n");
|
||||
|
||||
if (TARGET_GAS)
|
||||
{
|
||||
|
@ -6141,28 +6147,26 @@ mips_asm_file_start (stream)
|
|||
because in this way we can avoid creating an allocated section. We
|
||||
do not want this section to take up any space in the running
|
||||
executable. */
|
||||
fprintf (stream, "\t.section .mdebug.%s\n", abi_string);
|
||||
fprintf (asm_out_file, "\t.section .mdebug.%s\n", abi_string);
|
||||
|
||||
/* Restore the default section. */
|
||||
fprintf (stream, "\t.previous\n");
|
||||
fprintf (asm_out_file, "\t.previous\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Generate the pseudo ops that System V.4 wants. */
|
||||
#ifndef ABICALLS_ASM_OP
|
||||
#define ABICALLS_ASM_OP "\t.abicalls"
|
||||
#endif
|
||||
if (TARGET_ABICALLS)
|
||||
/* ??? but do not want this (or want pic0) if -non-shared? */
|
||||
fprintf (stream, "%s\n", ABICALLS_ASM_OP);
|
||||
fprintf (asm_out_file, "%s\n", ABICALLS_ASM_OP);
|
||||
|
||||
if (TARGET_MIPS16)
|
||||
fprintf (stream, "\t.set\tmips16\n");
|
||||
fprintf (asm_out_file, "\t.set\tmips16\n");
|
||||
|
||||
if (flag_verbose_asm)
|
||||
fprintf (stream, "\n%s -G value = %d, Arch = %s, ISA = %d\n",
|
||||
fprintf (asm_out_file, "\n%s -G value = %d, Arch = %s, ISA = %d\n",
|
||||
ASM_COMMENT_START,
|
||||
mips_section_threshold, mips_arch_info->name, mips_isa);
|
||||
}
|
||||
|
@ -10336,15 +10340,13 @@ iris6_asm_output_align (file, log)
|
|||
switching games so that we can emit a .section directive at the
|
||||
beginning of the file with the proper alignment attached. */
|
||||
|
||||
void
|
||||
iris6_asm_file_start (stream)
|
||||
FILE *stream;
|
||||
static void
|
||||
iris6_file_start ()
|
||||
{
|
||||
mips_asm_file_start (stream);
|
||||
mips_file_start ();
|
||||
|
||||
iris_orig_asm_out_file = asm_out_file;
|
||||
stream = tmpfile ();
|
||||
asm_out_file = stream;
|
||||
asm_out_file = tmpfile ();
|
||||
|
||||
iris_section_align_htab = htab_create (31, iris_section_align_entry_hash,
|
||||
iris_section_align_entry_eq, NULL);
|
||||
|
|
|
@ -3276,17 +3276,6 @@ typedef struct mips_args {
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file.
|
||||
If we are optimizing to use the global pointer, create a temporary
|
||||
file to hold all of the text stuff, and write it out to the end.
|
||||
This is needed because the MIPS assembler is evidently one pass,
|
||||
and if it hasn't seen the relevant .comm/.lcomm/.extern/.sdata
|
||||
declaration when the code is processed, it generates a two
|
||||
instruction sequence. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(STREAM) mips_asm_file_start (STREAM)
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ extern int mmix_register_move_cost
|
|||
PARAMS ((enum machine_mode, enum reg_class, enum reg_class));
|
||||
extern const char *mmix_text_section_asm_op PARAMS ((void));
|
||||
extern const char *mmix_data_section_asm_op PARAMS ((void));
|
||||
extern void mmix_asm_file_start PARAMS ((FILE *));
|
||||
extern void mmix_asm_output_source_filename PARAMS ((FILE *, const char *));
|
||||
extern void mmix_output_quoted_string PARAMS ((FILE *, const char *, int));
|
||||
extern void mmix_asm_output_source_line PARAMS ((FILE *, int));
|
||||
|
|
|
@ -135,6 +135,7 @@ static void mmix_target_asm_function_epilogue
|
|||
static void mmix_reorg PARAMS ((void));
|
||||
static void mmix_asm_output_mi_thunk
|
||||
PARAMS ((FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, tree));
|
||||
static void mmix_file_start PARAMS ((void));
|
||||
static void mmix_file_end PARAMS ((void));
|
||||
static bool mmix_rtx_costs
|
||||
PARAMS ((rtx, int, int, int *));
|
||||
|
@ -174,6 +175,10 @@ static bool mmix_rtx_costs
|
|||
#define TARGET_ASM_OUTPUT_MI_THUNK mmix_asm_output_mi_thunk
|
||||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START mmix_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
#undef TARGET_ASM_FILE_END
|
||||
#define TARGET_ASM_FILE_END mmix_file_end
|
||||
|
||||
|
@ -1297,17 +1302,15 @@ mmix_strip_name_encoding (name)
|
|||
return name;
|
||||
}
|
||||
|
||||
/* ASM_FILE_START. */
|
||||
/* TARGET_ASM_FILE_START.
|
||||
We just emit a little comment for the time being. */
|
||||
|
||||
void
|
||||
mmix_asm_file_start (stream)
|
||||
FILE * stream;
|
||||
static void
|
||||
mmix_file_start ()
|
||||
{
|
||||
/* We just emit a little comment for the time being. FIXME: Perhaps add
|
||||
-mstandalone and some segment and prefix setup here. */
|
||||
ASM_OUTPUT_SOURCE_FILENAME (stream, main_input_filename);
|
||||
default_file_start ();
|
||||
|
||||
fprintf (stream, "! mmixal:= 8H LOC Data_Section\n");
|
||||
fputs ("! mmixal:= 8H LOC Data_Section\n", asm_out_file);
|
||||
|
||||
/* Make sure each file starts with the text section. */
|
||||
text_section ();
|
||||
|
|
|
@ -919,9 +919,6 @@ typedef struct { int regs; int lib; } CUMULATIVE_ARGS;
|
|||
|
||||
/* Node: File Framework */
|
||||
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
mmix_asm_file_start (STREAM)
|
||||
|
||||
/* While any other punctuation character but ";" would do, we prefer "%"
|
||||
or "!"; "!" is an unary operator and so will not be mistakenly included
|
||||
in correctly formed expressions. The hash character adds mass; catches
|
||||
|
|
|
@ -53,7 +53,6 @@ extern struct rtx_def *mn10300_va_arg PARAMS ((tree, tree));
|
|||
#endif /* TREE_CODE */
|
||||
|
||||
extern struct rtx_def *mn10300_builtin_saveregs PARAMS ((void));
|
||||
extern void asm_file_start PARAMS ((FILE *));
|
||||
extern void expand_prologue PARAMS ((void));
|
||||
extern void expand_epilogue PARAMS ((void));
|
||||
extern int initial_offset PARAMS ((int, int));
|
||||
|
|
|
@ -58,6 +58,7 @@ Boston, MA 02111-1307, USA. */
|
|||
static int mn10300_address_cost_1 PARAMS ((rtx, int *));
|
||||
static int mn10300_address_cost PARAMS ((rtx));
|
||||
static bool mn10300_rtx_costs PARAMS ((rtx, int, int, int *));
|
||||
static void mn10300_file_start PARAMS ((void));
|
||||
|
||||
|
||||
/* Initialize the GCC target structure. */
|
||||
|
@ -69,21 +70,20 @@ static bool mn10300_rtx_costs PARAMS ((rtx, int, int, int *));
|
|||
#undef TARGET_ADDRESS_COST
|
||||
#define TARGET_ADDRESS_COST mn10300_address_cost
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START mn10300_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||
|
||||
void
|
||||
asm_file_start (file)
|
||||
FILE *file;
|
||||
static void
|
||||
mn10300_file_start ()
|
||||
{
|
||||
fprintf (file, "#\tGCC For the Matsushita MN10300\n");
|
||||
if (optimize)
|
||||
fprintf (file, "# -O%d\n", optimize);
|
||||
else
|
||||
fprintf (file, "\n\n");
|
||||
default_file_start ();
|
||||
|
||||
if (TARGET_AM33)
|
||||
fprintf (file, "\t.am33\n");
|
||||
output_file_directive (file, main_input_filename);
|
||||
fprintf (asm_out_file, "\t.am33\n");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -839,10 +839,6 @@ struct cum_arg {int nbytes; };
|
|||
#define DATA_SECTION_ASM_OP "\t.section .data"
|
||||
#define BSS_SECTION_ASM_OP "\t.section .bss"
|
||||
|
||||
/* Output at beginning/end of assembler file. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) asm_file_start(FILE)
|
||||
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
|
|
|
@ -96,6 +96,9 @@ static int ns32k_address_cost PARAMS ((rtx));
|
|||
#undef TARGET_ADDRESS_COST
|
||||
#define TARGET_ADDRESS_COST ns32k_address_cost
|
||||
|
||||
#undef TARGET_ASM_FILE_START_APP_OFF
|
||||
#define TARGET_ASM_FILE_START_APP_OFF true
|
||||
|
||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||
|
||||
/* Generate the assembly code for function entry. FILE is a stdio
|
||||
|
|
|
@ -1256,10 +1256,6 @@ __transfer_from_trampoline () \
|
|||
|
||||
/* Define the output Assembly Language */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(FILE) fprintf (FILE, "#NO_APP\n");
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -32,20 +32,7 @@ Boston, MA 02111-1307, USA. */
|
|||
#define DATA_SECTION_ASM_OP "\t.data"
|
||||
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
if (TARGET_PA_20) \
|
||||
fputs("\t.LEVEL 2.0\n", FILE); \
|
||||
else if (TARGET_PA_11) \
|
||||
fputs("\t.LEVEL 1.1\n", FILE); \
|
||||
else \
|
||||
fputs("\t.LEVEL 1.0\n", FILE); \
|
||||
if (profile_flag)\
|
||||
fprintf (FILE, "\t.IMPORT _mcount, ENTRY\n");\
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START pa_elf_file_start
|
||||
|
||||
#undef ASM_DECLARE_FUNCTION_NAME
|
||||
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
|
||||
|
|
|
@ -106,29 +106,7 @@ Boston, MA 02111-1307, USA. */
|
|||
#define DATA_SECTION_ASM_OP "\t.data"
|
||||
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
||||
|
||||
/* Output at beginning of assembler file. We override the definition
|
||||
from <linux.h> so that we can get the proper .LEVEL directive. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do \
|
||||
{ \
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
{ \
|
||||
output_file_directive (FILE, main_input_filename); \
|
||||
fputs ("\t.version\t\"01.01\"\n", FILE); \
|
||||
} \
|
||||
if (TARGET_64BIT) \
|
||||
fputs("\t.LEVEL 2.0w\n", FILE); \
|
||||
else if (TARGET_PA_20) \
|
||||
fputs("\t.LEVEL 2.0\n", FILE); \
|
||||
else if (TARGET_PA_11) \
|
||||
fputs("\t.LEVEL 1.1\n", FILE); \
|
||||
else \
|
||||
fputs("\t.LEVEL 1.0\n", FILE); \
|
||||
if (profile_flag) \
|
||||
fputs ("\t.IMPORT _mcount, CODE\n", FILE); \
|
||||
} \
|
||||
while (0)
|
||||
#define TARGET_ASM_FILE_START pa_linux_file_start
|
||||
|
||||
/* We want local labels to start with period if made with asm_fprintf. */
|
||||
#undef LOCAL_LABEL_PREFIX
|
||||
|
|
|
@ -135,6 +135,15 @@ static void copy_fp_args PARAMS ((rtx)) ATTRIBUTE_UNUSED;
|
|||
static int length_fp_args PARAMS ((rtx)) ATTRIBUTE_UNUSED;
|
||||
static struct deferred_plabel *get_plabel PARAMS ((const char *))
|
||||
ATTRIBUTE_UNUSED;
|
||||
static inline void pa_file_start_level PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static inline void pa_file_start_space PARAMS ((int)) ATTRIBUTE_UNUSED;
|
||||
static inline void pa_file_start_file PARAMS ((int)) ATTRIBUTE_UNUSED;
|
||||
static inline void pa_file_start_mcount PARAMS ((const char*)) ATTRIBUTE_UNUSED;
|
||||
static void pa_elf_file_start PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static void pa_som_file_start PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static void pa_linux_file_start PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static void pa_hpux64_gas_file_start PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static void pa_hpux64_hpas_file_start PARAMS ((void)) ATTRIBUTE_UNUSED;
|
||||
static void output_deferred_plabels PARAMS ((void));
|
||||
|
||||
/* Save the operands last given to a compare for use when we
|
||||
|
@ -4902,6 +4911,106 @@ output_global_address (file, x, round_constant)
|
|||
output_addr_const (file, x);
|
||||
}
|
||||
|
||||
/* Output boilerplate text to appear at the beginning of the file.
|
||||
There are several possible versions. */
|
||||
#define aputs(x) fputs(x, asm_out_file)
|
||||
static inline void
|
||||
pa_file_start_level ()
|
||||
{
|
||||
if (TARGET_64BIT)
|
||||
aputs ("\t.LEVEL 2.0w\n");
|
||||
else if (TARGET_PA_20)
|
||||
aputs ("\t.LEVEL 2.0\n");
|
||||
else if (TARGET_PA_11)
|
||||
aputs ("\t.LEVEL 1.1\n");
|
||||
else
|
||||
aputs ("\t.LEVEL 1.0\n");
|
||||
}
|
||||
|
||||
static inline void
|
||||
pa_file_start_space (sortspace)
|
||||
int sortspace;
|
||||
{
|
||||
aputs ("\t.SPACE $PRIVATE$");
|
||||
if (sortspace)
|
||||
aputs (",SORT=16");
|
||||
aputs ("\n\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31"
|
||||
"\n\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82"
|
||||
"\n\t.SPACE $TEXT$");
|
||||
if (sortspace)
|
||||
aputs (",SORT=8");
|
||||
aputs ("\n\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44"
|
||||
"\n\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n");
|
||||
}
|
||||
|
||||
static inline void
|
||||
pa_file_start_file (want_version)
|
||||
int want_version;
|
||||
{
|
||||
if (write_symbols != NO_DEBUG)
|
||||
{
|
||||
output_file_directive (asm_out_file, main_input_filename);
|
||||
if (want_version)
|
||||
aputs ("\t.version\t\"01.01\"\n");
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
pa_file_start_mcount (aswhat)
|
||||
const char *aswhat;
|
||||
{
|
||||
if (profile_flag)
|
||||
fprintf (asm_out_file, "\t.IMPORT _mcount,%s\n", aswhat);
|
||||
}
|
||||
|
||||
static void
|
||||
pa_elf_file_start ()
|
||||
{
|
||||
pa_file_start_level ();
|
||||
pa_file_start_mcount ("ENTRY");
|
||||
pa_file_start_file (0);
|
||||
}
|
||||
|
||||
static void
|
||||
pa_som_file_start ()
|
||||
{
|
||||
pa_file_start_level ();
|
||||
pa_file_start_space (0);
|
||||
aputs ("\t.IMPORT $global$,DATA\n"
|
||||
"\t.IMPORT $$dyncall,MILLICODE\n");
|
||||
pa_file_start_mcount ("CODE");
|
||||
pa_file_start_file (0);
|
||||
}
|
||||
|
||||
static void
|
||||
pa_linux_file_start ()
|
||||
{
|
||||
pa_file_start_file (1);
|
||||
pa_file_start_level ();
|
||||
pa_file_start_mcount ("CODE");
|
||||
}
|
||||
|
||||
static void
|
||||
pa_hpux64_gas_file_start ()
|
||||
{
|
||||
pa_file_start_level ();
|
||||
#ifdef ASM_OUTPUT_TYPE_DIRECTIVE
|
||||
if (profile_flag)
|
||||
ASM_OUTPUT_TYPE_DIRECTIVE (asm_out_file, "_mcount", "function");
|
||||
#endif
|
||||
pa_file_start_file (1);
|
||||
}
|
||||
|
||||
static void
|
||||
pa_hpux64_hpas_file_start ()
|
||||
{
|
||||
pa_file_start_level ();
|
||||
pa_file_start_space (1);
|
||||
pa_file_start_mcount ("CODE");
|
||||
pa_file_start_file (0);
|
||||
}
|
||||
#undef aputs
|
||||
|
||||
static struct deferred_plabel *
|
||||
get_plabel (fname)
|
||||
const char *fname;
|
||||
|
|
|
@ -100,25 +100,8 @@ Boston, MA 02111-1307, USA. */
|
|||
/* We are using GAS. */
|
||||
#define TARGET_GAS 1
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
if (TARGET_64BIT) \
|
||||
fputs("\t.LEVEL 2.0w\n", FILE); \
|
||||
else if (TARGET_PA_20) \
|
||||
fputs("\t.LEVEL 2.0\n", FILE); \
|
||||
else if (TARGET_PA_11) \
|
||||
fputs("\t.LEVEL 1.1\n", FILE); \
|
||||
else \
|
||||
fputs("\t.LEVEL 1.0\n", FILE); \
|
||||
if (profile_flag) \
|
||||
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, "_mcount", "function"); \
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
{ \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
fputs ("\t.version\t\"01.01\"\n", FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START pa_hpux64_gas_file_start
|
||||
|
||||
/* This is how we output a null terminated string. */
|
||||
#undef STRING_ASM_OP
|
||||
|
@ -221,28 +204,8 @@ do { \
|
|||
/* This target uses the ELF object file format. */
|
||||
#define OBJECT_FORMAT_ELF
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
if (TARGET_64BIT) \
|
||||
fputs("\t.LEVEL 2.0w\n", FILE); \
|
||||
else if (TARGET_PA_20) \
|
||||
fputs("\t.LEVEL 2.0\n", FILE); \
|
||||
else if (TARGET_PA_11) \
|
||||
fputs("\t.LEVEL 1.1\n", FILE); \
|
||||
else \
|
||||
fputs("\t.LEVEL 1.0\n", FILE); \
|
||||
fputs("\t.SPACE $PRIVATE$,SORT=16\n\
|
||||
\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
|
||||
\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
|
||||
\t.SPACE $TEXT$,SORT=8\n\
|
||||
\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
|
||||
\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
|
||||
if (profile_flag) \
|
||||
fprintf (FILE, "\t.IMPORT _mcount, CODE\n"); \
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
} while (0)
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START pa_hpux64_hpas_file_start
|
||||
|
||||
#undef TEXT_SECTION_ASM_OP
|
||||
#define TEXT_SECTION_ASM_OP "\t.SUBSPA $CODE$\n"
|
||||
|
|
|
@ -213,29 +213,7 @@ do { \
|
|||
fputs ("\n", FILE); \
|
||||
}} while (0)
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
if (TARGET_PA_20) \
|
||||
fputs("\t.LEVEL 2.0\n", FILE); \
|
||||
else if (TARGET_PA_11) \
|
||||
fputs("\t.LEVEL 1.1\n", FILE); \
|
||||
else \
|
||||
fputs("\t.LEVEL 1.0\n", FILE); \
|
||||
fputs ("\t.SPACE $PRIVATE$\n\
|
||||
\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
|
||||
\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
|
||||
\t.SPACE $TEXT$\n\
|
||||
\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
|
||||
\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n\
|
||||
\t.IMPORT $global$,DATA\n\
|
||||
\t.IMPORT $$dyncall,MILLICODE\n", FILE);\
|
||||
if (profile_flag)\
|
||||
fprintf (FILE, "\t.IMPORT _mcount, CODE\n");\
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START pa_som_file_start
|
||||
|
||||
/* Output before code. */
|
||||
|
||||
|
|
|
@ -990,20 +990,6 @@ extern struct rtx_def *cc0_reg_rtx;
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#if 0
|
||||
#define ASM_FILE_START(FILE) \
|
||||
( \
|
||||
fprintf (FILE, "\t.data\n"), \
|
||||
fprintf (FILE, "$help$: . = .+8 ; space for tmp moves!\n") \
|
||||
/* do we need reg def's R0 = %0 etc ??? */ \
|
||||
)
|
||||
#else
|
||||
#define ASM_FILE_START(FILE)
|
||||
#endif
|
||||
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -87,8 +87,8 @@
|
|||
Don't do this until the fixed IBM assembler is more generally available.
|
||||
When this becomes permanently defined, the ASM_OUTPUT_EXTERNAL,
|
||||
ASM_OUTPUT_EXTERNAL_LIBCALL, and RS6000_OUTPUT_BASENAME macros will no
|
||||
longer be needed. Also, the extern declaration of mcount in ASM_FILE_START
|
||||
will no longer be needed. */
|
||||
longer be needed. Also, the extern declaration of mcount in
|
||||
rs6000_xcoff_file_start will no longer be needed. */
|
||||
|
||||
/* #define ASM_SPEC "-u %(asm_cpu)" */
|
||||
|
||||
|
|
|
@ -103,17 +103,6 @@
|
|||
rs6000_override_options (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \
|
||||
? (char *) 0 : TARGET_CPU_DEFAULT)
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do \
|
||||
{ \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
rs6000_file_start (FILE, (((TARGET_DEFAULT ^ target_flags) \
|
||||
& MASK_64BIT) \
|
||||
? (char *) 0 : TARGET_CPU_DEFAULT)); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#endif
|
||||
|
||||
#undef ASM_DEFAULT_SPEC
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#undef PTRDIFF_TYPE
|
||||
#undef WCHAR_TYPE
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#undef ASM_FILE_START
|
||||
#undef EXTRA_SECTIONS
|
||||
#undef READONLY_DATA_SECTION
|
||||
#undef READONLY_DATA_SECTION_ASM_OP
|
||||
|
|
|
@ -167,7 +167,6 @@ extern enum direction function_arg_padding PARAMS ((enum machine_mode, tree));
|
|||
|
||||
extern void optimization_options PARAMS ((int, int));
|
||||
extern void rs6000_override_options PARAMS ((const char *));
|
||||
extern void rs6000_file_start PARAMS ((FILE *, const char *));
|
||||
extern int direct_return PARAMS ((void));
|
||||
extern union tree_node *rs6000_build_va_list PARAMS ((void));
|
||||
extern int first_reg_to_save PARAMS ((void));
|
||||
|
|
|
@ -51,6 +51,9 @@
|
|||
#include "langhooks.h"
|
||||
#include "reload.h"
|
||||
#include "cfglayout.h"
|
||||
#if TARGET_XCOFF
|
||||
#include "xcoffout.h" /* get declarations of xcoff_*_section_name */
|
||||
#endif
|
||||
|
||||
#ifndef TARGET_NO_PROTOTYPE
|
||||
#define TARGET_NO_PROTOTYPE 0
|
||||
|
@ -235,6 +238,7 @@ static void rs6000_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
|
|||
HOST_WIDE_INT, tree));
|
||||
static rtx rs6000_emit_set_long_const PARAMS ((rtx,
|
||||
HOST_WIDE_INT, HOST_WIDE_INT));
|
||||
static void rs6000_file_start PARAMS ((void));
|
||||
#if TARGET_ELF
|
||||
static unsigned int rs6000_elf_section_type_flags PARAMS ((tree, const char *,
|
||||
int));
|
||||
|
@ -259,6 +263,7 @@ static void rs6000_xcoff_select_rtx_section PARAMS ((enum machine_mode, rtx,
|
|||
unsigned HOST_WIDE_INT));
|
||||
static const char * rs6000_xcoff_strip_name_encoding PARAMS ((const char *));
|
||||
static unsigned int rs6000_xcoff_section_type_flags PARAMS ((tree, const char *, int));
|
||||
static void rs6000_xcoff_file_start PARAMS ((void));
|
||||
static void rs6000_xcoff_file_end PARAMS ((void));
|
||||
#endif
|
||||
#if TARGET_MACHO
|
||||
|
@ -941,15 +946,22 @@ optimization_options (level, size)
|
|||
|
||||
/* Do anything needed at the start of the asm file. */
|
||||
|
||||
void
|
||||
rs6000_file_start (file, default_cpu)
|
||||
FILE *file;
|
||||
const char *default_cpu;
|
||||
static void
|
||||
rs6000_file_start ()
|
||||
{
|
||||
size_t i;
|
||||
char buffer[80];
|
||||
const char *start = buffer;
|
||||
struct rs6000_cpu_select *ptr;
|
||||
const char *default_cpu = TARGET_CPU_DEFAULT;
|
||||
FILE *file = asm_out_file;
|
||||
|
||||
default_file_start ();
|
||||
|
||||
#ifdef TARGET_BI_ARCH
|
||||
if ((TARGET_DEFAULT ^ target_flags) & MASK_64BIT)
|
||||
default_cpu = 0;
|
||||
#endif
|
||||
|
||||
if (flag_verbose_asm)
|
||||
{
|
||||
|
@ -14179,6 +14191,40 @@ rs6000_xcoff_section_type_flags (decl, name, reloc)
|
|||
return flags | (exact_log2 (align) & SECTION_ENTSIZE);
|
||||
}
|
||||
|
||||
/* Output at beginning of assembler file.
|
||||
|
||||
Initialize the section names for the RS/6000 at this point.
|
||||
|
||||
Specify filename, including full path, to assembler.
|
||||
|
||||
We want to go into the TOC section so at least one .toc will be emitted.
|
||||
Also, in order to output proper .bs/.es pairs, we need at least one static
|
||||
[RW] section emitted.
|
||||
|
||||
Finally, declare mcount when profiling to make the assembler happy. */
|
||||
|
||||
static void
|
||||
rs6000_xcoff_file_start ()
|
||||
{
|
||||
rs6000_gen_section_name (&xcoff_bss_section_name,
|
||||
main_input_filename, ".bss_");
|
||||
rs6000_gen_section_name (&xcoff_private_data_section_name,
|
||||
main_input_filename, ".rw_");
|
||||
rs6000_gen_section_name (&xcoff_read_only_section_name,
|
||||
main_input_filename, ".ro_");
|
||||
|
||||
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 ();
|
||||
if (profile_flag)
|
||||
fprintf (asm_out_file, "\t.extern %s\n", RS6000_MCOUNT);
|
||||
rs6000_file_start ();
|
||||
}
|
||||
|
||||
/* Output at end of assembler file.
|
||||
On the RS/6000, referencing data should automatically pull in text. */
|
||||
|
||||
|
|
|
@ -2429,6 +2429,8 @@ extern int toc_initialized;
|
|||
} \
|
||||
while (0)
|
||||
|
||||
#define TARGET_ASM_FILE_START rs6000_file_start
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
may contain character constants, extra white space, comments, etc. */
|
||||
|
||||
|
|
|
@ -710,16 +710,6 @@ do { \
|
|||
|| (CHAR) == 'L' || (CHAR) == 'A' || (CHAR) == 'V' \
|
||||
|| (CHAR) == 'B' || (CHAR) == 'b' || (CHAR) == 'G')
|
||||
|
||||
/* Output .file. */
|
||||
/* Override elfos.h definition. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
rs6000_file_start (FILE, TARGET_CPU_DEFAULT); \
|
||||
} while (0)
|
||||
|
||||
|
||||
extern int fixuplabelno;
|
||||
|
||||
/* Handle constructors specially for -mrelocatable. */
|
||||
|
|
|
@ -108,9 +108,10 @@ toc_section () \
|
|||
{ \
|
||||
if (TARGET_MINIMAL_TOC) \
|
||||
{ \
|
||||
/* toc_section is always called at least once from ASM_FILE_START, \
|
||||
so this is guaranteed to always be defined once and only once \
|
||||
in each file. */ \
|
||||
/* toc_section is always called at least once \
|
||||
from rs6000_xcoff_file_start, so this is \
|
||||
guaranteed to always be defined once and \
|
||||
only once in each file. */ \
|
||||
if (! toc_initialized) \
|
||||
{ \
|
||||
fputs ("\t.toc\nLCTOC..1:\n", asm_out_file); \
|
||||
|
@ -200,40 +201,11 @@ toc_section () \
|
|||
/* Globalizing directive for a label. */
|
||||
#define GLOBAL_ASM_OP "\t.globl "
|
||||
|
||||
/* Output at beginning of assembler file.
|
||||
|
||||
Initialize the section names for the RS/6000 at this point.
|
||||
|
||||
Specify filename, including full path, to assembler.
|
||||
|
||||
We want to go into the TOC section so at least one .toc will be emitted.
|
||||
Also, in order to output proper .bs/.es pairs, we need at least one static
|
||||
[RW] section emitted.
|
||||
|
||||
Finally, declare mcount when profiling to make the assembler happy. */
|
||||
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
rs6000_gen_section_name (&xcoff_bss_section_name, \
|
||||
main_input_filename, ".bss_"); \
|
||||
rs6000_gen_section_name (&xcoff_private_data_section_name, \
|
||||
main_input_filename, ".rw_"); \
|
||||
rs6000_gen_section_name (&xcoff_read_only_section_name, \
|
||||
main_input_filename, ".ro_"); \
|
||||
\
|
||||
fputs ("\t.file\t", FILE); \
|
||||
output_quoted_string (FILE, main_input_filename); \
|
||||
fputc ('\n', FILE); \
|
||||
toc_section (); \
|
||||
if (write_symbols != NO_DEBUG) \
|
||||
private_data_section (); \
|
||||
text_section (); \
|
||||
if (profile_flag) \
|
||||
fprintf (FILE, "\t.extern %s\n", RS6000_MCOUNT); \
|
||||
rs6000_file_start (FILE, TARGET_CPU_DEFAULT); \
|
||||
}
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START rs6000_xcoff_file_start
|
||||
#define TARGET_ASM_FILE_END rs6000_xcoff_file_end
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE false
|
||||
|
||||
/* This macro produces the initial definition of a function name.
|
||||
On the RS/6000, we need to place an extra '.' in the function name and
|
||||
|
|
|
@ -19,6 +19,10 @@ along with GNU CC; see the file COPYING. If not, write to
|
|||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Let sh.c know this is ELF. */
|
||||
#undef TARGET_ELF
|
||||
#define TARGET_ELF 1
|
||||
|
||||
/* Generate DWARF2 debugging information and make it the default */
|
||||
#define DWARF2_DEBUGGING_INFO 1
|
||||
|
||||
|
@ -43,21 +47,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#undef LOCAL_LABEL_PREFIX
|
||||
#define LOCAL_LABEL_PREFIX "."
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) do { \
|
||||
output_file_directive ((FILE), main_input_filename); \
|
||||
/* We also need to show the text section with the proper \
|
||||
attributes as in TEXT_SECTION_ASM_OP, before dwarf2out \
|
||||
emits it without attributes in TEXT_SECTION, else GAS \
|
||||
will complain. We can teach GAS specifically about the \
|
||||
default attributes for our choice of text section, but \
|
||||
then we would have to change GAS again if/when we change \
|
||||
the text section name. */ \
|
||||
fprintf ((FILE), "%s\n", TEXT_SECTION_ASM_OP); \
|
||||
if (TARGET_LITTLE_ENDIAN) \
|
||||
fprintf ((FILE), "\t.little\n"); \
|
||||
} while (0)
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE (TARGET_SH5 ? "long unsigned int" : "unsigned int")
|
||||
|
||||
|
|
|
@ -111,7 +111,6 @@ extern tree sh_build_va_list PARAMS ((void));
|
|||
extern const char *output_jump_label_table PARAMS ((void));
|
||||
extern int sh_handle_pragma PARAMS ((int (*)(void), void (*)(int), const char *));
|
||||
extern struct rtx_def *get_fpscr_rtx PARAMS ((void));
|
||||
extern void output_file_start PARAMS ((FILE *));
|
||||
extern int sh_media_register_for_return PARAMS ((void));
|
||||
extern void sh_expand_prologue PARAMS ((void));
|
||||
extern void sh_expand_epilogue PARAMS ((void));
|
||||
|
|
|
@ -220,6 +220,7 @@ static void sh_media_init_builtins PARAMS ((void));
|
|||
static rtx sh_expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int));
|
||||
static void sh_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
|
||||
HOST_WIDE_INT, tree));
|
||||
static void sh_file_start PARAMS ((void));
|
||||
static int flow_dependent_p PARAMS ((rtx, rtx));
|
||||
static void flow_dependent_p_1 PARAMS ((rtx, rtx, void *));
|
||||
static int shiftcosts PARAMS ((rtx));
|
||||
|
@ -259,6 +260,11 @@ static int shmedia_target_regs_stack_adjust (HARD_REG_SET *);
|
|||
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
|
||||
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true
|
||||
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START sh_file_start
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef TARGET_INSERT_ATTRIBUTES
|
||||
#define TARGET_INSERT_ATTRIBUTES sh_insert_attributes
|
||||
|
||||
|
@ -1302,26 +1308,38 @@ output_ieee_ccmpeq (insn, operands)
|
|||
return output_branchy_insn (NE, "bt\t%l9\\;fcmp/eq\t%1,%0", insn, operands);
|
||||
}
|
||||
|
||||
/* Output to FILE the start of the assembler file. */
|
||||
/* Output the start of the assembler file. */
|
||||
|
||||
void
|
||||
output_file_start (file)
|
||||
FILE *file;
|
||||
static void
|
||||
sh_file_start ()
|
||||
{
|
||||
output_file_directive (file, main_input_filename);
|
||||
default_file_start ();
|
||||
|
||||
/* Switch to the data section so that the coffsem symbol
|
||||
isn't in the text section. */
|
||||
data_section ();
|
||||
if (TARGET_ELF)
|
||||
/* We need to show the text section with the proper
|
||||
attributes as in TEXT_SECTION_ASM_OP, before dwarf2out
|
||||
emits it without attributes in TEXT_SECTION, else GAS
|
||||
will complain. We can teach GAS specifically about the
|
||||
default attributes for our choice of text section, but
|
||||
then we would have to change GAS again if/when we change
|
||||
the text section name. */
|
||||
fprintf (asm_out_file, "%s\n", TEXT_SECTION_ASM_OP);
|
||||
else
|
||||
/* Switch to the data section so that the coffsem symbol
|
||||
isn't in the text section. */
|
||||
data_section ();
|
||||
|
||||
if (TARGET_LITTLE_ENDIAN)
|
||||
fprintf (file, "\t.little\n");
|
||||
fputs ("\t.little\n", asm_out_file);
|
||||
|
||||
if (TARGET_SHCOMPACT)
|
||||
fprintf (file, "\t.mode\tSHcompact\n");
|
||||
else if (TARGET_SHMEDIA)
|
||||
fprintf (file, "\t.mode\tSHmedia\n\t.abi\t%i\n",
|
||||
TARGET_SHMEDIA64 ? 64 : 32);
|
||||
if (!TARGET_ELF)
|
||||
{
|
||||
if (TARGET_SHCOMPACT)
|
||||
fputs ("\t.mode\tSHcompact\n", asm_out_file);
|
||||
else if (TARGET_SHMEDIA)
|
||||
fprintf (asm_out_file, "\t.mode\tSHmedia\n\t.abi\t%i\n",
|
||||
TARGET_SHMEDIA64 ? 64 : 32);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if PAT includes UNSPEC_CALLER unspec pattern. */
|
||||
|
|
|
@ -152,6 +152,9 @@ extern int target_flags;
|
|||
#define IEEE_BIT (1<<30)
|
||||
#define SAVE_ALL_TR_BIT (1<<2)
|
||||
|
||||
/* Nonzero if this is an ELF target - compile time only */
|
||||
#define TARGET_ELF 0
|
||||
|
||||
/* Nonzero if we should dump out instruction size info. */
|
||||
#define TARGET_DUMPISIZE (target_flags & ISIZE_BIT)
|
||||
|
||||
|
@ -2972,10 +2975,6 @@ while (0)
|
|||
the end of the line. */
|
||||
#define ASM_COMMENT_START "!"
|
||||
|
||||
/* The text to go at the start of the assembler file. */
|
||||
#define ASM_FILE_START(STREAM) \
|
||||
output_file_start (STREAM)
|
||||
|
||||
#define ASM_APP_ON ""
|
||||
#define ASM_APP_OFF ""
|
||||
#define FILE_ASM_OP "\t.file\n"
|
||||
|
|
|
@ -2668,10 +2668,6 @@ do { \
|
|||
|
||||
/* Control the assembler format that we output. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#define ASM_FILE_START(file)
|
||||
|
||||
/* A C string constant describing how to begin a comment in the target
|
||||
assembler language. The compiler assumes that the comment will end at
|
||||
the end of the line. */
|
||||
|
|
|
@ -29,13 +29,8 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
/* Assembler, linker, library, and startfile spec's. */
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
/* The .file command should always begin the output. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { output_file_directive ((FILE), main_input_filename); \
|
||||
} while (0)
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
/* This says how to output an assembler line
|
||||
to define a global common symbol. */
|
||||
|
|
|
@ -35,7 +35,6 @@ extern void zdata_section PARAMS ((void));
|
|||
extern void rozdata_section PARAMS ((void));
|
||||
extern void zbss_section PARAMS ((void));
|
||||
extern int v850_handle_pragma PARAMS ((int (*)(void), void (*)(int), char *));
|
||||
extern void asm_file_start PARAMS ((FILE *));
|
||||
extern void override_options PARAMS ((void));
|
||||
extern int compute_register_save_size PARAMS ((long *));
|
||||
extern int compute_frame_size PARAMS ((int, long *));
|
||||
|
|
|
@ -105,6 +105,9 @@ static int v850_interrupt_p = FALSE;
|
|||
#undef TARGET_ENCODE_SECTION_INFO
|
||||
#define TARGET_ENCODE_SECTION_INFO v850_encode_section_info
|
||||
|
||||
#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
|
||||
#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
|
||||
|
||||
#undef TARGET_RTX_COSTS
|
||||
#define TARGET_RTX_COSTS v850_rtx_costs
|
||||
#undef TARGET_ADDRESS_COST
|
||||
|
@ -158,15 +161,6 @@ override_options ()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/* Output assembly code for the start of the file. */
|
||||
|
||||
void
|
||||
asm_file_start (file)
|
||||
FILE *file;
|
||||
{
|
||||
output_file_directive (file, main_input_filename);
|
||||
}
|
||||
|
||||
|
||||
/* Return an RTX to represent where a value with mode MODE will be returned
|
||||
|
|
|
@ -1144,10 +1144,6 @@ zbss_section () \
|
|||
#define ZCOMMON_ASM_OP "\t.zcomm\t"
|
||||
#define TCOMMON_ASM_OP "\t.tcomm\t"
|
||||
|
||||
/* Output at beginning/end of assembler file. */
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) asm_file_start(FILE)
|
||||
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
/* Output to assembler file text saying following lines
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue