This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH][gas][arm] Add -mwarn-restrict-it
- From: Wilco Dijkstra <Wilco dot Dijkstra at arm dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Fri, 6 Dec 2019 15:02:12 +0000
- Subject: [PATCH][gas][arm] Add -mwarn-restrict-it
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fffmYQ4EgTv5ru62rWztDnsBHjZUDZho0dV6hboUvYg=; b=LcfJzL3HmFScOmijR1JeR2z9YbPjjWAu2G+bDDbmIgOm7kOUfGbafQ+x6qiN1WPRu3zwwmN51k4JT7sDJGiNCiYjxMaCmINruLBOQNzhJIhACNB5V8dJgA9Kex9OtqkL9VGqGCXzX5+Tu0w0RduRIqafqc9SYvQBexiKL+WiY2Kz3nxVLBPkbTPUzQ/ITW0RPDDml6t31B3aWXIqoAmZLO0SzCCYw5tayqDGqSNv2pPGN9eOv7PCd6nDn7yHu/zos4lJoMtgjUnOmPXQ85h9gMKcQlGTBW2/UWKpSo5rIzLBQjcqMyiATUpB7qKQu3TcrShPJ1/+EHZsdPjFD0XRCw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WDoQO+eQHSAA7BPeTkEkYiPiRPNxQIJtm2HuX98U5iWFejVgwWzkXSTjkxX+9gcA5KUUpPKv1Ao4gOAHGhASdktyb2XhxXqUM7vPmKZ4rBcwco6UlfU9b2ROym0nViNDNhS7k5l3LnJdAwaZDQLAD6mk9FAcJhm09X0RWk/3jnFXu42RxcOsE3PTMd/s5iotbi7cnB2DuFiYfLzA3eg4fmjx9ciodbPzyo6LnEfgRwtFOK7dPBUhheZMTC0Cgtu8NrgRL8zyDhLeseXe0y0/QbXp8AB+EX4YYzH/CYyd2aQowh6ZPh38JtOdBECUJK8fJMWtvMGTkRP7SA4qPVe1RA==
- Original-authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wilco dot Dijkstra at arm dot com;
Hi,
Add a -m{no-}warn-restrict-it option to control IT related warnings in
ARMv8-A and ARMv8-R. This is disabled by default. Testsuite passes OK.
gas/ChangeLog:
2019-12-06 Wilco Dijkstra <wdijkstr@arm.com>
* config/tc-arm.c (warn_on_restrict_it): Add new variable.
(it_fsm_post_encode): Check warn_on_restrict_it.
(arm_option_table): Add -mwarn-restrict-it/-mno-warn-restrict-it.
* testsuite/gas/arm/armv8-2-fp16-scalar-bad.d: Add -mwarn-restrict-it.
* testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d: Likewise.
* testsuite/gas/arm/armv8-a-bad.d: Likewise.
* testsuite/gas/arm/armv8-a-it-bad.d: Likewise.
* testsuite/gas/arm/armv8-r-bad.d: Likewise.
* testsuite/gas/arm/armv8-r-it-bad.d: Likewise.
* testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d: Likewise.
* testsuite/gas/arm/udf.d: Likewise.
--
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 28dc6244510f66f456f036ec3b66b77db7cb61b0..7e9d043ad131aa64258c18b412dbbed268caf0e4 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -154,6 +154,7 @@ static int pic_code = FALSE;
static int fix_v4bx = FALSE;
/* Warn on using deprecated features. */
static int warn_on_deprecated = TRUE;
+static int warn_on_restrict_it = FALSE;
/* Understand CodeComposer Studio assembly syntax. */
bfd_boolean codecomposer_syntax = FALSE;
@@ -22788,6 +22789,7 @@ it_fsm_post_encode (void)
handle_pred_state ();
if (now_pred.insn_cond
+ && warn_on_restrict_it
&& !now_pred.warn_deprecated
&& warn_on_deprecated
&& ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_v8)
@@ -30529,6 +30531,11 @@ struct arm_option_table arm_opts[] =
{"mwarn-deprecated", NULL, &warn_on_deprecated, 1, NULL},
{"mno-warn-deprecated", N_("do not warn on use of deprecated feature"),
&warn_on_deprecated, 0, NULL},
+
+ {"mwarn-restrict-it", N_("warn about performance deprecated IT instructions"
+ " in ARMv8-A and ARMv8-R"), &warn_on_restrict_it, 1, NULL},
+ {"mno-warn-restrict-it", NULL, &warn_on_restrict_it, 0, NULL},
+
{"mwarn-syms", N_("warn about symbols that match instruction names [default]"), (int *) (& flag_warn_syms), TRUE, NULL},
{"mno-warn-syms", N_("disable warnings about symobls that match instructions"), (int *) (& flag_warn_syms), FALSE, NULL},
{NULL, NULL, NULL, 0, NULL}
diff --git a/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d b/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d
index b98e7cf7b24806b77d70cc56d5f4a6bef040394a..d9049445144ba2367da84cff68b2c31bb9ad5e3b 100644
--- a/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d
+++ b/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d
@@ -1,4 +1,4 @@
#name: Invalid armv8.2-a scalar fp16
#source: armv8-2-fp16-scalar-bad.s
-#as: -march=armv8.2-a+fp16
+#as: -march=armv8.2-a+fp16 -mwarn-restrict-it
#error_output: armv8-2-fp16-scalar-bad.l
diff --git a/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad.d b/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad.d
index 13eb7c759ff35565751502d6e9ce241956f8d42f..da625db4dd07aff61b93e0f614468b1386773a19 100644
--- a/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad.d
+++ b/gas/testsuite/gas/arm/armv8-2-fp16-scalar-bad.d
@@ -1,4 +1,4 @@
#name: Invalid armv8.2-a scalar fp16
#source: armv8-2-fp16-scalar-bad.s
-#as: -march=armv8.2-a+fp16 -mfpu=fp-armv8
+#as: -march=armv8.2-a+fp16 -mfpu=fp-armv8 -mwarn-restrict-it
#error_output: armv8-2-fp16-scalar-bad.l
diff --git a/gas/testsuite/gas/arm/armv8-a-bad.d b/gas/testsuite/gas/arm/armv8-a-bad.d
index 302658d7a192a24b5b4eb077e494baf0dd4ba220..45109ceeb3f067668dbaf8fd4f03681629d2a916 100644
--- a/gas/testsuite/gas/arm/armv8-a-bad.d
+++ b/gas/testsuite/gas/arm/armv8-a-bad.d
@@ -1,4 +1,4 @@
#name: Invalid v8-a
#source: armv8-ar-bad.s
-#as: -march=armv8-a
+#as: -march=armv8-a -mwarn-restrict-it
#error_output: armv8-ar-bad.l
diff --git a/gas/testsuite/gas/arm/armv8-a-it-bad.d b/gas/testsuite/gas/arm/armv8-a-it-bad.d
index 43fc9f1c5b4585a36f82c6c6439987bdce71a57e..02788e0dcd2fe310dab06f0e1f2a8f66aaca7acb 100644
--- a/gas/testsuite/gas/arm/armv8-a-it-bad.d
+++ b/gas/testsuite/gas/arm/armv8-a-it-bad.d
@@ -1,4 +1,4 @@
#name: Deprecated IT blocks (ARM v8)
#source: armv8-ar-it-bad.s
#error_output: armv8-ar-it-bad.l
-#as: -march=armv8-a -mimplicit-it=always
+#as: -march=armv8-a -mimplicit-it=always -mwarn-restrict-it
diff --git a/gas/testsuite/gas/arm/armv8-r-bad.d b/gas/testsuite/gas/arm/armv8-r-bad.d
index 150390b58717dc5481bb7f3bbdabc1884d0593eb..b643c81de561ffb33ed5e50e59ba7d3589c62ba6 100644
--- a/gas/testsuite/gas/arm/armv8-r-bad.d
+++ b/gas/testsuite/gas/arm/armv8-r-bad.d
@@ -1,4 +1,4 @@
#name: Invalid v8-r
#source: armv8-ar-bad.s
-#as: -march=armv8-r
+#as: -march=armv8-r -mwarn-restrict-it
#error_output: armv8-ar-bad.l
diff --git a/gas/testsuite/gas/arm/armv8-r-it-bad.d b/gas/testsuite/gas/arm/armv8-r-it-bad.d
index 5260ae004fc5bac0edb4f2b9a088064f9036f629..c6f0c5bcae84edc7cb22773a38a10c95c093a9b6 100644
--- a/gas/testsuite/gas/arm/armv8-r-it-bad.d
+++ b/gas/testsuite/gas/arm/armv8-r-it-bad.d
@@ -1,4 +1,4 @@
#name: Deprecated IT blocks (ARM v8)
#source: armv8-ar-it-bad.s
#error_output: armv8-ar-it-bad.l
-#as: -march=armv8-r -mimplicit-it=always
+#as: -march=armv8-r -mimplicit-it=always -mwarn-restrict-it
diff --git a/gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d b/gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d
index 8ca576b2b88a80acd77aa802065c58fcb4484786..41a6cdced739eb38341b6efa08f4be60ba1d0d19 100644
--- a/gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d
+++ b/gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d
@@ -1,4 +1,4 @@
-# as: -march=armv8-a
+# as: -march=armv8-a -mwarn-restrict-it
# name: Invalid SP and PC operands test - THUMB (v8a)
# source: sp-pc-validations-bad-t.s
# error_output: sp-pc-validations-bad-t-v8a.l
diff --git a/gas/testsuite/gas/arm/udf.d b/gas/testsuite/gas/arm/udf.d
index f53a43757e41503da693bc22fd4b7ab16a9492b3..a6a021e4d0329e15c4d400c1d2499e4b70d6d34e 100644
--- a/gas/testsuite/gas/arm/udf.d
+++ b/gas/testsuite/gas/arm/udf.d
@@ -1,6 +1,6 @@
#objdump: -dr --prefix-addresses --show-raw-insn
#name: UDF
-#as: -march=armv8-a
+#as: -march=armv8-a -mwarn-restrict-it
#warning_output: udf.l
#skip: *-*-pe *-*-wince