From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23159 invoked by alias); 18 Sep 2019 09:01:07 -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 23146 invoked by uid 89); 18 Sep 2019 09:01:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-7.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=H*f:sk:mptr24e, H*i:sk:mptr24e X-HELO: mail-lf1-f45.google.com Received: from mail-lf1-f45.google.com (HELO mail-lf1-f45.google.com) (209.85.167.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 18 Sep 2019 09:01:05 +0000 Received: by mail-lf1-f45.google.com with SMTP id u3so5064731lfl.10 for ; Wed, 18 Sep 2019 02:01:05 -0700 (PDT) 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=uCV4edHM7wWpc5WGz6u9tUGd7YA0XHVImlvet05OFYE=; b=rT+uVS6pkfcqB9SZ9KMqWOVPTySnHzufpV7eX5DmHZZgNyndvqIiawcn7notXkmu+F yKk2mcO5zAnnhJihhVo20fk+RGf8E6So0mtal+dacwii6ML1FW6i0rDKisREU/u+g0qt 2p9sb3ljDpmJPUhZ2XoJlV/DYxBjq1DUJJrzAG8WHNfiDDcuXI5EHovl/vAj6IgnLxhy 3kD4mqH0O6EaRlUkfviM3mcHvmjfsTDvJwpiPzwPaD7goSNDy2Uew9pQj+RUpyX9FVKV KukqFVz8dAO9r9Fw46g4GIeQvq5iIAnGnZd1S1LJPxMFxBpCCRcGnPt4UHw5Cl3keg2J WSSA== MIME-Version: 1.0 References: In-Reply-To: From: Richard Biener Date: Wed, 18 Sep 2019 09:01:00 -0000 Message-ID: Subject: Re: Make get_value_for_expr check for INTEGER_CSTs To: Richard Sandiford Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg01088.txt.bz2 On Wed, Sep 18, 2019 at 8:54 AM Richard Sandiford wrote: > > CONSTANT lattice values are symbolic constants rather than > compile-time constants, so among other things can be POLY_INT_CSTs. > This patch fixes a case in which we assumed all CONSTANTs were either > ADDR_EXPRs or INTEGER_CSTs. > > This is tested by later SVE patches. > > Tested on aarch64-linux-gnu with SVE (with and without follow-on > patches) and x86_64-linux-gnu. OK to install? OK. Richard. > Richard > > > 2019-09-18 Richard Sandiford > > gcc/ > * tree-ssa-ccp.c (get_value_for_expr): Check whether CONSTANTs > are INTEGER_CSTs. > > Index: gcc/tree-ssa-ccp.c > =================================================================== > --- gcc/tree-ssa-ccp.c 2019-08-21 14:58:05.999057076 +0100 > +++ gcc/tree-ssa-ccp.c 2019-09-18 07:53:36.930481545 +0100 > @@ -615,9 +615,17 @@ get_value_for_expr (tree expr, bool for_ > val.mask = -1; > } > if (for_bits_p > - && val.lattice_val == CONSTANT > - && TREE_CODE (val.value) == ADDR_EXPR) > - val = get_value_from_alignment (val.value); > + && val.lattice_val == CONSTANT) > + { > + if (TREE_CODE (val.value) == ADDR_EXPR) > + val = get_value_from_alignment (val.value); > + else if (TREE_CODE (val.value) != INTEGER_CST) > + { > + val.lattice_val = VARYING; > + val.value = NULL_TREE; > + val.mask = -1; > + } > + } > /* Fall back to a copy value. */ > if (!for_bits_p > && val.lattice_val == VARYING