diff mbox

[ARM] Add deprecation warning on pre-v4t architecture revisions

Message ID 56D5C086.4070802@foss.arm.com
State New
Headers show

Commit Message

Kyrill Tkachov March 1, 2016, 4:17 p.m. UTC
Hi all,

For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
This patch implements this by documenting the deprecation in invoke.texi and adding
a warning whenever the user specifies an -march or -mcpu option that selects such
an architecture revision.

Bootstrapped and tested on arm.

Ok for trunk?

Thanks,
Kyrill

P.S. I'll add a note to changes.html to that effect separately.

2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
     architecture revisions.
     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
     architecture revisions.

2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
     warning.
     * gcc.target/arm/pr62554.c: Likewise.
     * gcc.target/arm/pr69610-1.c: Likewise.
     * gcc.target/arm/pr69610-2.c: Likewise.

Comments

Kyrill Tkachov March 7, 2016, 3:40 p.m. UTC | #1
Ping.
https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00046.html

Thanks,
Kyrill

On 01/03/16 16:17, Kyrill Tkachov wrote:
> Hi all,
>
> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
> This patch implements this by documenting the deprecation in invoke.texi and adding
> a warning whenever the user specifies an -march or -mcpu option that selects such
> an architecture revision.
>
> Bootstrapped and tested on arm.
>
> Ok for trunk?
>
> Thanks,
> Kyrill
>
> P.S. I'll add a note to changes.html to that effect separately.
>
> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>
>     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>     architecture revisions.
>     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>     architecture revisions.
>
> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>
>     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>     warning.
>     * gcc.target/arm/pr62554.c: Likewise.
>     * gcc.target/arm/pr69610-1.c: Likewise.
>     * gcc.target/arm/pr69610-2.c: Likewise.
Kyrill Tkachov March 23, 2016, 10:11 a.m. UTC | #2
Ping.

Thanks,
Kyrill

On 07/03/16 15:40, Kyrill Tkachov wrote:
> Ping.
> https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00046.html
>
> Thanks,
> Kyrill
>
> On 01/03/16 16:17, Kyrill Tkachov wrote:
>> Hi all,
>>
>> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
>> This patch implements this by documenting the deprecation in invoke.texi and adding
>> a warning whenever the user specifies an -march or -mcpu option that selects such
>> an architecture revision.
>>
>> Bootstrapped and tested on arm.
>>
>> Ok for trunk?
>>
>> Thanks,
>> Kyrill
>>
>> P.S. I'll add a note to changes.html to that effect separately.
>>
>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>
>>     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>>     architecture revisions.
>>     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>>     architecture revisions.
>>
>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>
>>     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>>     warning.
>>     * gcc.target/arm/pr62554.c: Likewise.
>>     * gcc.target/arm/pr69610-1.c: Likewise.
>>     * gcc.target/arm/pr69610-2.c: Likewise.
>
Kyrill Tkachov March 31, 2016, 12:28 p.m. UTC | #3
Ping.

Thanks,
Kyrill

On 23/03/16 10:11, Kyrill Tkachov wrote:
> Ping.
>
> Thanks,
> Kyrill
>
> On 07/03/16 15:40, Kyrill Tkachov wrote:
>> Ping.
>> https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00046.html
>>
>> Thanks,
>> Kyrill
>>
>> On 01/03/16 16:17, Kyrill Tkachov wrote:
>>> Hi all,
>>>
>>> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
>>> This patch implements this by documenting the deprecation in invoke.texi and adding
>>> a warning whenever the user specifies an -march or -mcpu option that selects such
>>> an architecture revision.
>>>
>>> Bootstrapped and tested on arm.
>>>
>>> Ok for trunk?
>>>
>>> Thanks,
>>> Kyrill
>>>
>>> P.S. I'll add a note to changes.html to that effect separately.
>>>
>>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>>
>>>     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>>>     architecture revisions.
>>>     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>>>     architecture revisions.
>>>
>>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>>
>>>     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>>>     warning.
>>>     * gcc.target/arm/pr62554.c: Likewise.
>>>     * gcc.target/arm/pr69610-1.c: Likewise.
>>>     * gcc.target/arm/pr69610-2.c: Likewise.
>>
>
Kyrill Tkachov April 7, 2016, 1:48 p.m. UTC | #4
Ping.

