From patchwork Sat Nov 7 13:27:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 541299 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 AE6DF1406AA for ; Sun, 8 Nov 2015 00:27:15 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=Hgke9+ou; 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:from :to:cc:subject:date:message-id:mime-version:content-type :content-transfer-encoding; q=dns; s=default; b=wOfPE9xBX/Wu/8kb uabkkry6zxmehDmvnrIsSsfT1XUyi/oXNSHQaiwezvPw+ZHVKXokP5X/azM8U2Vf w4ntNQcm3naQ2egY0bOM/uw1jpIchmd92ln4513s1o4Bs5FNOkzFeRrnRAKUIFg+ Wo3hE9n4QIFt9TjXVI2iN23/T7o= 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:from :to:cc:subject:date:message-id:mime-version:content-type :content-transfer-encoding; s=default; bh=qtE2+3CVoczEe8+QdHt1lQ bcKnM=; b=Hgke9+ou2IrzX+Z2btSPscUJjy3sWTiYgXHy6Q4EOV8O9vtdmMSf7k b79nc/tfITvf+8KbRQzs1zvsbsqMM6gjrWdtt8w4LMSqfMlAQ8LKXwdb+G/5Ta4M nxJDtJiq3y2Wv/2yiYQ35EEFODCuarVcujHMCsc2TWfUO4nkyqsr0= Received: (qmail 118338 invoked by alias); 7 Nov 2015 13:27:09 -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 118321 invoked by uid 89); 7 Nov 2015 13:27:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 07 Nov 2015 13:27:05 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-18-yZYElPBkTEePgcTg70mZhQ-1; Sat, 07 Nov 2015 13:27:01 +0000 Received: from localhost ([10.1.2.79]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Sat, 7 Nov 2015 13:27:00 +0000 From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, kkojima@gcc.gnu.org, olegendo@gcc.gnu.org, richard.sandiford@arm.com Cc: kkojima@gcc.gnu.org, olegendo@gcc.gnu.org Subject: [sh] Add flag_unsafe_math_optimizations to sincossf3 Date: Sat, 07 Nov 2015 13:27:00 +0000 Message-ID: <87d1vmos7v.fsf@e105548-lin.cambridge.arm.com> User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-MC-Unique: yZYElPBkTEePgcTg70mZhQ-1 builtins.c uses the following code to guard expansions involving optabs: CASE_FLT_FN (BUILT_IN_EXP): CASE_FLT_FN (BUILT_IN_EXP10): CASE_FLT_FN (BUILT_IN_POW10): CASE_FLT_FN (BUILT_IN_EXP2): CASE_FLT_FN (BUILT_IN_EXPM1): CASE_FLT_FN (BUILT_IN_LOGB): CASE_FLT_FN (BUILT_IN_LOG): CASE_FLT_FN (BUILT_IN_LOG10): CASE_FLT_FN (BUILT_IN_LOG2): CASE_FLT_FN (BUILT_IN_LOG1P): CASE_FLT_FN (BUILT_IN_TAN): CASE_FLT_FN (BUILT_IN_ASIN): CASE_FLT_FN (BUILT_IN_ACOS): CASE_FLT_FN (BUILT_IN_ATAN): CASE_FLT_FN (BUILT_IN_SIGNIFICAND): /* Treat these like sqrt only if unsafe math optimizations are allowed, because of possible accuracy problems. */ if (! flag_unsafe_math_optimizations) break; [...] CASE_FLT_FN (BUILT_IN_ILOGB): if (! flag_unsafe_math_optimizations) break; [...] CASE_FLT_FN (BUILT_IN_ATAN2): CASE_FLT_FN (BUILT_IN_LDEXP): CASE_FLT_FN (BUILT_IN_SCALB): CASE_FLT_FN (BUILT_IN_SCALBN): CASE_FLT_FN (BUILT_IN_SCALBLN): if (! flag_unsafe_math_optimizations) break; [...] CASE_FLT_FN (BUILT_IN_SIN): CASE_FLT_FN (BUILT_IN_COS): if (! flag_unsafe_math_optimizations) break; [...] CASE_FLT_FN (BUILT_IN_SINCOS): if (! flag_unsafe_math_optimizations) break; I think it's really up to the optab to decide whether it's safe for !flag_unsafe_math_optimizations or not, and AFAICT, all optabs but sh.md:sincossf3 already check. This patch makes the sh pattern check too. Tested on sh-elf. OK to install? Thanks, Richard gcc/ * config/sh/sh.md (sincossf3): Require flag_unsafe_math_optimizations. diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 557a0f0..0c3b9f2 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -13722,7 +13722,7 @@ label: (unspec:SF [(match_operand:SF 2 "fp_arith_reg_operand")] UNSPEC_FCOSA)) (set (match_operand:SF 1 "nonimmediate_operand") (unspec:SF [(match_dup 2)] UNSPEC_FSINA))] - "TARGET_FPU_ANY && TARGET_FSCA" + "TARGET_FPU_ANY && TARGET_FSCA && flag_unsafe_math_optimizations" { rtx scaled = gen_reg_rtx (SFmode); rtx truncated = gen_reg_rtx (SImode);