From patchwork Tue Aug 30 10:38:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 834 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:ecc5:0:0:0:0:0 with SMTP id s5csp1785145wro; Tue, 30 Aug 2022 03:39:34 -0700 (PDT) X-Google-Smtp-Source: AA6agR5Xb+oafPZfvZHSlBjeGecz9ELKJeIreUj0v3oeFNqMies3CBqmoBC4DkMWbsV5dHbnjWTo X-Received: by 2002:a17:906:fd84:b0:730:acee:d067 with SMTP id xa4-20020a170906fd8400b00730aceed067mr16685454ejb.206.1661855974243; Tue, 30 Aug 2022 03:39:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661855974; cv=none; d=google.com; s=arc-20160816; b=TSvkCJjb9EMJoHO9BSmWdSdbz6oPpG9ZRD0q1dY3EgLGjrnxOFAFuw19pGxUSdQUA2 Qykl4OcT5uo6U+OtClvq9lNrFWy8FhKUzg9q4iyNIYwJZFi7W/YA1v7K1c39x6ZlYCWx EBXh3HRt55yLGygU1oGzxhigB3bUXhKVrhbZZ9HCz7e/85lidX/prZfbR20wuZEkw75R kskHj/put3Dvgc7R5Hq0IPdagxjx2/zgbOHwkC7dbk95+MfmE89pFDJnAKmUdJ2enBl2 ogxWmwig/HQkVukscw3lxDYMg6RxArcpiqsDbFatu3D0UeaMZV4Qz3h4ElYhzIvii7jr n19w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:sender:errors-to:reply-to:from:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :mime-version:user-agent:subject:to:date:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=Wow6O6IeGBK8q4Ei4mJQKCHmOUDZoYv0IloqL6jcoeM=; b=Pwt6V24vcTei2wJDDnkod7O6aj/QPBSv+wKUy6Ib3vNjNKESXNATf9UBtM5hXx06nB 6TOxT1YrX2dnV9dgsUm5h+RNO1SDSaAdxeNQWP+AC4FefsoBawYZdWlnbPF499WOpwsH g/xyOkPYmkJjTBEY9RhLj3Dr1TYh4xPaxfOHSIdb4eK01VbQX1P5uADr10dhqyKoPTq3 goAosezDPbtBbmVht/f9nf8ChYZYy/IgOlZLNpzwxq0Mj2INTfqeJH7tKg92OMtsPMNl 5NwmGYUOsq0A6y7UJs1VPSrMvBnTb0QeyW2F6t749VZeouQiwyVcy5nuY/WN0nmDEEju l9HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=enCeGfLz; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id sb7-20020a1709076d8700b0073305fd2278si8682394ejc.864.2022.08.30.03.39.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Aug 2022 03:39:34 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=enCeGfLz; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 408EB3839043 for ; Tue, 30 Aug 2022 10:39:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 408EB3839043 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1661855948; bh=Wow6O6IeGBK8q4Ei4mJQKCHmOUDZoYv0IloqL6jcoeM=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=enCeGfLzxtpvl3W8jWxJXORMzA2PY0pgSzRxCo9I25GRJnFoWoRcndHaTx6YBVe6W M3wpaiHuWwEFty7Hz9/t7zQZoo0wf5RzsHRW1gmv0tZQg52Jgqmn0SZ2uU9pZEpBe7 MA2a2XZM35eE/g+FxTs7ZzAjTSFSvmNR6ZMK7jzU= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 1AEA23858284 for ; Tue, 30 Aug 2022 10:38:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1AEA23858284 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 365FF1FA4B for ; Tue, 30 Aug 2022 10:38:17 +0000 (UTC) Received: from wotan.suse.de (wotan.suse.de [10.160.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 30D112C142 for ; Tue, 30 Aug 2022 10:38:17 +0000 (UTC) Date: Tue, 30 Aug 2022 10:38:17 +0000 (UTC) To: gcc-patches@gcc.gnu.org Subject: [PATCH] Remove GENERIC expr building from predicate analysis, improve dumps User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MISSING_MID, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Biener via Gcc-patches From: Richard Biener Reply-To: Richard Biener Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" Message-Id: <20220830103908.408EB3839043@sourceware.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1742582290140976501?= X-GMAIL-MSGID: =?utf-8?q?1742582290140976501?= The following removes duplicate dumping and makes the predicate dumping more readable. That makes the GENERIC predicate build routines unused which is also nice. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * gimple-predicate-analysis.cc (dump_pred_chain): Fix parentizing and AND prepending. (predicate::dump): Do not dump the GENERIC expanded predicate, properly parentize and prepend ORs to the piecewise predicate dump. (build_pred_expr): Remove. --- gcc/gimple-predicate-analysis.cc | 77 +++++--------------------------- 1 file changed, 10 insertions(+), 67 deletions(-) diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc index dcecbb5a581..ffdd8a15fe7 100644 --- a/gcc/gimple-predicate-analysis.cc +++ b/gcc/gimple-predicate-analysis.cc @@ -169,16 +169,14 @@ static void dump_pred_chain (const pred_chain &chain) { unsigned np = chain.length (); - if (np > 1) - fprintf (dump_file, "AND ("); - for (unsigned j = 0; j < np; j++) { + if (j > 0) + fprintf (dump_file, " AND ("); + else + fputc ('(', dump_file); dump_pred_info (chain[j]); - if (j < np - 1) - fprintf (dump_file, ", "); - else if (j > 0) - fputc (')', dump_file); + fputc (')', dump_file); } } @@ -579,51 +577,6 @@ uninit_analysis::collect_phi_def_edges (gphi *phi, basic_block cd_root, } } -/* Return an expression corresponding to the predicate PRED. */ - -static tree -build_pred_expr (const pred_info &pred) -{ - tree_code cond_code = pred.cond_code; - tree lhs = pred.pred_lhs; - tree rhs = pred.pred_rhs; - - if (pred.invert) - cond_code = invert_tree_comparison (cond_code, false); - - return build2 (cond_code, TREE_TYPE (lhs), lhs, rhs); -} - -/* Return an expression corresponding to PREDS. */ - -static tree -build_pred_expr (const pred_chain_union &preds, bool invert = false) -{ - tree_code code = invert ? TRUTH_AND_EXPR : TRUTH_OR_EXPR; - tree_code subcode = invert ? TRUTH_OR_EXPR : TRUTH_AND_EXPR; - - tree expr = NULL_TREE; - for (unsigned i = 0; i != preds.length (); ++i) - { - tree subexpr = NULL_TREE; - for (unsigned j = 0; j != preds[i].length (); ++j) - { - const pred_info &pi = preds[i][j]; - tree cond = build_pred_expr (pi); - if (invert) - cond = invert_truthvalue (cond); - subexpr = subexpr ? build2 (subcode, boolean_type_node, - subexpr, cond) : cond; - } - if (expr) - expr = build2 (code, boolean_type_node, expr, subexpr); - else - expr = subexpr; - } - - return expr; -} - /* Return a bitset of all PHI arguments or zero if there are too many. */ unsigned @@ -1907,24 +1860,14 @@ predicate::dump (gimple *stmt, const char *msg) const return; } - { - tree expr = build_pred_expr (m_preds); - char *str = print_generic_expr_to_str (expr); - fprintf (dump_file, "\t%s (expanded)\n", str); - free (str); - } - - if (np > 1) - fprintf (dump_file, "\tOR ("); - else - fputc ('\t', dump_file); for (unsigned i = 0; i < np; i++) { + if (i > 0) + fprintf (dump_file, "\tOR ("); + else + fprintf (dump_file, "\t("); dump_pred_chain (m_preds[i]); - if (i < np - 1) - fprintf (dump_file, ", "); - else if (i > 0) - fputc (')', dump_file); + fputc (')', dump_file); } fputc ('\n', dump_file); }