public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Christophe Lyon <clyon@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r12-3067] arm: Fix multilib mapping for CDE extensions [PR100856]
Date: Mon, 23 Aug 2021 09:06:23 +0000 (GMT)	[thread overview]
Message-ID: <20210823090623.B9E593858417@sourceware.org> (raw)

https://gcc.gnu.org/g:63f68535550f77998ad907ba3d3be05a4324fbe8

commit r12-3067-g63f68535550f77998ad907ba3d3be05a4324fbe8
Author: Christophe Lyon <christophe.lyon@foss.st.com>
Date:   Thu Jul 15 12:57:18 2021 +0000

    arm: Fix multilib mapping for CDE extensions [PR100856]
    
    This is a followup to Srinath's recent patch: the newly added test is
    failing e.g. on arm-linux-gnueabihf without R/M profile multilibs.
    
    It is also failing on arm-eabi with R/M profile multilibs if the
    execution engine does not support v8.1-M instructions.
    
    The patch avoids this by adding check_effective_target_FUNC_multilib
    in target-supports.exp which effectively checks whether the target
    supports linking and execution, like what is already done for other
    ARM effective targets.  pr100856.c is updated to use it instead of
    arm_v8_1m_main_cde_mve_ok (which makes the testcase a bit of a
    duplicate with check_effective_target_FUNC_multilib).
    
    In addition, I noticed that requiring MVE does not seem necessary and
    this enables the test to pass even when targeting a CPU without MVE:
    since the test does not involve actual CDE instructions, it can pass
    on other architecture versions.  For instance, when requiring MVE, we
    have to use cortex-m55 under QEMU for the test to pass because the
    memset() that comes from v8.1-m.main+mve multilib uses LOB
    instructions (DLS) (memset is used during startup).  Keeping
    arm_v8_1m_main_cde_mve_ok would mean we would enable the test provided
    we have the right multilibs, causing a runtime error if the simulator
    does not support LOB instructions (e.g. when targeting cortex-m7).
    
    I do not update sourcebuild.texi since the CDE effective targets are
    already collectively documented.
    
    Finally, the patch fixes two typos in comments.
    
    2021-07-15  Christophe Lyon  <christophe.lyon@foss.st.com>
    
            PR target/100856
            gcc/
            * config/arm/arm.opt: Fix typo.
            * config/arm/t-rmprofile: Fix typo.
    
            gcc/testsuite/
            * gcc.target/arm/acle/pr100856.c: Use arm_v8m_main_cde_multilib
            and arm_v8m_main_cde.
            * lib/target-supports.exp: Add
            check_effective_target_FUNC_multilib for ARM CDE.

Diff:
---
 gcc/config/arm/arm.opt                       |  2 +-
 gcc/config/arm/t-rmprofile                   |  2 +-
 gcc/testsuite/gcc.target/arm/acle/pr100856.c |  4 ++--
 gcc/testsuite/lib/target-supports.exp        | 18 ++++++++++++++++++
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
index af478a946b2..7417b55122a 100644
--- a/gcc/config/arm/arm.opt
+++ b/gcc/config/arm/arm.opt
@@ -82,7 +82,7 @@ EnumValue
 Enum(arm_arch) String(native) Value(-1) DriverOnly
 
 ; Set to the name of target architecture which is required for
-; multilib linking.  This option is undocumented becuase it
+; multilib linking.  This option is undocumented because it
 ; should not be used by the users.
 mlibarch=
 Target RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly Undocumented
diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile
index 3e75fcc9635..a6036bf0a51 100644
--- a/gcc/config/arm/t-rmprofile
+++ b/gcc/config/arm/t-rmprofile
@@ -54,7 +54,7 @@ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+mve/mfloat-abi=hard
 MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m
 
 # For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right hand side
-# of = in the variant string instead of march?.  This is needed becuase all the
+# of = in the variant string instead of march?.  This is needed because all the
 # MULITIB_MATCHES variant strings are compared with mlibarch option for multilib
 # linking.
 
diff --git a/gcc/testsuite/gcc.target/arm/acle/pr100856.c b/gcc/testsuite/gcc.target/arm/acle/pr100856.c
index 5bc030e2e46..adbe1ab08f7 100644
--- a/gcc/testsuite/gcc.target/arm/acle/pr100856.c
+++ b/gcc/testsuite/gcc.target/arm/acle/pr100856.c
@@ -1,6 +1,6 @@
 /* { dg-do run } */
-/* { dg-require-effective-target arm_v8_1m_main_cde_mve_ok } */
-/* { dg-add-options arm_v8_1m_main_cde_mve } */
+/* { dg-require-effective-target arm_v8m_main_cde_multilib } */
+/* { dg-add-options arm_v8m_main_cde } */
 
 #include "arm_cde.h"
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 44465b14b06..66ce48d7dfd 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -5518,6 +5518,24 @@ foreach { armfunc armflag armdef arminc } {
 	    global et_FUNC_flags
 	    return "$flags $et_FUNC_flags"
 	}
+
+	proc check_effective_target_FUNC_multilib { } {
+	    if { ! [check_effective_target_FUNC_ok] } {
+		return 0;
+	    }
+	    return [check_runtime FUNC_multilib {
+		#if !(DEF)
+		#error "DEF failed"
+		#endif
+		#include <arm_cde.h>
+		INC
+		int
+		main (void)
+		{
+		    return 0;
+		}
+	    } [add_options_for_FUNC ""]]
+        }
     }]
 }


                 reply	other threads:[~2021-08-23  9:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210823090623.B9E593858417@sourceware.org \
    --to=clyon@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).