From: Matthias Klose Date: Tue, 30 Mar 2004 20:43:45 +0000 (+0000) Subject: backport: [multiple changes] X-Git-Tag: releases/gcc-3.3.4~115 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a019e21e594a38c701b7ee22d4b49f4864ab5eb;p=thirdparty%2Fgcc.git backport: [multiple changes] 2004-03-30 Matthias Klose Backport: 2004-01-14 Richard Earnshaw PR bootstrap/12527 * config.gcc (arm*-*-linux*): Don't include unknown-elf.h in tm_file. Move linux-gas.h and linux-elf.h before aout.h. * arm/arm.h (INITIALIZE_TRAMPOLINE): Only define if not already. * arm/linux-elf.h (SUBTARGET_CPU_DEFAULT): Define. 2003-05-15 Philip Blundell * config/arm/arm.c (arm_is_xscale): Rename to arm_arch_xscale. All uses updated. (arm_tune_xscale): New variable. (arm_override_options): Set it. (arm_adjust_cost): Use it in place of arm_arch_xscale. (arm_gen_load_multiple): Likewise. (arm_gen_store_multiple): Likewise. * config/arm/arm.md (is_xscale): Likewise. * config/arm/arm.h (arm_tune_xscale): Declare. 2003-04-28 Nick Clifton * config/arm/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Remove definition. From-SVN: r80094 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4e9932d367f9..274a79acf138 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,31 @@ +2004-03-30 Matthias Klose + + Backport: + + 2004-01-14 Richard Earnshaw + + PR bootstrap/12527 + * config.gcc (arm*-*-linux*): Don't include unknown-elf.h in tm_file. + Move linux-gas.h and linux-elf.h before aout.h. + * arm/arm.h (INITIALIZE_TRAMPOLINE): Only define if not already. + * arm/linux-elf.h (SUBTARGET_CPU_DEFAULT): Define. + + 2003-05-15 Philip Blundell + + * config/arm/arm.c (arm_is_xscale): Rename to arm_arch_xscale. + All uses updated. + (arm_tune_xscale): New variable. + (arm_override_options): Set it. + (arm_adjust_cost): Use it in place of arm_arch_xscale. + (arm_gen_load_multiple): Likewise. + (arm_gen_store_multiple): Likewise. + * config/arm/arm.md (is_xscale): Likewise. + * config/arm/arm.h (arm_tune_xscale): Declare. + + 2003-04-28 Nick Clifton + + * config/arm/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Remove definition. + 2004-03-29 Matthias Klose 2003-09-17 Daniel Jacobowitz diff --git a/gcc/config.gcc b/gcc/config.gcc index 613f4e33164b..544daa469d64 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -698,7 +698,7 @@ arm*-*-netbsd*) use_collect2=yes ;; arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" + tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" gnu_ld=yes diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 1efadc61db05..9a70ab39fb1a 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -275,7 +275,10 @@ int arm_ld_sched = 0; int arm_is_strong = 0; /* Nonzero if this chip is an XScale. */ -int arm_is_xscale = 0; +int arm_arch_xscale = 0; + +/* Nonzero if tuning for XScale */ +int arm_tune_xscale = 0; /* Nonzero if this chip is an ARM6 or an ARM7. */ int arm_is_6_or_7 = 0; @@ -684,13 +687,14 @@ arm_override_options () arm_arch4 = (insn_flags & FL_ARCH4) != 0; arm_arch5 = (insn_flags & FL_ARCH5) != 0; arm_arch5e = (insn_flags & FL_ARCH5E) != 0; - arm_is_xscale = (insn_flags & FL_XSCALE) != 0; + arm_arch_xscale = (insn_flags & FL_XSCALE) != 0; arm_ld_sched = (tune_flags & FL_LDSCHED) != 0; arm_is_strong = (tune_flags & FL_STRONG) != 0; thumb_code = (TARGET_ARM == 0); arm_is_6_or_7 = (((tune_flags & (FL_MODE26 | FL_MODE32)) && !(tune_flags & FL_ARCH4))) != 0; + arm_tune_xscale = (tune_flags & FL_XSCALE) != 0; /* Default value for floating point code... if no co-processor bus, then schedule for emulated floating point. Otherwise, @@ -762,7 +766,7 @@ arm_override_options () if (optimize_size || (tune_flags & FL_LDSCHED)) arm_constant_limit = 1; - if (arm_is_xscale) + if (arm_arch_xscale) arm_constant_limit = 2; /* If optimizing for size, bump the number of instructions that we @@ -2947,7 +2951,7 @@ arm_adjust_cost (insn, link, dep, cost) /* Some true dependencies can have a higher cost depending on precisely how certain input operands are used. */ - if (arm_is_xscale + if (arm_tune_xscale && REG_NOTE_KIND (link) == 0 && recog_memoized (insn) < 0 && recog_memoized (dep) < 0) @@ -4394,7 +4398,7 @@ arm_gen_load_multiple (base_regno, count, from, up, write_back, unchanging_p, As a compromise, we use ldr for counts of 1 or 2 regs, and ldm for counts of 3 or 4 regs. */ - if (arm_is_xscale && count <= 2 && ! optimize_size) + if (arm_tune_xscale && count <= 2 && ! optimize_size) { rtx seq; @@ -4461,7 +4465,7 @@ arm_gen_store_multiple (base_regno, count, to, up, write_back, unchanging_p, /* See arm_gen_load_multiple for discussion of the pros/cons of ldm/stm usage for XScale. */ - if (arm_is_xscale && count <= 2 && ! optimize_size) + if (arm_tune_xscale && count <= 2 && ! optimize_size) { rtx seq; diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index cb49f572efbf..039960cddffc 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -571,7 +571,10 @@ extern int thumb_code; extern int arm_is_strong; /* Nonzero if this chip is an XScale. */ -extern int arm_is_xscale; +extern int arm_arch_xscale; + +/* Nonzero if tuning for XScale */ +extern int arm_tune_xscale; /* Nonzero if this chip is an ARM6 or an ARM7. */ extern int arm_is_6_or_7; @@ -703,7 +706,7 @@ extern int arm_is_6_or_7; #define BIGGEST_ALIGNMENT 32 /* Make strings word-aligned so strcpy from constants will be faster. */ -#define CONSTANT_ALIGNMENT_FACTOR (TARGET_THUMB || ! arm_is_xscale ? 1 : 2) +#define CONSTANT_ALIGNMENT_FACTOR (TARGET_THUMB || ! arm_arch_xscale ? 1 : 2) #define CONSTANT_ALIGNMENT(EXP, ALIGN) \ ((TREE_CODE (EXP) == STRING_CST \ @@ -1770,13 +1773,19 @@ typedef struct /* Emit RTL insns to initialize the variable parts of a trampoline. FNADDR is an RTX for the address of the function's pure code. CXT is an RTX for the static chain value for the function. */ -#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ -{ \ - emit_move_insn \ - (gen_rtx_MEM (SImode, plus_constant (TRAMP, TARGET_ARM ? 8 : 16)), CXT); \ - emit_move_insn \ - (gen_rtx_MEM (SImode, plus_constant (TRAMP, TARGET_ARM ? 12 : 20)), FNADDR); \ +#ifndef INITIALIZE_TRAMPOLINE +#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ +{ \ + emit_move_insn (gen_rtx_MEM (SImode, \ + plus_constant (TRAMP, \ + TARGET_ARM ? 8 : 16)), \ + CXT); \ + emit_move_insn (gen_rtx_MEM (SImode, \ + plus_constant (TRAMP, \ + TARGET_ARM ? 12 : 20)), \ + FNADDR); \ } +#endif /* Addressing modes, and classification of registers for them. */ @@ -2330,7 +2339,7 @@ typedef struct #define MOVE_MAX 4 #undef MOVE_RATIO -#define MOVE_RATIO (arm_is_xscale ? 4 : 2) +#define MOVE_RATIO (arm_arch_xscale ? 4 : 2) /* Define if operations between registers always perform the operation on the full register even if a narrower mode is specified. */ diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index edf9dae1e551..b6f5d6442126 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -120,7 +120,7 @@ ;; Operand number of an input operand that is shifted. Zero if the ;; given instruction does not shift one of its input operands. -(define_attr "is_xscale" "no,yes" (const (symbol_ref "arm_is_xscale"))) +(define_attr "is_xscale" "no,yes" (const (symbol_ref "arm_tune_xscale"))) (define_attr "shift" "" (const_int 0)) ; Floating Point Unit. If we only have floating point emulation, then there @@ -1185,7 +1185,7 @@ (const_int 0))) (set (match_operand:SI 0 "s_register_operand" "=&r,&r") (mult:SI (match_dup 2) (match_dup 1)))] - "TARGET_ARM && !arm_is_xscale" + "TARGET_ARM && !arm_arch_xscale" "mul%?s\\t%0, %2, %1" [(set_attr "conds" "set") (set_attr "type" "mult")] @@ -1198,7 +1198,7 @@ (match_operand:SI 1 "s_register_operand" "%?r,0")) (const_int 0))) (clobber (match_scratch:SI 0 "=&r,&r"))] - "TARGET_ARM && !arm_is_xscale" + "TARGET_ARM && !arm_arch_xscale" "mul%?s\\t%0, %2, %1" [(set_attr "conds" "set") (set_attr "type" "mult")] @@ -1229,7 +1229,7 @@ (set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r") (plus:SI (mult:SI (match_dup 2) (match_dup 1)) (match_dup 3)))] - "TARGET_ARM && !arm_is_xscale" + "TARGET_ARM && !arm_arch_xscale" "mla%?s\\t%0, %2, %1, %3" [(set_attr "conds" "set") (set_attr "type" "mult")] @@ -1244,7 +1244,7 @@ (match_operand:SI 3 "s_register_operand" "?r,r,0,0")) (const_int 0))) (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))] - "TARGET_ARM && !arm_is_xscale" + "TARGET_ARM && !arm_arch_xscale" "mla%?s\\t%0, %2, %1, %3" [(set_attr "conds" "set") (set_attr "type" "mult")] @@ -1338,7 +1338,7 @@ (match_operand:HI 1 "s_register_operand" "%r")) (sign_extend:SI (match_operand:HI 2 "s_register_operand" "r"))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch_xscale" "smulbb%?\\t%0, %1, %2" [(set_attr "type" "mult")] ) @@ -1350,7 +1350,7 @@ (match_operand:HI 2 "s_register_operand" "%r")) (sign_extend:SI (match_operand:HI 3 "s_register_operand" "r")))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch_xscale" "smlabb%?\\t%0, %2, %3, %1" [(set_attr "type" "mult")] ) @@ -1363,7 +1363,7 @@ (match_operand:HI 2 "s_register_operand" "%r")) (sign_extend:DI (match_operand:HI 3 "s_register_operand" "r")))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch_xscale" "smlalbb%?\\t%Q0, %R0, %2, %3" [(set_attr "type" "mult")]) diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h index 0ad23f8f5d03..79fd170e5cb1 100644 --- a/gcc/config/arm/elf.h +++ b/gcc/config/arm/elf.h @@ -152,16 +152,6 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_ASM_NAMED_SECTION #define TARGET_ASM_NAMED_SECTION arm_elf_asm_named_section -#undef ASM_OUTPUT_ALIGNED_COMMON -#define ASM_OUTPUT_ALIGNED_COMMON(STREAM, NAME, SIZE, ALIGN) \ - do \ - { \ - fprintf (STREAM, "\t.comm\t"); \ - assemble_name (STREAM, NAME); \ - fprintf (STREAM, ", %d, %d\n", SIZE, ALIGN); \ - } \ - while (0) - /* For PIC code we need to explicitly specify (PLT) and (GOT) relocs. */ #define NEED_PLT_RELOC flag_pic #define NEED_GOT_RELOC flag_pic diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 8cc812f763f6..c63bbc1d5ade 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -34,6 +34,8 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_DEFAULT #define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 + #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" #undef MULTILIB_DEFAULTS