arm: Fix multilib mapping for CDE extensions [PR100856].
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Fri, 18 Jun 2021 12:21:51 +0000 (13:21 +0100)
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Fri, 18 Jun 2021 12:22:02 +0000 (13:22 +0100)
commitf58d03b5df25f9eab06b7eacea8da780fc2e0219
tree3f9215230806ed15b6bb3ee2c17ef9dc4a8cc954
parentcfa1f8226f275447015e2cb3fb0d876133e6509b
arm: Fix multilib mapping for CDE extensions [PR100856].

On passing +cdecp[0-7] extension to the -march string in command line options,
multilib linking is failing as mentioned in PR100856. This patch fixes this issue by
generating a separate canonical string by removing compiler options which are not
required for multilib linking from march string and assign the new string to mlibarch
option. This mlibarch string is used for multilib comparison.

gcc/ChangeLog:

2021-06-10  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

PR target/100856
* common/config/arm/arm-common.c (arm_canon_arch_option_1): New function
derived from arm_canon_arch.
(arm_canon_arch_option): Call it.
(arm_canon_arch_multilib_option): New function.
* config/arm/arm-cpus.in (IGNORE_FOR_MULTILIB): New fgroup.
* config/arm/arm.h (arm_canon_arch_multilib_option): New prototype.
(CANON_ARCH_MULTILIB_SPEC_FUNCTION): New macro.
(MULTILIB_ARCH_CANONICAL_SPECS): New macro.
(DRIVER_SELF_SPECS): Add MULTILIB_ARCH_CANONICAL_SPECS.
* config/arm/arm.opt (mlibarch): New option.
* config/arm/t-rmprofile (MULTILIB_MATCHES): For armv8*-m, replace use
of march on RHS with mlibarch.

gcc/testsuite/ChangeLog:

2021-06-10  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

PR target/100856
* gcc.target/arm/acle/pr100856.c: New test.
* gcc.target/arm/multilib.exp: Add tests for cde options.
gcc/common/config/arm/arm-common.c
gcc/config/arm/arm-cpus.in
gcc/config/arm/arm.h
gcc/config/arm/arm.opt
gcc/config/arm/t-rmprofile
gcc/testsuite/gcc.target/arm/acle/pr100856.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/multilib.exp