From patchwork Tue Mar 1 16:17:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrill Tkachov X-Patchwork-Id: 590624 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id A625F140C81 for ; Wed, 2 Mar 2016 03:17:27 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=P53osnT5; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; q=dns; s=default; b=tb+xndqpdlsq7FKPyPhyqosVVauAk/PsBXwLHvmVRa0 FTR6bPpHYVyjTN0aOlIzziyCmN6Sv3+lk1jB0uaIW7gVSZ3UVaTie6X2y/I/iwwH 90YT5P0DCGXKJX2l4gmfnPJ2MrB55JiG7jEpwDywr8ybUcgUVy/dNdQqutBLY4aM = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; s=default; bh=mvk3zHo+aLUBzcbPb5G6ZomoAbo=; b=P53osnT5S+UImJziY FYFuFmFTJB++AoZYZnoXl/4OCbCNcHDP7vZzSAdJm2/j4rEUoKv5Q5ACtH50GGmf UheCAPgsMCES09WRsx8vxB+4kzmtrwslMenZNQM24AGgfi0AvSDVASnT2T+TNtCz F16iUvjiac+ELEuHDbucbDAviw= Received: (qmail 101481 invoked by alias); 1 Mar 2016 16:17:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 101467 invoked by uid 89); 1 Mar 2016 16:17:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH, RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=crc, Hx-languages-length:4588 X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 01 Mar 2016 16:17:15 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 11B5C49; Tue, 1 Mar 2016 08:16:18 -0800 (PST) Received: from [10.2.206.200] (e100706-lin.cambridge.arm.com [10.2.206.200]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 455C23F25E; Tue, 1 Mar 2016 08:17:12 -0800 (PST) Message-ID: <56D5C086.4070802@foss.arm.com> Date: Tue, 01 Mar 2016 16:17:10 +0000 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: GCC Patches CC: Ramana Radhakrishnan , Richard Earnshaw , Nick Clifton Subject: [PATCH][ARM] Add deprecation warning on pre-v4t architecture revisions 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 * 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 * 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. 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)));