From patchwork Tue Mar 20 00:52:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 10295819 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 26B6060385 for ; Tue, 20 Mar 2018 00:53:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 19B5F290BD for ; Tue, 20 Mar 2018 00:53:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0E3A829466; Tue, 20 Mar 2018 00:53:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8FE20290BD for ; Tue, 20 Mar 2018 00:53:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933234AbeCTAxM (ORCPT ); Mon, 19 Mar 2018 20:53:12 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:40904 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933099AbeCTAxK (ORCPT ); Mon, 19 Mar 2018 20:53:10 -0400 Received: by mail-wr0-f196.google.com with SMTP id z8so10721943wrh.7 for ; Mon, 19 Mar 2018 17:53:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7pXeL+o4ZoLdHQPEHDKAflUvuqEMqDYzgY5pwWGWYHA=; b=EYaoqA2xJviWIMsfPeffwj9rmLb1KXCDS4DteCi3WHduE5F8vTogb0wGgzFhoe73dZ CHJkDdZl1imOk74T5snZ9inEPNJeJbRjyQfiznrU6uDnAPSkAaUHyTPy065gxoVnfNi+ /pFAsS6fYD3o1f7tmKwhS5Q8huf2xX8bCdYCAWPPCWfTI2uPBhtW0poVD8aUtNv8N4fK xRjudrnmoqtNaFKI68KiDNA86nULMjdKG8H1eeTlllreANGAC1KSNA9IwZ9JpTDyCxaM QIliTs+h9eG/yNun9dstzapunYg0/Dn4uVvvCNUg+zlo+KVBTZXnEn0US7uaDJv37eB+ 2bxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7pXeL+o4ZoLdHQPEHDKAflUvuqEMqDYzgY5pwWGWYHA=; b=BVTO4YScAM+wkLepUe6TBOzZhhkNXadUBtNevs3sQFETlbHBs5e5bmtbEw20nk4AWV xRw9jBVi6ouyebAtzEFVHj1bClV4Mu6vLnepo6yEZac4GWnvHtr+elVihjBw/ms1OLMQ 0/qT7KKNzj+o9ocra1b7kMLpuSisdpxJPO0BfRaFZSQo/jMwYh6Cpv+6ubCZ7bUVRfKq WsNCOzJDlNcB1Nu+vrMVOhc1XIk+9SUjKdTOfYAMoAJTQKb5gppz3e6oRHodAJUVe3TB uL1xEPEmcjCoebmPGOtvSCQkdWFV5d1mzqq7em4cnGt7rcY1dv/pXPZ2AqeYkr9wWnen Bf4Q== X-Gm-Message-State: AElRT7GJZI0r+3S4gtytU+59bSiL4nnym2ON+CKwz3V531/UDbawde2B rierayxg+vp+nVHYOS+ROfHsU+vGPeA= X-Google-Smtp-Source: AG47ELtUzWbEHDmDAiSYbizmkTs5OIstJ3RP/iLCIbFsm747dgLk5XkemspE726FKTC1exlmKeSwvA== X-Received: by 10.223.128.98 with SMTP id 89mr10995651wrk.141.1521507189588; Mon, 19 Mar 2018 17:53:09 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:40ef:cf00:d148:9bbf:a73b:78ed]) by smtp.gmail.com with ESMTPSA id n47sm591309wrf.41.2018.03.19.17.53.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Mar 2018 17:53:09 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Luc Van Oostenryck Subject: [PATCH v1 02/18] graph: add debugging for (reverse) postorder traversal Date: Tue, 20 Mar 2018 01:52:40 +0100 Message-Id: <20180320005256.53284-3-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180320005256.53284-1-luc.vanoostenryck@gmail.com> References: <20180320005256.53284-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Just use the flag '-vpostorder' to dump the links once calculated. Signed-off-by: Luc Van Oostenryck --- Documentation/dev-options.md | 1 + flowgraph.c | 13 +++++++++++++ lib.c | 2 ++ lib.h | 1 + 4 files changed, 17 insertions(+) diff --git a/Documentation/dev-options.md b/Documentation/dev-options.md index 7c278135a..b288d904c 100644 --- a/Documentation/dev-options.md +++ b/Documentation/dev-options.md @@ -32,3 +32,4 @@ document options only useful for development on sparse itself. Add or display some debug info. The flag can be one of: * 'dead': annotate dead pseudos. * 'entry': dump the IR after all optimization passes. + * 'postorder': dump the reverse postorder traversal of the CFG. diff --git a/flowgraph.c b/flowgraph.c index 89897fa48..40a75e825 100644 --- a/flowgraph.c +++ b/flowgraph.c @@ -8,6 +8,7 @@ #include "flowgraph.h" #include "linearize.h" #include "flow.h" // for bb_generation +#include struct cfg_info { @@ -41,6 +42,16 @@ static void reverse_bbs(struct basic_block_list **dst, struct basic_block_list * } END_FOR_EACH_PTR_REVERSE(bb); } +static void debug_postorder(struct entrypoint *ep) +{ + struct basic_block *bb; + + printf("%s's reverse postorder:\n", show_ident(ep->name->ident)); + FOR_EACH_PTR(ep->bbs, bb) { + printf("\t.L%u: %u\n", bb->nr, bb->postorder_nr); + } END_FOR_EACH_PTR(bb); +} + // // cfg_postorder - Set the BB's reverse postorder links // @@ -61,5 +72,7 @@ int cfg_postorder(struct entrypoint *ep) ep->bbs = NULL; reverse_bbs(&ep->bbs, info.list); free_ptr_list(&info.list); + if (dbg_postorder) + debug_postorder(ep); return info.nr; } diff --git a/lib.c b/lib.c index 73d372c36..26645b156 100644 --- a/lib.c +++ b/lib.c @@ -258,6 +258,7 @@ int dump_macro_defs = 0; int dbg_entry = 0; int dbg_dead = 0; +int dbg_postorder = 0; unsigned long fdump_ir; int fmem_report = 0; @@ -717,6 +718,7 @@ static char **handle_switch_W(char *arg, char **next) static struct flag debugs[] = { { "entry", &dbg_entry}, { "dead", &dbg_dead}, + { "postorder", &dbg_postorder}, }; diff --git a/lib.h b/lib.h index 3050b5577..321655485 100644 --- a/lib.h +++ b/lib.h @@ -167,6 +167,7 @@ extern int dump_macro_defs; extern int dbg_entry; extern int dbg_dead; +extern int dbg_postorder; extern unsigned int fmax_warnings; extern int fmem_report;