From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 38143 invoked by alias); 17 Aug 2016 08:41:46 -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 38134 invoked by uid 89); 17 Aug 2016 08:41:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1774, aww X-HELO: mail-wm0-f67.google.com Received: from mail-wm0-f67.google.com (HELO mail-wm0-f67.google.com) (74.125.82.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 17 Aug 2016 08:41:35 +0000 Received: by mail-wm0-f67.google.com with SMTP id q128so21610395wma.1 for ; Wed, 17 Aug 2016 01:41:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=fq2idior66CTvSeGU2eRkC287PIn8nBaBoM4WUzaGX0=; b=QOOtpUPMpqk6YMW82lRV+lSbiMRg130mUZxccNRa5ELuTXaL1wjBXHcqe2NrzdEIQg rMgzSf5uOI6tERhGzqmD4EVWA3uySWItypVQCaklbl223j43cQ+cneeZHplLBxY0BaGU jLHCeEk2DpoozXKs6E3XeUXjBnbyUOyfCSS1s2YJl49+i7uxPu+Ep3gbPHMKQVWjKZ6V E2qfc4Lh+GlvJQYxnPp7c+Jh1VX68dXaKjobifw2KmOJBjck+jLMeNnXZ8igzKA4vX9r 1UcCM+C3aJCfGTzzHEFxssGTbYkm0nYVvw6HEv3F9gaggtcKfejyrPsCpldHaz/VsecT kj5w== X-Gm-Message-State: AEkoouts8zFYSBr3mZ5p/bqRdvJo/N/Lw04frQQSxsnEmFm+h5ASxKsQ5ByhoaNMw4QmycgzIz6QyfPOEAhoeQ== X-Received: by 10.28.87.3 with SMTP id l3mr25259642wmb.71.1471423293547; Wed, 17 Aug 2016 01:41:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.137.202 with HTTP; Wed, 17 Aug 2016 01:41:33 -0700 (PDT) In-Reply-To: <2f0f974b776ee917d094b78cd9b77b992988499c.1471416736.git.mliska@suse.cz> References: <2f0f974b776ee917d094b78cd9b77b992988499c.1471416736.git.mliska@suse.cz> From: Richard Biener Date: Wed, 17 Aug 2016 08:41:00 -0000 Message-ID: Subject: Re: [PATCH 2/3] Smarter folding of __builtin_memchr To: marxin Cc: GCC Patches Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg01247.txt.bz2 On Tue, Aug 16, 2016 at 3:14 PM, marxin wrote: > gcc/ChangeLog: > > 2016-08-16 Martin Liska > > * builtins.c (fold_builtin_memchr): Support following > transformations: > memchr (x, y, 0) -> NULL > memchr ("known_string", 'n', 5) -> &"known_string" + 1 > memchr ("known_string", 'n', 1) -> NULL Aww. Can I convince you to move this and related foldings to gimple-fold.c? Richard. > --- > gcc/builtins.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/gcc/builtins.c b/gcc/builtins.c > index 8f1c752..ac251f8 100644 > --- a/gcc/builtins.c > +++ b/gcc/builtins.c > @@ -7267,8 +7267,12 @@ fold_builtin_memchr (location_t loc, tree arg1, tree arg2, tree len, tree type) > || !tree_fits_uhwi_p (len)) > return NULL_TREE; > > + /* If the LEN parameter is zero, return zero. */ > + if (integer_zerop (len)) > + return build_int_cst (TREE_TYPE (arg1), 0); > + > p1 = c_getstr (arg1); > - if (p1 && compare_tree_int (len, strlen (p1) + 1) <= 0) > + if (p1) > { > char c; > const char *r; > @@ -7281,9 +7285,17 @@ fold_builtin_memchr (location_t loc, tree arg1, tree arg2, tree len, tree type) > > if (r == NULL) > return build_int_cst (TREE_TYPE (arg1), 0); > - > - tem = fold_build_pointer_plus_hwi_loc (loc, arg1, r - p1); > - return fold_convert_loc (loc, type, tem); > + else the else seems superfluous and just adds to indentation. > + { > + size_t offset = r - p1; > + if (compare_tree_int (len, offset) <= 0) > + return build_int_cst (TREE_TYPE (arg1), 0); > + else > + { > + tem = fold_build_pointer_plus_hwi_loc (loc, arg1, offset); > + return fold_convert_loc (loc, type, tem); > + } > + } > } > return NULL_TREE; > } > -- > 2.9.2 > >