From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9342 invoked by alias); 4 Sep 2018 14:28:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 9306 invoked by uid 89); 4 Sep 2018 14:28:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS,UPPERCASE_50_75 autolearn=ham version=3.3.2 spammy=implying, optsc, Hx-languages-length:3322 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Sep 2018 14:28:39 +0000 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A64083097027; Tue, 4 Sep 2018 14:28:38 +0000 (UTC) Received: from tucnak.zalov.cz (ovpn-116-68.ams2.redhat.com [10.36.116.68]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 46BB619489; Tue, 4 Sep 2018 14:28:38 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.15.2/8.15.2) with ESMTP id w84ESa92003446; Tue, 4 Sep 2018 16:28:36 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.15.2/8.15.2/Submit) id w84ESU5v003445; Tue, 4 Sep 2018 16:28:30 +0200 Date: Tue, 04 Sep 2018 14:28:00 -0000 From: Jakub Jelinek To: Uros Bizjak , "H.J. Lu" , Kirill Yukhin Cc: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix up -mno-xsave handling (PR target/87198) Message-ID: <20180904142830.GI1995@tucnak> Reply-To: Jakub Jelinek MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.2 (2017-12-15) X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00195.txt.bz2 Hi! The -mxsave{opt,s,c} options turn on automatically -mxsave option and the patterns rely on TARGET_XSAVE{OPT,S,C} implying TARGET_XSAVE, but if somebody uses e.g. -mxsave{opt,s,c} -mno-xsave (or something that implies -mno-xsave), TARGET_XSAVE{OPT,S,C} remains set and TARGET_XSAVE is clear. Fixed by making sure OPTION_MASK_ISA_XSAVE_UNSET unsets also xsave{s,c} (xsaveopt was already there). This patch doesn't try to address PR87171, which I believe needs further discussions and doesn't touch the same code anyway, so I think it should be resolved independently. Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk and release branches? 2018-09-04 Jakub Jelinek PR target/87198 * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET, OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE. (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET and OPTION_MASK_ISA_XSAVEC_UNSET. * gcc.target/i386/pr87198.c: New test. --- gcc/common/config/i386/i386-common.c.jj 2018-07-17 12:48:23.388587985 +0200 +++ gcc/common/config/i386/i386-common.c 2018-09-03 11:45:03.543653449 +0200 @@ -59,7 +59,7 @@ along with GCC; see the file COPYING3. #define OPTION_MASK_ISA_FXSR_SET OPTION_MASK_ISA_FXSR #define OPTION_MASK_ISA_XSAVE_SET OPTION_MASK_ISA_XSAVE #define OPTION_MASK_ISA_XSAVEOPT_SET \ - (OPTION_MASK_ISA_XSAVEOPT | OPTION_MASK_ISA_XSAVE) + (OPTION_MASK_ISA_XSAVEOPT | OPTION_MASK_ISA_XSAVE_SET) #define OPTION_MASK_ISA_AVX512F_SET \ (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX2_SET) #define OPTION_MASK_ISA_AVX512CD_SET \ @@ -95,9 +95,9 @@ along with GCC; see the file COPYING3. #define OPTION_MASK_ISA_PREFETCHWT1_SET OPTION_MASK_ISA_PREFETCHWT1 #define OPTION_MASK_ISA_CLFLUSHOPT_SET OPTION_MASK_ISA_CLFLUSHOPT #define OPTION_MASK_ISA_XSAVES_SET \ - (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_XSAVE) + (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_XSAVE_SET) #define OPTION_MASK_ISA_XSAVEC_SET \ - (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE) + (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE_SET) #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same @@ -185,7 +185,8 @@ along with GCC; see the file COPYING3. #define OPTION_MASK_ISA_FMA_UNSET OPTION_MASK_ISA_FMA #define OPTION_MASK_ISA_FXSR_UNSET OPTION_MASK_ISA_FXSR #define OPTION_MASK_ISA_XSAVE_UNSET \ - (OPTION_MASK_ISA_XSAVE | OPTION_MASK_ISA_XSAVEOPT_UNSET) + (OPTION_MASK_ISA_XSAVE | OPTION_MASK_ISA_XSAVEOPT_UNSET \ + | OPTION_MASK_ISA_XSAVES_UNSET | OPTION_MASK_ISA_XSAVEC_UNSET) #define OPTION_MASK_ISA_XSAVEOPT_UNSET OPTION_MASK_ISA_XSAVEOPT #define OPTION_MASK_ISA_AVX2_UNSET \ (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET) --- gcc/testsuite/gcc.target/i386/pr87198.c.jj 2018-09-03 12:07:48.277760935 +0200 +++ gcc/testsuite/gcc.target/i386/pr87198.c 2018-09-03 12:07:27.624107043 +0200 @@ -0,0 +1,13 @@ +/* PR target/87198 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mxsavec -mno-xsave" } */ + +#include + +void +test_xsavec (void *__A, long long __B) +{ + _xsavec (__A, __B); +} + +/* { dg-error "target specific option mismatch" "" { target *-*-* } 0 } */ Jakub