On 17/05/18 11:26, Kyrill Tkachov wrote: > Hi all, > > The -march=armv5 and armv5e options have been deprecated in GCC 7 [1]. > This patch removes support for them. > It's mostly mechanical stuff. The functionality that was previously > gated on arm_arch5 is now gated on arm_arch5t and the functionality > that was gated on arm_arch5e is now gated on arm_arch5te. > > A path in TARGET_OS_CPP_BUILTINS for VxWorks is now unreachable and > therefore is deleted. > > References to armv5 and armv5e are deleted/updated throughout the > source tree and testsuite. > > Bootstrapped and tested on arm-none-linux-gnueabihf. > Also built a cc1 for arm-wrs-vxworks as a sanity check. > > Ramana, Richard, I'd appreciate an ok from either of you that you're > happy for this to go ahead. >
I agree, time for this code to go. OK. R. > Thanks, > Kyrill > > [1] https://gcc.gnu.org/gcc-7/changes.html#arm > > gcc/ > 2018-05-17 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/arm/arm-cpus.in (armv5, armv5e): Delete features. > (armv5t, armv5te): New features. > (ARMv5, ARMv5e): Delete fgroups. > (ARMv5t, ARMv5te): Adjust for above changes. > (ARMv6m): Likewise. > (armv5, armv5e): Delete arches. > * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of > arm_arch5. > (*call_reg_arm): Likewise. > (*call_value_reg_armv5): Likewise. > (*call_value_reg_arm): Likewise. > (*call_symbol): Likewise. > (*call_value_symbol): Likewise. > (*sibcall_insn): Likewise. > (*sibcall_value_insn): Likewise. > (clzsi2): Likewise. > (prefetch): Likewise. > (define_split and define_peephole2 dependent on arm_arch5): > Likewise. > * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of > arm_arch5e. > (TARGET_ARM_QBIT): Likewise. > (TARGET_DSP_MULTIPLY): Likewise. > (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E. > (arm_arch5, arm_arch5e): Delete. > (arm_arch5t, arm_arch5te): Declare. > * config/arm/arm.c (arm_arch5, arm_arch5e): Delete. > (arm_arch5t): Declare. > (arm_option_reconfigure_globals): Update for the above. > (arm_options_perform_arch_sanity_checks): Update comment, replace > use of arm_arch5 with arm_arch5t. > (use_return_insn): Likewise. > (arm_emit_call_insn): Likewise. > (output_return_instruction): Likewise. > (arm_final_prescan_insn): Likewise. > (arm_coproc_builtin_available): Likewise. > * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and > arm_arch5e with arm_arch5t and arm_arch5te. > * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete. > (arm_arch5t, arm_arch5te): Declare. > * config/arm/arm-tables.opt: Regenerate. > * config/arm/t-arm-elf: Remove references to armv5, armv5e. > * config/arm/t-multilib: Likewise. > * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t > instead of arm_arch5. > (*call_reg_thumb1): Likewise. > (*call_value_reg_thumb1_v5): Likewise. > (*call_value_reg_thumb1): Likewise. > * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now > unreachable path. > * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e. > > gcc/testsuite/ > 2018-05-17 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * gcc.target/arm/pr40887.c: Update comment. > * lib/target-supports.exp: Don't generate effective target checks > and related helpers for armv5. Update comment. > * gcc.target/arm/armv5_thumb_isa.c: Delete. > * gcc.target/arm/di-longlong64-sync-withhelpers.c: Update effective > target check and options. > > libgcc/ > 2018-05-17 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/arm/libunwind.S: Update comment relating to armv5. > > armv5-remove.patch > > > diff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c > index > 7c741e9fe66a0e086556272a46c4cd709996ce36..4471f7914cf282c516a142174f9913e491558b44 > 100644 > --- a/gcc/config/arm/arm-c.c > +++ b/gcc/config/arm/arm-c.c > @@ -212,9 +212,9 @@ arm_cpu_builtins (struct cpp_reader* pfile) > { > int coproc_level = 0x1; > > - if (arm_arch5) > + if (arm_arch5t) > coproc_level |= 0x2; > - if (arm_arch5e) > + if (arm_arch5te) > coproc_level |= 0x4; > if (arm_arch6) > coproc_level |= 0x8; > diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in > index > 96972a057e7459874ef0bdac5e6379fb666e4189..0a318877f10394e2c045d2a03a8f0757557136cf > 100644 > --- a/gcc/config/arm/arm-cpus.in > +++ b/gcc/config/arm/arm-cpus.in > @@ -60,14 +60,14 @@ define feature mode32 > # Architecture rel 4 > define feature armv4 > > -# Architecture rel 5 > -define feature armv5 > - > # Thumb aware. > define feature thumb > > -# Architecture rel 5e. > -define feature armv5e > +# Architecture rel 5t. > +define feature armv5t > + > +# Architecture rel 5te. > +define feature armv5te > > # XScale. > define feature xscale > @@ -220,10 +220,8 @@ define fgroup ARMv3 ARMv2 mode32 > define fgroup ARMv3m ARMv3 armv3m > define fgroup ARMv4 ARMv3m armv4 > define fgroup ARMv4t ARMv4 thumb > -define fgroup ARMv5 ARMv4 armv5 > -define fgroup ARMv5t ARMv5 thumb > -define fgroup ARMv5e ARMv5 armv5e > -define fgroup ARMv5te ARMv5e thumb > +define fgroup ARMv5t ARMv4t armv5t > +define fgroup ARMv5te ARMv5t armv5te > define fgroup ARMv5tej ARMv5te > define fgroup ARMv6 ARMv5te armv6 be8 > define fgroup ARMv6j ARMv6 > @@ -234,7 +232,7 @@ define fgroup ARMv6zk ARMv6k > define fgroup ARMv6t2 ARMv6 thumb2 > # This is suspect. ARMv6-m doesn't really pull in any useful features > # from ARMv5* or ARMv6. > -define fgroup ARMv6m mode32 armv3m armv4 thumb armv5 armv5e armv6 be8 > +define fgroup ARMv6m mode32 armv3m armv4 thumb armv5t armv5te armv6 be8 > # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and > # integer SIMD instructions that are in ARMv6T2. */ > define fgroup ARMv7 ARMv6m thumb2 armv7 > @@ -325,13 +323,6 @@ begin arch armv4t > isa ARMv4t > end arch armv4t > > -begin arch armv5 > - tune for arm10tdmi > - tune flags CO_PROC > - base 5 > - isa ARMv5 > -end arch armv5 > - > begin arch armv5t > tune for arm10tdmi > tune flags CO_PROC > @@ -339,16 +330,6 @@ begin arch armv5t > isa ARMv5t > end arch armv5t > > -begin arch armv5e > - tune for arm1026ej-s > - tune flags CO_PROC > - base 5E > - isa ARMv5e > - option fp add VFPv2 FP_DBL > - optalias vfpv2 fp > - option nofp remove ALL_FP > -end arch armv5e > - > begin arch armv5te > tune for arm1026ej-s > tune flags CO_PROC > diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h > index > 9d0acde7a392561cb195d02ae2e1daa15f4ce95b..ea2cf694f2fc6a7337accb0a7f7044fc99a7630d > 100644 > --- a/gcc/config/arm/arm-protos.h > +++ b/gcc/config/arm/arm-protos.h > @@ -388,11 +388,11 @@ extern int arm_arch4; > /* Nonzero if this chip supports the ARM Architecture 4t extensions. */ > extern int arm_arch4t; > > -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ > -extern int arm_arch5; > +/* Nonzero if this chip supports the ARM Architecture 5t extensions. */ > +extern int arm_arch5t; > > -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ > -extern int arm_arch5e; > +/* Nonzero if this chip supports the ARM Architecture 5te extensions. */ > +extern int arm_arch5te; > > /* Nonzero if this chip supports the ARM Architecture 6 extensions. */ > extern int arm_arch6; > diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt > index > 60e5065b398f40bf969a53fd063d263908b0818e..b05da649ac580655142cb8f27adf8717d135b911 > 100644 > --- a/gcc/config/arm/arm-tables.opt > +++ b/gcc/config/arm/arm-tables.opt > @@ -383,94 +383,88 @@ EnumValue > Enum(arm_arch) String(armv4t) Value(5) > > EnumValue > -Enum(arm_arch) String(armv5) Value(6) > +Enum(arm_arch) String(armv5t) Value(6) > > EnumValue > -Enum(arm_arch) String(armv5t) Value(7) > +Enum(arm_arch) String(armv5te) Value(7) > > EnumValue > -Enum(arm_arch) String(armv5e) Value(8) > +Enum(arm_arch) String(armv5tej) Value(8) > > EnumValue > -Enum(arm_arch) String(armv5te) Value(9) > +Enum(arm_arch) String(armv6) Value(9) > > EnumValue > -Enum(arm_arch) String(armv5tej) Value(10) > +Enum(arm_arch) String(armv6j) Value(10) > > EnumValue > -Enum(arm_arch) String(armv6) Value(11) > +Enum(arm_arch) String(armv6k) Value(11) > > EnumValue > -Enum(arm_arch) String(armv6j) Value(12) > +Enum(arm_arch) String(armv6z) Value(12) > > EnumValue > -Enum(arm_arch) String(armv6k) Value(13) > +Enum(arm_arch) String(armv6kz) Value(13) > > EnumValue > -Enum(arm_arch) String(armv6z) Value(14) > +Enum(arm_arch) String(armv6zk) Value(14) > > EnumValue > -Enum(arm_arch) String(armv6kz) Value(15) > +Enum(arm_arch) String(armv6t2) Value(15) > > EnumValue > -Enum(arm_arch) String(armv6zk) Value(16) > +Enum(arm_arch) String(armv6-m) Value(16) > > EnumValue > -Enum(arm_arch) String(armv6t2) Value(17) > +Enum(arm_arch) String(armv6s-m) Value(17) > > EnumValue > -Enum(arm_arch) String(armv6-m) Value(18) > +Enum(arm_arch) String(armv7) Value(18) > > EnumValue > -Enum(arm_arch) String(armv6s-m) Value(19) > +Enum(arm_arch) String(armv7-a) Value(19) > > EnumValue > -Enum(arm_arch) String(armv7) Value(20) > +Enum(arm_arch) String(armv7ve) Value(20) > > EnumValue > -Enum(arm_arch) String(armv7-a) Value(21) > +Enum(arm_arch) String(armv7-r) Value(21) > > EnumValue > -Enum(arm_arch) String(armv7ve) Value(22) > +Enum(arm_arch) String(armv7-m) Value(22) > > EnumValue > -Enum(arm_arch) String(armv7-r) Value(23) > +Enum(arm_arch) String(armv7e-m) Value(23) > > EnumValue > -Enum(arm_arch) String(armv7-m) Value(24) > +Enum(arm_arch) String(armv8-a) Value(24) > > EnumValue > -Enum(arm_arch) String(armv7e-m) Value(25) > +Enum(arm_arch) String(armv8.1-a) Value(25) > > EnumValue > -Enum(arm_arch) String(armv8-a) Value(26) > +Enum(arm_arch) String(armv8.2-a) Value(26) > > EnumValue > -Enum(arm_arch) String(armv8.1-a) Value(27) > +Enum(arm_arch) String(armv8.3-a) Value(27) > > EnumValue > -Enum(arm_arch) String(armv8.2-a) Value(28) > +Enum(arm_arch) String(armv8.4-a) Value(28) > > EnumValue > -Enum(arm_arch) String(armv8.3-a) Value(29) > +Enum(arm_arch) String(armv8-m.base) Value(29) > > EnumValue > -Enum(arm_arch) String(armv8.4-a) Value(30) > +Enum(arm_arch) String(armv8-m.main) Value(30) > > EnumValue > -Enum(arm_arch) String(armv8-m.base) Value(31) > +Enum(arm_arch) String(armv8-r) Value(31) > > EnumValue > -Enum(arm_arch) String(armv8-m.main) Value(32) > +Enum(arm_arch) String(iwmmxt) Value(32) > > EnumValue > -Enum(arm_arch) String(armv8-r) Value(33) > - > -EnumValue > -Enum(arm_arch) String(iwmmxt) Value(34) > - > -EnumValue > -Enum(arm_arch) String(iwmmxt2) Value(35) > +Enum(arm_arch) String(iwmmxt2) Value(33) > > Enum > Name(arm_fpu) Type(enum fpu_type) > diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h > index > 2809112f68dd83eeb5b4764e82d552d8b8be3e4e..f3a6f7db95ef4806ea0677babe503cd9d62d40a3 > 100644 > --- a/gcc/config/arm/arm.h > +++ b/gcc/config/arm/arm.h > @@ -155,7 +155,7 @@ extern tree arm_fp16_type_node; > /* Thumb-1 only. */ > #define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm) > > -#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \ > +#define TARGET_LDRD (arm_arch5te && ARM_DOUBLEWORD_ALIGN \ > && !TARGET_THUMB1) > > #define TARGET_CRC32 (arm_arch_crc) > @@ -233,13 +233,13 @@ extern tree arm_fp16_type_node; > > /* Q-bit is present. */ > #define TARGET_ARM_QBIT \ > - (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7)) > + (TARGET_32BIT && arm_arch5te && (arm_arch_notm || arm_arch7)) > /* Saturation operation, e.g. SSAT. */ > #define TARGET_ARM_SAT \ > (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7)) > /* "DSP" multiply instructions, eg. SMULxy. */ > #define TARGET_DSP_MULTIPLY \ > - (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7em)) > + (TARGET_32BIT && arm_arch5te && (arm_arch_notm || arm_arch7em)) > /* Integer SIMD instructions, and extend-accumulate instructions. */ > #define TARGET_INT_SIMD \ > (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em)) > @@ -375,8 +375,6 @@ enum base_architecture > BASE_ARCH_3M = 3, > BASE_ARCH_4 = 4, > BASE_ARCH_4T = 4, > - BASE_ARCH_5 = 5, > - BASE_ARCH_5E = 5, > BASE_ARCH_5T = 5, > BASE_ARCH_5TE = 5, > BASE_ARCH_5TEJ = 5, > @@ -410,11 +408,11 @@ extern int arm_arch4; > /* Nonzero if this chip supports the ARM Architecture 4T extensions. */ > extern int arm_arch4t; > > -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ > -extern int arm_arch5; > +/* Nonzero if this chip supports the ARM Architecture 5T extensions. */ > +extern int arm_arch5t; > > -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ > -extern int arm_arch5e; > +/* Nonzero if this chip supports the ARM Architecture 5TE extensions. */ > +extern int arm_arch5te; > > /* Nonzero if this chip supports the ARM Architecture 6 extensions. */ > extern int arm_arch6; > diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c > index > 08120c6272b5c558e60016c2bd8901b274a45af8..3bfc0d5ec0e8e455a169d595d1f1c926c4ac349b > 100644 > --- a/gcc/config/arm/arm.c > +++ b/gcc/config/arm/arm.c > @@ -859,11 +859,8 @@ int arm_arch4 = 0; > /* Nonzero if this chip supports the ARM Architecture 4t extensions. */ > int arm_arch4t = 0; > > -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ > -int arm_arch5 = 0; > - > -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ > -int arm_arch5e = 0; > +/* Nonzero if this chip supports the ARM Architecture 5T extensions. */ > +int arm_arch5t = 0; > > /* Nonzero if this chip supports the ARM Architecture 5TE extensions. */ > int arm_arch5te = 0; > @@ -3642,10 +3639,8 @@ arm_option_reconfigure_globals (void) > arm_arch3m = bitmap_bit_p (arm_active_target.isa, isa_bit_armv3m); > arm_arch4 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv4); > arm_arch4t = arm_arch4 && bitmap_bit_p (arm_active_target.isa, > isa_bit_thumb); > - arm_arch5 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5); > - arm_arch5e = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5e); > - arm_arch5te = arm_arch5e > - && bitmap_bit_p (arm_active_target.isa, isa_bit_thumb); > + arm_arch5t = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5t); > + arm_arch5te = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5te); > arm_arch6 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv6); > arm_arch6k = bitmap_bit_p (arm_active_target.isa, isa_bit_armv6k); > arm_arch_notm = bitmap_bit_p (arm_active_target.isa, isa_bit_notm); > @@ -3694,7 +3689,7 @@ arm_option_reconfigure_globals (void) > void > arm_options_perform_arch_sanity_checks (void) > { > - /* V5 code we generate is completely interworking capable, so we turn off > + /* V5T code we generate is completely interworking capable, so we turn off > TARGET_INTERWORK here to avoid many tests later on. */ > > /* XXX However, we must pass the right pre-processor defines to CPP > @@ -3702,7 +3697,7 @@ arm_options_perform_arch_sanity_checks (void) > if (TARGET_INTERWORK) > arm_cpp_interwork = 1; > > - if (arm_arch5) > + if (arm_arch5t) > target_flags &= ~MASK_INTERWORK; > > if (TARGET_IWMMXT && !ARM_DOUBLEWORD_ALIGN) > @@ -4061,10 +4056,10 @@ use_return_insn (int iscond, rtx sibling) > the other registers, since that is never slower than executing > another instruction. > > - We test for !arm_arch5 here, because code for any architecture > + We test for !arm_arch5t here, because code for any architecture > less than this could potentially be run on one of the buggy > chips. */ > - if (stack_adjust == 4 && !arm_arch5 && TARGET_ARM) > + if (stack_adjust == 4 && !arm_arch5t && TARGET_ARM) > { > /* Validate that r3 is a call-clobbered register (always true in > the default abi) ... */ > @@ -18097,7 +18092,7 @@ arm_emit_call_insn (rtx pat, rtx addr, bool sibcall) > const char * > output_call (rtx *operands) > { > - gcc_assert (!arm_arch5); /* Patterns should call blx <reg> directly. */ > + gcc_assert (!arm_arch5t); /* Patterns should call blx <reg> directly. */ > > /* Handle calls to lr using ip (which may be clobbered in subr anyway). */ > if (REGNO (operands[0]) == LR_REGNUM) > @@ -19732,7 +19727,7 @@ output_return_instruction (rtx operand, bool > really_return, bool reverse, > stack_adjust = offsets->outgoing_args - offsets->saved_regs; > gcc_assert (stack_adjust == 0 || stack_adjust == 4); > > - if (stack_adjust && arm_arch5 && TARGET_ARM) > + if (stack_adjust && arm_arch5t && TARGET_ARM) > sprintf (instr, "ldmib%s\t%%|sp, {", conditional); > else > { > @@ -19807,7 +19802,7 @@ output_return_instruction (rtx operand, bool > really_return, bool reverse, > break; > > case ARM_FT_INTERWORKED: > - gcc_assert (arm_arch5 || arm_arch4t); > + gcc_assert (arm_arch5t || arm_arch4t); > sprintf (instr, "bx%s\t%%|lr", conditional); > break; > > @@ -19855,7 +19850,7 @@ output_return_instruction (rtx operand, bool > really_return, bool reverse, > snprintf (instr, sizeof (instr), "bxns\t%%|lr"); > } > /* Use bx if it's available. */ > - else if (arm_arch5 || arm_arch4t) > + else if (arm_arch5t || arm_arch4t) > sprintf (instr, "bx%s\t%%|lr", conditional); > else > sprintf (instr, "mov%s\t%%|pc, %%|lr", conditional); > @@ -23459,7 +23454,7 @@ arm_final_prescan_insn (rtx_insn *insn) > used since they make interworking inefficient (the > linker can't transform BL<cond> into BLX). That's > only a problem if the machine has BLX. */ > - if (arm_arch5) > + if (arm_arch5t) > { > fail = TRUE; > break; > @@ -31433,7 +31428,7 @@ arm_coproc_builtin_available (enum unspecv builtin) > case VUNSPEC_MRC2: > /* Only present in ARMv5*, ARMv6 (but not ARMv6-M), ARMv7* and > ARMv8-{A,M}. */ > - if (arm_arch5) > + if (arm_arch5t) > return true; > break; > case VUNSPEC_MCRR: > diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md > index > 2d5359e532f321cec8ce6c507bf79b295ecc6a4c..118cecfffdd9f312fb6371797d4d7d28cc877ba1 > 100644 > --- a/gcc/config/arm/arm.md > +++ b/gcc/config/arm/arm.md > @@ -8087,7 +8087,7 @@ (define_insn "*call_reg_armv5" > (match_operand 1 "" "")) > (use (match_operand 2 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_ARM && arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_ARM && arm_arch5t && !SIBLING_CALL_P (insn)" > "blx%?\\t%0" > [(set_attr "type" "call")] > ) > @@ -8097,7 +8097,7 @@ (define_insn "*call_reg_arm" > (match_operand 1 "" "")) > (use (match_operand 2 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_ARM && !arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_ARM && !arm_arch5t && !SIBLING_CALL_P (insn)" > "* > return output_call (operands); > " > @@ -8179,7 +8179,7 @@ (define_insn "*call_value_reg_armv5" > (match_operand 2 "" ""))) > (use (match_operand 3 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_ARM && arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_ARM && arm_arch5t && !SIBLING_CALL_P (insn)" > "blx%?\\t%1" > [(set_attr "type" "call")] > ) > @@ -8190,7 +8190,7 @@ (define_insn "*call_value_reg_arm" > (match_operand 2 "" ""))) > (use (match_operand 3 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_ARM && !arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_ARM && !arm_arch5t && !SIBLING_CALL_P (insn)" > "* > return output_call (&operands[1]); > " > @@ -8216,7 +8216,7 @@ (define_insn "*call_symbol" > > /* Switch mode now when possible. */ > if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op)) > - && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op))) > + && arm_arch5t && arm_change_mode_p (SYMBOL_REF_DECL (op))) > return NEED_PLT_RELOC ? \"blx%?\\t%a0(PLT)\" : \"blx%?\\t(%a0)\"; > > return NEED_PLT_RELOC ? \"bl%?\\t%a0(PLT)\" : \"bl%?\\t%a0\"; > @@ -8240,7 +8240,7 @@ (define_insn "*call_value_symbol" > > /* Switch mode now when possible. */ > if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op)) > - && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op))) > + && arm_arch5t && arm_change_mode_p (SYMBOL_REF_DECL (op))) > return NEED_PLT_RELOC ? \"blx%?\\t%a1(PLT)\" : \"blx%?\\t(%a1)\"; > > return NEED_PLT_RELOC ? \"bl%?\\t%a1(PLT)\" : \"bl%?\\t%a1\"; > @@ -8325,7 +8325,7 @@ (define_insn "*sibcall_insn" > return NEED_PLT_RELOC ? \"b%?\\t%a0(PLT)\" : \"b%?\\t%a0\"; > else > { > - if (arm_arch5 || arm_arch4t) > + if (arm_arch5t || arm_arch4t) > return \"bx%?\\t%0\\t%@ indirect register sibling call\"; > else > return \"mov%?\\t%|pc, %0\\t%@ indirect register sibling call\"; > @@ -8346,7 +8346,7 @@ (define_insn "*sibcall_value_insn" > return NEED_PLT_RELOC ? \"b%?\\t%a1(PLT)\" : \"b%?\\t%a1\"; > else > { > - if (arm_arch5 || arm_arch4t) > + if (arm_arch5t || arm_arch4t) > return \"bx%?\\t%1\"; > else > return \"mov%?\\t%|pc, %1\\t@ indirect sibling call \"; > @@ -8984,7 +8984,7 @@ (define_split > (eq:SI (match_operand:SI 1 "s_register_operand" "") > (const_int 0))) > (clobber (reg:CC CC_REGNUM))] > - "arm_arch5 && TARGET_32BIT" > + "arm_arch5t && TARGET_32BIT" > [(set (match_dup 0) (clz:SI (match_dup 1))) > (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 5)))] > ) > @@ -9077,7 +9077,7 @@ (define_peephole2 > (set (match_operand:SI 0 "register_operand" "") (const_int 0))) > (cond_exec (eq (reg:CC CC_REGNUM) (const_int 0)) > (set (match_dup 0) (const_int 1)))] > - "arm_arch5 && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM)" > + "arm_arch5t && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM)" > [(set (match_dup 0) (clz:SI (match_dup 1))) > (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 5)))] > ) > @@ -9116,7 +9116,7 @@ (define_peephole2 > (set (match_operand:SI 0 "register_operand" "") (const_int 0))) > (cond_exec (eq (reg:CC CC_REGNUM) (const_int 0)) > (set (match_dup 0) (const_int 1)))] > - "arm_arch5 && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM) > + "arm_arch5t && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM) > && !(TARGET_THUMB2 && optimize_insn_for_size_p ())" > [(set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2))) > (set (match_dup 0) (clz:SI (match_dup 0))) > @@ -11273,7 +11273,7 @@ (define_insn "consttable_16" > (define_insn "clzsi2" > [(set (match_operand:SI 0 "s_register_operand" "=r") > (clz:SI (match_operand:SI 1 "s_register_operand" "r")))] > - "TARGET_32BIT && arm_arch5" > + "TARGET_32BIT && arm_arch5t" > "clz%?\\t%0, %1" > [(set_attr "predicable" "yes") > (set_attr "type" "clz")]) > @@ -11309,7 +11309,7 @@ (define_insn "prefetch" > [(prefetch (match_operand:SI 0 "address_operand" "p") > (match_operand:SI 1 "" "") > (match_operand:SI 2 "" ""))] > - "TARGET_32BIT && arm_arch5e" > + "TARGET_32BIT && arm_arch5te" > "pld\\t%a0" > [(set_attr "type" "load_4")] > ) > diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf > index > 9ec5bf065acecff4787a3e59b5f8305bf3b715e7..aa36ff08d783a1c7281d4d9e14c1243cc263e4d4 > 100644 > --- a/gcc/config/arm/t-arm-elf > +++ b/gcc/config/arm/t-arm-elf > @@ -39,9 +39,9 @@ v7ve_fps := vfpv3-d16 vfpv3 vfpv3-d16-fp16 vfpv3-fp16 > vfpv4 neon \ > v8_fps := simd fp16 crypto fp16+crypto dotprod fp16fml > > # We don't do anything special with these. Pre-v4t probably doesn't work. > -all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t > +all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5t > > -all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z armv6kz \ > +all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \ > armv6zk armv6t2 iwmmxt iwmmxt2 > > all_v7_a_r := armv7-a armv7ve armv7-r > diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib > index > 3d0c824b4ec8cacfadbbe765d9ad6fb3d83f4328..25788ad09851daf41038b1578307bf23b7f34a94 > 100644 > --- a/gcc/config/arm/t-multilib > +++ b/gcc/config/arm/t-multilib > @@ -58,7 +58,7 @@ all_feat_combs = +$(firstword $(1)) \ > +$(firstword $(1))$(OPT) $(OPT)),) > > # Variables used. > -all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z > armv6kz \ > +all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \ > armv6zk armv6t2 iwmmxt iwmmxt2 > v7_a_nosimd_variants := +fp +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +vfpv4-d16 > +vfpv4 > v7_a_simd_variants := +simd +neon-fp16 +neon-vfpv4 > diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md > index > a345c798ce4011939429c4c529045b4365799143..19dcdbcdd7333b3711e1d71c55cb89ae1d24204e > 100644 > --- a/gcc/config/arm/thumb1.md > +++ b/gcc/config/arm/thumb1.md > @@ -1725,7 +1725,7 @@ (define_insn "*call_reg_thumb1_v5" > (match_operand 1 "" "")) > (use (match_operand 2 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_THUMB1 && arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_THUMB1 && arm_arch5t && !SIBLING_CALL_P (insn)" > "blx\\t%0" > [(set_attr "length" "2") > (set_attr "type" "call")] > @@ -1748,7 +1748,7 @@ (define_insn "*call_reg_thumb1" > (match_operand 1 "" "")) > (use (match_operand 2 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_THUMB1 && !arm_arch5 && !SIBLING_CALL_P (insn)" > + "TARGET_THUMB1 && !arm_arch5t && !SIBLING_CALL_P (insn)" > "* > { > if (!TARGET_CALLER_INTERWORKING) > @@ -1769,7 +1769,7 @@ (define_insn "*call_value_reg_thumb1_v5" > (match_operand 2 "" ""))) > (use (match_operand 3 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_THUMB1 && arm_arch5" > + "TARGET_THUMB1 && arm_arch5t" > "blx\\t%1" > [(set_attr "length" "2") > (set_attr "type" "call")] > @@ -1795,7 +1795,7 @@ (define_insn "*call_value_reg_thumb1" > (match_operand 2 "" ""))) > (use (match_operand 3 "" "")) > (clobber (reg:SI LR_REGNUM))] > - "TARGET_THUMB1 && !arm_arch5" > + "TARGET_THUMB1 && !arm_arch5t" > "* > { > if (!TARGET_CALLER_INTERWORKING) > diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h > index > 4c99563999ff65456dbee1134c82f24d7b3b1522..fc0e411f6aff1edd418c737a61b2000deee1c6b5 > 100644 > --- a/gcc/config/arm/vxworks.h > +++ b/gcc/config/arm/vxworks.h > @@ -60,13 +60,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. > If not, see > else \ > builtin_define ("CPU=ARMARCH6"); \ > } \ > - else if (arm_arch5) \ > - { \ > - if (TARGET_THUMB) \ > - builtin_define ("CPU=ARMARCH5_T"); \ > - else \ > - builtin_define ("CPU=ARMARCH5"); \ > - } \ > + else if (arm_arch5t) \ > + builtin_define ("CPU=ARMARCH5_T"); \ > else if (arm_arch4) \ > { \ > if (TARGET_THUMB) \ > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index > b78a2d67b0dfef91a4b5c2d5ebafa264701c5228..8ed8fbbeab49deb570e8ad30eee024f8ba1e5ed8 > 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -15902,7 +15902,7 @@ Permissible names are: > Additionally, the following architectures, which lack support for the > Thumb execution state, are recognized but support is deprecated: > @samp{armv2}, @samp{armv2a}, @samp{armv3}, @samp{armv3m}, > -@samp{armv4}, @samp{armv5} and @samp{armv5e}. > +@samp{armv4}. > > Many of the architectures support extensions. These can be added by > appending @samp{+@var{extension}} to the architecture name. Extension > @@ -15930,7 +15930,6 @@ The table below lists the supported extensions for > each architecture. > Architectures not mentioned do not support any extensions. > > @table @samp > -@item armv5e > @itemx armv5te > @itemx armv6 > @itemx armv6j > diff --git a/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c > b/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c > deleted file mode 100644 > index > 80a00aec978778e848ea47d1eb00974fe7b0d3f5..0000000000000000000000000000000000000000 > --- a/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c > +++ /dev/null > @@ -1,8 +0,0 @@ > -/* { dg-require-effective-target arm_arch_v5_ok } */ > -/* { dg-add-options arm_arch_v5 } */ > - > -#if __ARM_ARCH_ISA_THUMB > -#error "__ARM_ARCH_ISA_THUMB defined for ARMv5" > -#endif > - > -int foo; > diff --git a/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c > b/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c > index > c2959165b36c8838e867d5de0d06cb6deb14a605..422b061c7a7049fab9060253bc036980584793ed > 100644 > --- a/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c > +++ b/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c > @@ -1,7 +1,7 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target arm_arch_v5_ok } */ > -/* { dg-options "-std=gnu99" } */ > -/* { dg-add-options arm_arch_v5 } */ > +/* { dg-require-effective-target arm_arch_v5t_ok } */ > +/* { dg-options "-marm -std=gnu99" } */ > +/* { dg-add-options arm_arch_v5t } */ > /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" > "fetch_and_nand" { target *-*-* } 0 } */ > /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" > "nand_and_fetch" { target *-*-* } 0 } */ > /* { dg-message "file included" "In file included" { target *-*-* } 0 } */ > diff --git a/gcc/testsuite/lib/target-supports.exp > b/gcc/testsuite/lib/target-supports.exp > index > cfc22a2297587351ac7f8eed692adc9c42a69033..e0f780deb0b5619abf9bc2e0bf368361b952053a > 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -4089,12 +4089,11 @@ proc check_effective_target_arm_fp16_hw { } { > # extension (eg. ARMv8.1-A) since there is no macro defined for them. See > # how only __ARM_ARCH_8A__ is checked for ARMv8.1-A. > # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */ > -# /* { dg-add-options arm_arch_v5 } */ > -# /* { dg-require-effective-target arm_arch_v5_multilib } */ > +# /* { dg-add-options arm_arch_v5t } */ > +# /* { dg-require-effective-target arm_arch_v5t_multilib } */ > foreach { armfunc armflag armdefs } { > v4 "-march=armv4 -marm" __ARM_ARCH_4__ > v4t "-march=armv4t" __ARM_ARCH_4T__ > - v5 "-march=armv5 -marm" __ARM_ARCH_5__ > v5t "-march=armv5t" __ARM_ARCH_5T__ > v5te "-march=armv5te" __ARM_ARCH_5TE__ > v6 "-march=armv6" __ARM_ARCH_6__ > diff --git a/libgcc/config/arm/libunwind.S b/libgcc/config/arm/libunwind.S > index > 8d0ef977b165a50888c0774ab2f1781d03e0ee01..330244716184c7d1e8273c9f71a37ad351e938d8 > 100644 > --- a/libgcc/config/arm/libunwind.S > +++ b/libgcc/config/arm/libunwind.S > @@ -47,8 +47,8 @@ > .endm > > #if (__ARM_ARCH__ == 4) > -/* Some coprocessors require armv5. We know this code will never be run on > - other cpus. Tell gas to allow armv5, but only mark the objects as armv4. > +/* Some coprocessors require armv5t. We know this code will never be run on > + other cpus. Tell gas to allow armv5t, but only mark the objects as armv4. > */ > .arch armv5t > #ifdef __ARM_ARCH_4T__ >