From patchwork Tue Feb 11 09:52:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 1236229 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-519325-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha1 header.s=default header.b=CmVNflQ2; dkim-atps=neutral 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 48Gyjx10xtz9s3x for ; Tue, 11 Feb 2020 20:52:19 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; q=dns; s= default; b=EHuavqMsCz9aFeLkMGea9aPCS0pGUCENHz5vDCV7wGliWAXDj2w7N g+Kemy1DhXGs0PJLVCkjsBZGk5ryENJLi9yc3DcgCY9mJbThPu/vsay1LGimmh7f Z4NgcuLY5D/UTYCivjNfUfzq3QAzAqyavEnsPWGpyuI40ktP9eT8xw= 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:date :from:to:subject:message-id:mime-version:content-type; s= default; bh=SO9/y8CWNA9QG9qSjGuDiZbE5O0=; b=CmVNflQ2sTojCApKi8OR dy56A/zJxMFwZstwJC/dilJaFGlHiBJjl0d1TcsTDflOp+F4w51te2urnFC2cc+Q ppm+qSgQ53WnBWZoQm6j13COT9Gk5H9sBHI8WnqJUpi0hbv38PqBQudr8el42UaL C8hyvteT3DViIZ1eaSrnYrg= Received: (qmail 120940 invoked by alias); 11 Feb 2020 09:52:10 -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 120925 invoked by uid 89); 11 Feb 2020 09:52:09 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 11 Feb 2020 09:52:08 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 884E5AEBF for ; Tue, 11 Feb 2020 09:52:06 +0000 (UTC) Date: Tue, 11 Feb 2020 10:52:05 +0100 (CET) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/93661 properly guard tree_to_poly_int64 Message-ID: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Bootstrapped / tested on x86_64-unknown-linux-gnu, pushed. Richard. 2020-02-11 Richard Biener PR tree-optimization/93661 PR tree-optimization/93662 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard tree_to_poly_int64. * tree-sra.c (get_access_for_expr): Likewise. * gcc.dg/pr93661.c: New testcase. --- gcc/testsuite/gcc.dg/pr93661.c | 9 +++++++++ gcc/tree-sra.c | 6 ++++-- gcc/tree-ssa-sccvn.c | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr93661.c diff --git a/gcc/testsuite/gcc.dg/pr93661.c b/gcc/testsuite/gcc.dg/pr93661.c new file mode 100644 index 00000000000..e311ba545c4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr93661.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int f () +{ + unsigned x = 0xffffffff; + __builtin_memset (1+(char *) &x, 0, -1); /* { dg-warning "maximum object size" } */ + return (x != 0xf0000000); +} diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index ea8594db193..f03ad3a586f 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -3605,8 +3605,10 @@ get_access_for_expr (tree expr) if (tree basesize = DECL_SIZE (base)) { - poly_int64 sz = tree_to_poly_int64 (basesize); - if (offset < 0 || known_le (sz, offset)) + poly_int64 sz; + if (offset < 0 + || !poly_int_tree_p (basesize, &sz) + || known_le (sz, offset)) return NULL; } diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index b42a30ed3fc..15cc567f8fd 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -2527,6 +2527,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_, /* For now handle clearing memory with partial defs. */ else if (known_eq (ref->size, maxsize) && integer_zerop (gimple_call_arg (def_stmt, 1)) + && tree_fits_poly_int64_p (len) && tree_to_poly_int64 (len).is_constant (&leni) && offset.is_constant (&offseti) && offset2.is_constant (&offset2i)