Hi Thomas,

On 25/05/16 14:22, Thomas Preudhomme wrote:
Hi Kyrill,

Please find an updated version below. Note that I also:

* removed the change to bpabi-v6m.S because that actually accurately describe
the implementation (using instructions from ARMv6-M) and does not suggest it
is not compatible with other architecture (it does not say ARMv6-M only)
* kept the TARGET_ARM_V*M unchanged, this is now dealt in a separate patch


ChangeLog entries are now as follow:


*** gcc/ChangeLog ***

2016-05-23  Thomas Preud'homme  <thomas.preudho...@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.


*** gcc/testsuite/ChangeLog ***

2015-11-10  Thomas Preud'homme  <thomas.preudho...@arm.com>

         * lib/target-supports.exp (check_effective_target_arm_cortex_m): Use
         __ARM_ARCH_ISA_ARM to test for Cortex-M devices.


*** libgcc/ChangeLog ***

2016-05-23  Thomas Preud'homme  <thomas.preudho...@arm.com>

         * config/arm/lib1funcs.S (__prefer_thumb__): Define among other cases
         for all Thumb-1 only targets.
         (__only_thumb1__): Define for all Thumb-1 only targets.
         (THUMB_LDIV0): Test for __only_thumb1__ rather than __ARM_ARCH_6M__.
         (EQUIV): Likewise.
         (ARM_FUNC_ALIAS): Likewise.
         (umodsi3): Add check to __only_thumb1__ to guard the idiv version.
         (modsi3): Likewise.
         (HAVE_ARM_CLZ): Remove block defining it.
         (clzsi2): Test for __only_thumb1__ rather than __ARM_ARCH_6M__ and
         check __ARM_FEATURE_CLZ instead of HAVE_ARM_CLZ.
         (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 __only_thumb1__ 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.


Updated patch is attached to this mail.

Thanks, the gcc/ changes look ok to me.
The libgcc/ changes look sensible to me too, but I don't know libgcc
very well so there could be something I'm missing.
So please wait for an ok from an arm maintainer on this.

Kyrill

Best regards,

Thomas

On Thursday 19 May 2016 18:01:16 Kyrill Tkachov wrote:
On 19/05/16 17:55, Thomas Preudhomme wrote:
On Thursday 19 May 2016 17:42:26 Kyrill Tkachov wrote:
Hi Thomas,

I'm not very familiar with the libgcc machinery, but I have a comment on
an
arm.h hunk inline.

On 17/05/16 10:58, Thomas Preudhomme wrote:
Ping?

*** gcc/ChangeLog ***

2015-11-13  Thomas Preud'homme  <thomas.preudho...@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.
           * config/arm/arm.h (TARGET_ARM_V6M): Add check to
           TARGET_ARM_ARCH.
           (TARGET_ARM_V7M): Likewise.

*** gcc/testsuite/ChangeLog ***

2015-11-10  Thomas Preud'homme  <thomas.preudho...@arm.com>

           * lib/target-supports.exp
           (check_effective_target_arm_cortex_m):
           Use
           __ARM_ARCH_ISA_ARM to test for Cortex-M devices.

*** libgcc/ChangeLog ***

2015-12-17  Thomas Preud'homme  <thomas.preudho...@arm.com>

           * config/arm/bpabi-v6m.S: Fix header comment to mention
           Thumb-1
           rather
           than ARMv6-M.
           * config/arm/lib1funcs.S (__prefer_thumb__): Define among
           other
           cases
           for all Thumb-1 only targets.
           (__only_thumb1__): Define for all Thumb-1 only targets.
           (THUMB_LDIV0): Test for __only_thumb1__ rather than
           __ARM_ARCH_6M__.
           (EQUIV): Likewise.
           (ARM_FUNC_ALIAS): Likewise.
           (umodsi3): Add check to __only_thumb1__ to guard the idiv
           version.
           (modsi3): Likewise.
           (HAVE_ARM_CLZ): Remove block defining it.
           (clzsi2): Test for __only_thumb1__ rather than __ARM_ARCH_6M__
           and
           check __ARM_FEATURE_CLZ instead of HAVE_ARM_CLZ.
           (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 __only_thumb1__ 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.

diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index
5b1a03080d0a00fc1ef6934f6bce552e65230640..7eb11d920944c693700d80bb3fb3f9
fe
66611c19 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -2188,8 +2188,10 @@ extern int making_const_table;

    #define TARGET_ARM_ARCH     \
(arm_base_arch) \

-#define TARGET_ARM_V6M (!arm_arch_notm && !arm_arch_thumb2)
-#define TARGET_ARM_V7M (!arm_arch_notm && arm_arch_thumb2)
+#define TARGET_ARM_V6M (TARGET_ARM_ARCH == BASE_ARCH_6M &&
!arm_arch_notm
\ +                     && !arm_arch_thumb2)
+#define TARGET_ARM_V7M (TARGET_ARM_ARCH == BASE_ARCH_7M &&
!arm_arch_notm
\ +                     && arm_arch_thumb2)
I think now that you're checking TARGET_ARM_ARCH you don't need
the "!arm_arch_notm && !arm_arch_thumb2" && "!arm_arch_notm &&
arm_arch_thumb2".
% git --no-pager grep TARGET_ARM_V.M config/arm
config/arm/arm.h:#define TARGET_ARM_V6M (!arm_arch_notm &&
!arm_arch_thumb2) config/arm/arm.h:#define TARGET_ARM_V7M (!arm_arch_notm
&& arm_arch_thumb2)

What about just removing those? I kept them because I wasn't sure of their
purpose but I think we should just remove them.
That's fine with me.
Then you'd also want to remove the TARGET_ARM_V8M definition from your
second patch that I flagged up in that review.

Kyrill

Best regards,

Thomas

Reply via email to