Thanks,
Kyrill
On 31/03/16 13:28, Kyrill Tkachov wrote:
> Ping.
>
> Thanks,
> Kyrill
>
> On 23/03/16 10:11, Kyrill Tkachov wrote:
>> Ping.
>>
>> Thanks,
>> Kyrill
>>
>> On 07/03/16 15:40, Kyrill Tkachov wrote:
>>> Ping.
>>> https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00046.html
>>>
>>> Thanks,
>>> Kyrill
>>>
>>> On 01/03/16 16:17, Kyrill Tkachov wrote:
>>>> Hi all,
>>>>
>>>> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
>>>> This patch implements this by documenting the deprecation in invoke.texi and adding
>>>> a warning whenever the user specifies an -march or -mcpu option that selects such
>>>> an architecture revision.
>>>>
>>>> Bootstrapped and tested on arm.
>>>>
>>>> Ok for trunk?
>>>>
>>>> Thanks,
>>>> Kyrill
>>>>
>>>> P.S. I'll add a note to changes.html to that effect separately.
>>>>
>>>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>>>
>>>>     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>>>>     architecture revisions.
>>>>     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>>>>     architecture revisions.
>>>>
>>>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>>>
>>>>     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>>>>     warning.
>>>>     * gcc.target/arm/pr62554.c: Likewise.
>>>>     * gcc.target/arm/pr69610-1.c: Likewise.
>>>>     * gcc.target/arm/pr69610-2.c: Likewise.
>>>
>>
>
Richard Earnshaw (lists) April 8, 2016, 9:28 a.m. UTC | #5
On 01/03/16 16:17, Kyrill Tkachov wrote:
> Hi all,
> 
> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
> This patch implements this by documenting the deprecation in invoke.texi
> and adding
> a warning whenever the user specifies an -march or -mcpu option that
> selects such
> an architecture revision.
> 
> Bootstrapped and tested on arm.
> 
> Ok for trunk?
> 
> Thanks,
> Kyrill
> 
> P.S. I'll add a note to changes.html to that effect separately.
> 
> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>     * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>     architecture revisions.
>     * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>     architecture revisions.
> 
> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>     * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>     warning.
>     * gcc.target/arm/pr62554.c: Likewise.
>     * gcc.target/arm/pr69610-1.c: Likewise.
>     * gcc.target/arm/pr69610-2.c: Likewise.

OK

R.
Kyrill Tkachov April 15, 2016, 1:39 p.m. UTC | #6
On 08/04/16 10:28, Richard Earnshaw (lists) wrote:
> On 01/03/16 16:17, Kyrill Tkachov wrote:
>> Hi all,
>>
>> For GCC 6 we want to deprecate architecture revisions prior to ARMv4T.
>> This patch implements this by documenting the deprecation in invoke.texi
>> and adding
>> a warning whenever the user specifies an -march or -mcpu option that
>> selects such
>> an architecture revision.
>>
>> Bootstrapped and tested on arm.
>>
>> Ok for trunk?
>>
>> Thanks,
>> Kyrill
>>
>> P.S. I'll add a note to changes.html to that effect separately.
>>
>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>
>>      * config/arm/arm.c (arm_option_override): Warn on pre-ARMv4T
>>      architecture revisions.
>>      * doc/invoke.texi (ARM Options): Add note on deprecation of pre-ARMv4T
>>      architecture revisions.
>>
>> 2016-03-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>
>>      * gcc.target/arm/ftest-armv4-arm.c: Add dg-warning for deprecation
>>      warning.
>>      * gcc.target/arm/pr62554.c: Likewise.
>>      * gcc.target/arm/pr69610-1.c: Likewise.
>>      * gcc.target/arm/pr69610-2.c: Likewise.
> OK

After some offline discussion we've decided to not add an unconditional warning every time someone
compiles for a deprecated architecture. This would irritate users.

As such, I'm just going to commit the invoke.texi hunk documenting the deprecation.

Thanks,
Kyrill

> R.
diff mbox

