From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16951 invoked by alias); 18 Sep 2019 06:54:38 -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 16940 invoked by uid 89); 18 Sep 2019 06:54:38 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-9.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.110.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 18 Sep 2019 06:54:37 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0D0D01000 for ; Tue, 17 Sep 2019 23:54:36 -0700 (PDT) Received: from localhost (unknown [10.32.98.126]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D79EF3F59C for ; Tue, 17 Sep 2019 23:57:06 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: Make get_value_for_expr check for INTEGER_CSTs Date: Wed, 18 Sep 2019 06:54:00 -0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg01049.txt.bz2 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? 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