From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45680 invoked by alias); 18 Dec 2019 02:50:56 -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 45672 invoked by uid 89); 18 Dec 2019 02:50:56 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1123, H*RU:209.85.222.67, HX-Spam-Relays-External:209.85.222.67, H*f:sk:fzQ@mai X-HELO: mail-ua1-f67.google.com Received: from mail-ua1-f67.google.com (HELO mail-ua1-f67.google.com) (209.85.222.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 18 Dec 2019 02:50:55 +0000 Received: by mail-ua1-f67.google.com with SMTP id l6so97863uap.13 for ; Tue, 17 Dec 2019 18:50:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AH02l9H6JZY5j5xpLg43znD1Sjg+bdz3Ir801ah46VM=; b=jLhwUYCr6c/VzobOu76Oz3UbUIw/Aj89Ah2cbTa5Mw3Jwgf45Bv6UeqjyfHn2yAeTO 4OvwITkbJwVDfddpbDrNmwbnPNlCKK7Ya47LS1AC9+EPx/Nc5kafyIEZwrntfyMM2gfy L3JimtnzY88Ixre8oqRySbA0vAIN076XqHfFO8JXej0amg4LybTaOgWPZuXj+cr1NSTb yxu/KiXkdrb/L43KvvgU/D0nA64C9r74QevQb0R7W7vRDcXJbBa6X5m/JsmQ1zJo2ybO frhUojgpTxQBU8g/UvSrAMXKD4TmKPor9XdvcCfkjSmcZZKjq0L1tlLvYoZBGE0AyDxL 4XMg== MIME-Version: 1.0 References: In-Reply-To: From: Andrew Pinski Date: Wed, 18 Dec 2019 02:57:00 -0000 Message-ID: Subject: Re: [PATCH] Fix redundant load missed by fre [tree-optimization 92980] To: Hongtao Liu Cc: Richard Biener , GCC Patches , "H. J. Lu" , wwwhhhyyy333@gmail.com Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2019-12/txt/msg01245.txt.bz2 On Tue, Dec 17, 2019 at 6:33 PM Hongtao Liu wrote: > > Hi: > This patch is to simplify A * C + (-D) -> (A - D/C) * C when C is a > power of 2 and D mod C == 0. > bootstrap and make check is ok. I don't see why D has to be negative here. >TREE_CODE (TREE_TYPE (@0)) == INTEGER_TYPE + && TYPE_UNSIGNED (TREE_TYPE (@0)) This is the wrong check here. Use INTEGRAL_TYPE_P . >+ (plus (mult @0 integer_pow2p@1) INTEGER_CST@2) You might want a :s here for the mult and/or plus. unsigned HOST_WIDE_INT d = tree_to_uhwi (@2); ... Maybe use wide_int math instead of HOST_WIDE_INT here, then you don't need the tree_fits_uhwi_p check. Add a testcase should tests the pattern directly rather than indirectly. Also we are in stage 3 which means bug fixes only so this might/should wait until stage 1. Thanks, Andrew Pinski > > changelog > gcc/ > * gcc/match.pd (A * C + (-D) = (A - D/C) * C. when C is a > power of 2 and D mod C == 0): Add new simplification. > > gcc/testsuite > * gcc.dg/pr92980.c: New test. > > -- > BR, > Hongtao