[arm,1/2] Remove support for deprecated -march=armv5 and armv5e

Message ID 5AFD58EB.70204@foss.arm.com
State New
Headers show
Series
  • [arm,1/2] Remove support for deprecated -march=armv5 and armv5e
Related show

Commit Message

Kyrill Tkachov May 17, 2018, 10:26 a.m.
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.

Thanks,
Kyrill

[1] https://gcc.gnu.org/gcc-7/changes.html#arm

gcc/
2018-05-17  Kyrylo Tkachov  <kyrylo.tkachov@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.tkachov@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.tkachov@arm.com>

     * config/arm/libunwind.S: Update comment relating to armv5.

Comments

Richard Earnshaw (lists) May 18, 2018, 10:16 a.m. | #1
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.tkachov@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.tkachov@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.tkachov@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__

>

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__