mirror of git://gcc.gnu.org/git/gcc.git
elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to decide whether to prevent...
2016-07-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* config/arm/elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to
decide whether to prevent some libgcc routines being included for some
multilibs rather than __ARM_ARCH_6M__ and add comment to indicate the
link between this condition and the one in
libgcc/config/arm/lib1func.S.
gcc/testsuite/
* lib/target-supports.exp (check_effective_target_arm_cortex_m): Use
__ARM_ARCH_ISA_ARM to test for Cortex-M devices.
libgcc/
* config/arm/bpabi-v6m.S: Clarify what architectures is the
implementation suitable for.
* config/arm/lib1funcs.S (__prefer_thumb__): Define among other cases
for all Thumb-1 only targets.
(NOT_ISA_TARGET_32BIT): Define for Thumb-1 only targets.
(THUMB_LDIV0): Test for NOT_ISA_TARGET_32BIT rather than
__ARM_ARCH_6M__.
(EQUIV): Likewise.
(ARM_FUNC_ALIAS): Likewise.
(umodsi3): Add check to __ARM_ARCH_ISA_THUMB != 1 to guard the idiv
version.
(modsi3): Likewise.
(clzsi2): Test for NOT_ISA_TARGET_32BIT rather than __ARM_ARCH_6M__.
(clzdi2): Likewise.
(ctzsi2): Likewise.
(L_interwork_call_via_rX): Test for __ARM_ARCH_ISA_ARM rather than
__ARM_ARCH_6M__ in guard for checking whether it is defined.
(final includes): Test for NOT_ISA_TARGET_32BIT rather than
__ARM_ARCH_6M__ and add comment to indicate the connection between
this condition and the one in gcc/config/arm/elf.h.
* config/arm/libunwind.S: Test for __ARM_ARCH_ISA_THUMB and
__ARM_ARCH_ISA_ARM rather than __ARM_ARCH_6M__.
* config/arm/t-softfp: Likewise.
From-SVN: r238079
This commit is contained in:
parent
3c5b29f561
commit
6f49395177
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-07-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
|
* config/arm/elf.h: Use __ARM_ARCH_ISA_THUMB and __ARM_ARCH_ISA_ARM to
|
||||||
|
decide whether to prevent some libgcc routines being included for some
|
||||||
|
multilibs rather than __ARM_ARCH_6M__ and add comment to indicate the
|
||||||
|
link between this condition and the one in
|
||||||
|
libgcc/config/arm/lib1func.S.
|
||||||
|
|
||||||
2016-07-07 Richard Biener <rguenther@suse.de>
|
2016-07-07 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-ssa-pre.c: Include alias.h.
|
* tree-ssa-pre.c: Include alias.h.
|
||||||
|
|
|
||||||
|
|
@ -148,8 +148,9 @@
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* Horrible hack: We want to prevent some libgcc routines being included
|
/* Horrible hack: We want to prevent some libgcc routines being included
|
||||||
for some multilibs. */
|
for some multilibs. The condition should match the one in
|
||||||
#ifndef __ARM_ARCH_6M__
|
libgcc/config/arm/lib1funcs.S. */
|
||||||
|
#if __ARM_ARCH_ISA_ARM || __ARM_ARCH_ISA_THUMB != 1
|
||||||
#undef L_fixdfsi
|
#undef L_fixdfsi
|
||||||
#undef L_fixunsdfsi
|
#undef L_fixunsdfsi
|
||||||
#undef L_truncdfsf2
|
#undef L_truncdfsf2
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-07-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
|
* lib/target-supports.exp (check_effective_target_arm_cortex_m): Use
|
||||||
|
__ARM_ARCH_ISA_ARM to test for Cortex-M devices.
|
||||||
|
|
||||||
2016-07-06 Segher Boessenkool <segher@kernel.crashing.org>
|
2016-07-06 Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
PR target/70098
|
PR target/70098
|
||||||
|
|
|
||||||
|
|
@ -3476,10 +3476,8 @@ proc check_effective_target_arm_cortex_m { } {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return [check_no_compiler_messages arm_cortex_m assembly {
|
return [check_no_compiler_messages arm_cortex_m assembly {
|
||||||
#if !defined(__ARM_ARCH_7M__) \
|
#if defined(__ARM_ARCH_ISA_ARM)
|
||||||
&& !defined (__ARM_ARCH_7EM__) \
|
#error __ARM_ARCH_ISA_ARM is defined
|
||||||
&& !defined (__ARM_ARCH_6M__)
|
|
||||||
#error !__ARM_ARCH_7M__ && !__ARM_ARCH_7EM__ && !__ARM_ARCH_6M__
|
|
||||||
#endif
|
#endif
|
||||||
int i;
|
int i;
|
||||||
} "-mthumb"]
|
} "-mthumb"]
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,29 @@
|
||||||
|
2016-07-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
|
* config/arm/bpabi-v6m.S: Clarify what architectures is the
|
||||||
|
implementation suitable for.
|
||||||
|
* config/arm/lib1funcs.S (__prefer_thumb__): Define among other cases
|
||||||
|
for all Thumb-1 only targets.
|
||||||
|
(NOT_ISA_TARGET_32BIT): Define for Thumb-1 only targets.
|
||||||
|
(THUMB_LDIV0): Test for NOT_ISA_TARGET_32BIT rather than
|
||||||
|
__ARM_ARCH_6M__.
|
||||||
|
(EQUIV): Likewise.
|
||||||
|
(ARM_FUNC_ALIAS): Likewise.
|
||||||
|
(umodsi3): Add check to __ARM_ARCH_ISA_THUMB != 1 to guard the idiv
|
||||||
|
version.
|
||||||
|
(modsi3): Likewise.
|
||||||
|
(clzsi2): Test for NOT_ISA_TARGET_32BIT rather than __ARM_ARCH_6M__.
|
||||||
|
(clzdi2): Likewise.
|
||||||
|
(ctzsi2): Likewise.
|
||||||
|
(L_interwork_call_via_rX): Test for __ARM_ARCH_ISA_ARM rather than
|
||||||
|
__ARM_ARCH_6M__ in guard for checking whether it is defined.
|
||||||
|
(final includes): Test for NOT_ISA_TARGET_32BIT rather than
|
||||||
|
__ARM_ARCH_6M__ and add comment to indicate the connection between
|
||||||
|
this condition and the one in gcc/config/arm/elf.h.
|
||||||
|
* config/arm/libunwind.S: Test for __ARM_ARCH_ISA_THUMB and
|
||||||
|
__ARM_ARCH_ISA_ARM rather than __ARM_ARCH_6M__.
|
||||||
|
* config/arm/t-softfp: Likewise.
|
||||||
|
|
||||||
2016-07-06 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
|
2016-07-06 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
|
||||||
|
|
||||||
* libgcc2.c (SYMBOL__MAIN): Remove checks for
|
* libgcc2.c (SYMBOL__MAIN): Remove checks for
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/* Miscellaneous BPABI functions. ARMv6M implementation
|
/* Miscellaneous BPABI functions. Thumb-1 implementation, suitable for ARMv4T,
|
||||||
|
ARMv6-M and ARMv8-M Baseline like ISA variants.
|
||||||
|
|
||||||
Copyright (C) 2006-2016 Free Software Foundation, Inc.
|
Copyright (C) 2006-2016 Free Software Foundation, Inc.
|
||||||
Contributed by CodeSourcery.
|
Contributed by CodeSourcery.
|
||||||
|
|
|
||||||
|
|
@ -124,10 +124,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
&& !defined(__thumb2__) \
|
&& !defined(__thumb2__) \
|
||||||
&& (!defined(__THUMB_INTERWORK__) \
|
&& (!defined(__THUMB_INTERWORK__) \
|
||||||
|| defined (__OPTIMIZE_SIZE__) \
|
|| defined (__OPTIMIZE_SIZE__) \
|
||||||
|| defined(__ARM_ARCH_6M__)))
|
|| !__ARM_ARCH_ISA_ARM))
|
||||||
# define __prefer_thumb__
|
# define __prefer_thumb__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !__ARM_ARCH_ISA_ARM && __ARM_ARCH_ISA_THUMB == 1
|
||||||
|
#define NOT_ISA_TARGET_32BIT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/* How to return from a function call depends on the architecture variant. */
|
/* How to return from a function call depends on the architecture variant. */
|
||||||
|
|
||||||
#if (__ARM_ARCH__ > 4) || defined(__ARM_ARCH_4T__)
|
#if (__ARM_ARCH__ > 4) || defined(__ARM_ARCH_4T__)
|
||||||
|
|
@ -305,7 +309,7 @@ LSYM(Lend_fde):
|
||||||
|
|
||||||
#ifdef __ARM_EABI__
|
#ifdef __ARM_EABI__
|
||||||
.macro THUMB_LDIV0 name signed
|
.macro THUMB_LDIV0 name signed
|
||||||
#if defined(__ARM_ARCH_6M__)
|
#ifdef NOT_ISA_TARGET_32BIT
|
||||||
.ifc \signed, unsigned
|
.ifc \signed, unsigned
|
||||||
cmp r0, #0
|
cmp r0, #0
|
||||||
beq 1f
|
beq 1f
|
||||||
|
|
@ -478,7 +482,7 @@ _L__\name:
|
||||||
|
|
||||||
#else /* !(__INTERWORKING_STUBS__ || __thumb2__) */
|
#else /* !(__INTERWORKING_STUBS__ || __thumb2__) */
|
||||||
|
|
||||||
#ifdef __ARM_ARCH_6M__
|
#ifdef NOT_ISA_TARGET_32BIT
|
||||||
#define EQUIV .thumb_set
|
#define EQUIV .thumb_set
|
||||||
#else
|
#else
|
||||||
.macro ARM_FUNC_START name sp_section=
|
.macro ARM_FUNC_START name sp_section=
|
||||||
|
|
@ -510,7 +514,7 @@ SYM (__\name):
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#ifndef __ARM_ARCH_6M__
|
#ifndef NOT_ISA_TARGET_32BIT
|
||||||
.macro ARM_FUNC_ALIAS new old
|
.macro ARM_FUNC_ALIAS new old
|
||||||
.globl SYM (__\new)
|
.globl SYM (__\new)
|
||||||
EQUIV SYM (__\new), SYM (__\old)
|
EQUIV SYM (__\new), SYM (__\old)
|
||||||
|
|
@ -1054,7 +1058,7 @@ ARM_FUNC_START aeabi_uidivmod
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
#ifdef L_umodsi3
|
#ifdef L_umodsi3
|
||||||
|
|
||||||
#ifdef __ARM_ARCH_EXT_IDIV__
|
#if defined(__ARM_ARCH_EXT_IDIV__) && __ARM_ARCH_ISA_THUMB != 1
|
||||||
|
|
||||||
ARM_FUNC_START umodsi3
|
ARM_FUNC_START umodsi3
|
||||||
|
|
||||||
|
|
@ -1240,7 +1244,7 @@ ARM_FUNC_START aeabi_idivmod
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
#ifdef L_modsi3
|
#ifdef L_modsi3
|
||||||
|
|
||||||
#if defined(__ARM_ARCH_EXT_IDIV__)
|
#if defined(__ARM_ARCH_EXT_IDIV__) && __ARM_ARCH_ISA_THUMB != 1
|
||||||
|
|
||||||
ARM_FUNC_START modsi3
|
ARM_FUNC_START modsi3
|
||||||
|
|
||||||
|
|
@ -1515,7 +1519,7 @@ LSYM(Lover12):
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef L_clzsi2
|
#ifdef L_clzsi2
|
||||||
#if defined(__ARM_ARCH_6M__)
|
#ifdef NOT_ISA_TARGET_32BIT
|
||||||
FUNC_START clzsi2
|
FUNC_START clzsi2
|
||||||
mov r1, #28
|
mov r1, #28
|
||||||
mov r3, #1
|
mov r3, #1
|
||||||
|
|
@ -1576,7 +1580,7 @@ ARM_FUNC_START clzsi2
|
||||||
#ifdef L_clzdi2
|
#ifdef L_clzdi2
|
||||||
#if !defined(HAVE_ARM_CLZ)
|
#if !defined(HAVE_ARM_CLZ)
|
||||||
|
|
||||||
# if defined(__ARM_ARCH_6M__)
|
# ifdef NOT_ISA_TARGET_32BIT
|
||||||
FUNC_START clzdi2
|
FUNC_START clzdi2
|
||||||
push {r4, lr}
|
push {r4, lr}
|
||||||
# else
|
# else
|
||||||
|
|
@ -1601,7 +1605,7 @@ ARM_FUNC_START clzdi2
|
||||||
bl __clzsi2
|
bl __clzsi2
|
||||||
# endif
|
# endif
|
||||||
2:
|
2:
|
||||||
# if defined(__ARM_ARCH_6M__)
|
# ifdef NOT_ISA_TARGET_32BIT
|
||||||
pop {r4, pc}
|
pop {r4, pc}
|
||||||
# else
|
# else
|
||||||
RETLDM r4
|
RETLDM r4
|
||||||
|
|
@ -1623,7 +1627,7 @@ ARM_FUNC_START clzdi2
|
||||||
#endif /* L_clzdi2 */
|
#endif /* L_clzdi2 */
|
||||||
|
|
||||||
#ifdef L_ctzsi2
|
#ifdef L_ctzsi2
|
||||||
#if defined(__ARM_ARCH_6M__)
|
#ifdef NOT_ISA_TARGET_32BIT
|
||||||
FUNC_START ctzsi2
|
FUNC_START ctzsi2
|
||||||
neg r1, r0
|
neg r1, r0
|
||||||
and r0, r0, r1
|
and r0, r0, r1
|
||||||
|
|
@ -1738,7 +1742,7 @@ ARM_FUNC_START ctzsi2
|
||||||
|
|
||||||
/* Don't bother with the old interworking routines for Thumb-2. */
|
/* Don't bother with the old interworking routines for Thumb-2. */
|
||||||
/* ??? Maybe only omit these on "m" variants. */
|
/* ??? Maybe only omit these on "m" variants. */
|
||||||
#if !defined(__thumb2__) && !defined(__ARM_ARCH_6M__)
|
#if !defined(__thumb2__) && __ARM_ARCH_ISA_ARM
|
||||||
|
|
||||||
#if defined L_interwork_call_via_rX
|
#if defined L_interwork_call_via_rX
|
||||||
|
|
||||||
|
|
@ -1983,11 +1987,12 @@ LSYM(Lchange_\register):
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#ifndef __symbian__
|
#ifndef __symbian__
|
||||||
#ifndef __ARM_ARCH_6M__
|
/* The condition here must match the one in gcc/config/arm/elf.h. */
|
||||||
|
#ifndef NOT_ISA_TARGET_32BIT
|
||||||
#include "ieee754-df.S"
|
#include "ieee754-df.S"
|
||||||
#include "ieee754-sf.S"
|
#include "ieee754-sf.S"
|
||||||
#include "bpabi.S"
|
#include "bpabi.S"
|
||||||
#else /* __ARM_ARCH_6M__ */
|
#else /* NOT_ISA_TARGET_32BIT */
|
||||||
#include "bpabi-v6m.S"
|
#include "bpabi-v6m.S"
|
||||||
#endif /* __ARM_ARCH_6M__ */
|
#endif /* NOT_ISA_TARGET_32BIT */
|
||||||
#endif /* !__symbian__ */
|
#endif /* !__symbian__ */
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __ARM_ARCH_6M__
|
#if !__ARM_ARCH_ISA_ARM && __ARM_ARCH_ISA_THUMB == 1
|
||||||
|
|
||||||
/* r0 points to a 16-word block. Upload these values to the actual core
|
/* r0 points to a 16-word block. Upload these values to the actual core
|
||||||
state. */
|
state. */
|
||||||
|
|
@ -169,7 +169,7 @@ FUNC_START gnu_Unwind_Save_WMMXC
|
||||||
UNPREFIX \name
|
UNPREFIX \name
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#else /* !__ARM_ARCH_6M__ */
|
#else /* __ARM_ARCH_ISA_ARM || __ARM_ARCH_ISA_THUMB != 1 */
|
||||||
|
|
||||||
/* r0 points to a 16-word block. Upload these values to the actual core
|
/* r0 points to a 16-word block. Upload these values to the actual core
|
||||||
state. */
|
state. */
|
||||||
|
|
@ -351,7 +351,7 @@ ARM_FUNC_START gnu_Unwind_Save_WMMXC
|
||||||
UNPREFIX \name
|
UNPREFIX \name
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#endif /* !__ARM_ARCH_6M__ */
|
#endif /* __ARM_ARCH_ISA_ARM || __ARM_ARCH_ISA_THUMB != 1 */
|
||||||
|
|
||||||
UNWIND_WRAPPER _Unwind_RaiseException 1
|
UNWIND_WRAPPER _Unwind_RaiseException 1
|
||||||
UNWIND_WRAPPER _Unwind_Resume 1
|
UNWIND_WRAPPER _Unwind_Resume 1
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
softfp_wrap_start := '\#ifdef __ARM_ARCH_6M__'
|
softfp_wrap_start := '\#if !__ARM_ARCH_ISA_ARM && __ARM_ARCH_ISA_THUMB == 1'
|
||||||
softfp_wrap_end := '\#endif'
|
softfp_wrap_end := '\#endif'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue