From patchwork Mon Oct 18 11:21:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Prathamesh Kulkarni X-Patchwork-Id: 46338 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 285CC385800D for ; Mon, 18 Oct 2021 11:22:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 285CC385800D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1634556135; bh=U88QgWT7qtKMhwpxRdDiLj+HWpjPTAell7gDs/t0qvA=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=f3lvqIx9RJ56UQhkVtpydpojDLtuf5B+WnPzp2iyXc96zYcRrvsCLB+GXIBc8XP5U +H4sGcJ13sr0ooqH4TufuL6Y4H0VPc8ML3D/bYkdnobra6aQmaJWuVq0mbGntLOrjp caCfC4+sMFsufAP3Vj1d9JLsVJBeVuS2amr+L4PQ= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id 64CF63858402 for ; Mon, 18 Oct 2021 11:21:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 64CF63858402 Received: by mail-ed1-x52f.google.com with SMTP id g10so69803750edj.1 for ; Mon, 18 Oct 2021 04:21:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=U88QgWT7qtKMhwpxRdDiLj+HWpjPTAell7gDs/t0qvA=; b=r2M68uW5WRWio8T+crofUVeq+aDqZMX2cNaL52uGILTHkvonltivsFlskebWWSNjL0 SpmwqCTx+cd7U7a5ObgvcCCAT1kQMJTOpz584c7ymlZlVlspeZ2fyj0E/BCaMIXeWOS/ Rti5L9/MdT51Us/mP4heLqBgNVB2jOCrpF4aFcMykTyv7t+MyhANKgDP06lPQraJOdfj 6EE9WnibjPSCMsrk3il7a9Zsse/H67GsZhh/QmzKNZ/UymYJohBc0H3xfwxuV6jqhmdu EJ+5XVhzlG6KkPX3iwVg2qMaDkg4GxEzhBvPgZA5EmFvuQ8BWiwey0hEZmp0csh3DU/J WQFQ== X-Gm-Message-State: AOAM530YejB7byHe+6GqwlpslABLlF9vrGE8FTes5uBfJdNq2AJnH5v5 KeyEoRfS2fAcATkxiVIntZX+UbbQ7mCEotT7HrCegJwaZT5g1g== X-Google-Smtp-Source: ABdhPJwSSBW75Gia0O8nNtYYzAWn0mbU7Bmz+DdaBi9RRDuOJ6CrTFMvvZBrOZUpc4g4UDjc8XY2iO8mps564Ka0ZaI= X-Received: by 2002:a17:906:a08d:: with SMTP id q13mr28490249ejy.465.1634556100129; Mon, 18 Oct 2021 04:21:40 -0700 (PDT) MIME-Version: 1.0 Date: Mon, 18 Oct 2021 16:51:03 +0530 Message-ID: Subject: [aarch64] PR102376 - Emit better diagnostic for arch extensions in target attr To: gcc Patches , =?utf-8?q?Martin_Li=C5=A1ka?= , Richard Sandiford X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Prathamesh Kulkarni via Gcc-patches From: Prathamesh Kulkarni Reply-To: Prathamesh Kulkarni Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi, The attached patch emits a more verbose diagnostic for target attribute that is an architecture extension needing a leading '+'. For the following test, void calculate(void) __attribute__ ((__target__ ("sve"))); With patch, the compiler now emits: 102376.c:1:1: error: arch extension ‘sve’ should be prepended with ‘+’ 1 | void calculate(void) __attribute__ ((__target__ ("sve"))); | ^~~~ instead of: 102376.c:1:1: error: pragma or attribute ‘target("sve")’ is not valid 1 | void calculate(void) __attribute__ ((__target__ ("sve"))); | ^~~~ (This isn't specific to sve though). OK to commit after bootstrap+test ? Thanks, Prathamesh diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index a9a1800af53..975f7faf968 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -17821,7 +17821,16 @@ aarch64_process_target_attr (tree args) num_attrs++; if (!aarch64_process_one_target_attr (token)) { - error ("pragma or attribute % is not valid", token); + /* Check if token is possibly an arch extension without + leading '+'. */ + char *str = (char *) xmalloc (strlen (token) + 2); + str[0] = '+'; + strcpy(str + 1, token); + if (aarch64_handle_attr_isa_flags (str)) + error("arch extension %<%s%> should be prepended with %<+%>", token); + else + error ("pragma or attribute % is not valid", token); + free (str); return false; }