Patch

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 520d6194a7d663685c3d2a38b2a63b9b8b4c6017..b64f0c70fc7359b87e4fad8a06bf72f691db286b 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3354,6 +3354,10 @@  arm_option_override (void)
       flag_reorder_blocks = 1;
     }
 
+  /* Pre-armv4t architecture revisions are deprecated.  */
+  if (TARGET_ARM_ARCH <= 4 && !ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB))
+    warning (0, "architecture revisions earlier than ARMv4T are deprecated");
+
   if (flag_pic)
     /* Hoisting PIC address calculations more aggressively provides a small,
        but measurable, size reduction for PIC code.  Therefore, we decrease
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 18b2b8f31075b6286d63d1f489c2769daac6cec5..6e0143428ed9b59b18df9ce6207054a064ab7889 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -13944,6 +13944,8 @@  of the @option{-mcpu=} option.  Permissible names are: @samp{armv2},
 @samp{armv7ve}, @samp{armv8-a}, @samp{armv8-a+crc}, @samp{armv8.1-a},
 @samp{armv8.1-a+crc}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
 
+Architecture revisions older than @option{armv4t} are deprecated.
+
 @option{-march=armv7ve} is the armv7-a architecture with virtualization
 extensions.
 
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
index 4b48ef803d4f53a67c4f36369cb4f537f584e7c7..b47feb99b78965dfe56a56917c1475c1dc622d3d 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
@@ -12,4 +12,5 @@ 
 
 #include "ftest-support.h"
 
+/* { dg-warning "architecture revisions earlier than ARMv4T are deprecated" "" { target *-*-* } 1 } */
 
diff --git a/gcc/testsuite/gcc.target/arm/pr62554.c b/gcc/testsuite/gcc.target/arm/pr62554.c
index 4d6501cba1fb5122cfa9e276766280414c338225..ef0aaa871f95201443a773e2935faed0baf40371 100644
--- a/gcc/testsuite/gcc.target/arm/pr62554.c
+++ b/gcc/testsuite/gcc.target/arm/pr62554.c
@@ -2,6 +2,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-marm -march=armv3 -O" } */
 /* { dg-require-effective-target arm_arm_ok } */
+/* { dg-warning "architecture revisions earlier than ARMv4T are deprecated" "" { target *-*-* } 1 } */
 
 typedef struct
 {
diff --git a/gcc/testsuite/gcc.target/arm/pr69610-1.c b/gcc/testsuite/gcc.target/arm/pr69610-1.c
index a671b93392bdac8679415cb49a3691dcbe672790..1343eb282b8a0994312d64d705120783804738d4 100644
--- a/gcc/testsuite/gcc.target/arm/pr69610-1.c
+++ b/gcc/testsuite/gcc.target/arm/pr69610-1.c
@@ -2,7 +2,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-marm -march=armv3 -ftree-ter" } */
 /* { dg-require-effective-target arm_arm_ok } */
-
+/* { dg-warning "architecture revisions earlier than ARMv4T are deprecated" "" { target *-*-* } 1 } */
 typedef unsigned short v16u16 __attribute__ ((vector_size (16)));
 typedef unsigned int v16u32 __attribute__ ((vector_size (16)));
 
diff --git a/gcc/testsuite/gcc.target/arm/pr69610-2.c b/gcc/testsuite/gcc.target/arm/pr69610-2.c
index e932c63b63962d95eff02ba26430e7eef454329f..eb5d72c35f97de8d0138441506fd8b28f1af6c56 100644
--- a/gcc/testsuite/gcc.target/arm/pr69610-2.c
+++ b/gcc/testsuite/gcc.target/arm/pr69610-2.c
@@ -2,7 +2,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-marm -march=armv3 -O2 -fno-forward-propagate" } */
 /* { dg-require-effective-target arm_arm_ok } */
-
+/* { dg-warning "architecture revisions earlier than ARMv4T are deprecated" "" { target *-*-* } 1 } */
 typedef short v16u16 __attribute__ ((vector_size (16)));
 typedef unsigned v16u32 __attribute__ ((vector_size (16)));
 typedef long long v16u64 __attribute__ ((vector_size (16)));