From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26994 invoked by alias); 27 Jul 2018 21:47:46 -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 26969 invoked by uid 89); 27 Jul 2018 21:47:45 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-5.9 required=5.0 tests=BAYES_00,GIT_PATCH_2,KAM_LAZY_DOMAIN_SECURITY,KAM_SHORT,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=pretty-printer, error.c, prettyprinter, UD:error.c X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 27 Jul 2018 21:47:43 +0000 Received: from smtp.corp.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 74E1F369C8 for ; Fri, 27 Jul 2018 21:47:42 +0000 (UTC) Received: from c64.redhat.com (ovpn-112-35.phx2.redhat.com [10.3.112.35]) by smtp.corp.redhat.com (Postfix) with ESMTP id A3087C6835; Fri, 27 Jul 2018 21:47:41 +0000 (UTC) From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 0/5] dump_printf support for middle-end types Date: Fri, 27 Jul 2018 21:47:00 -0000 Message-Id: <1532730752-10525-1-git-send-email-dmalcolm@redhat.com> X-IsSubscribed: yes X-SW-Source: 2018-07/txt/msg01761.txt.bz2 This patch kit converts dump_print and dump_printf_loc from using fprintf etc internally to using a new pretty-printer based on pp_format, which supports formatting middle-end types. In particular, the following codes are implemented (in addition to the standard pretty_printer ones): %E: gimple *: Equivalent to: dump_gimple_expr (MSG_*, TDF_SLIM, stmt, 0) %G: gimple *: Equivalent to: dump_gimple_stmt (MSG_*, TDF_SLIM, stmt, 0) %T: tree: Equivalent to: dump_generic_expr (MSG_*, arg, TDF_SLIM). Hence it becomes possible to convert e.g.: if (dump_enabled_p ()) { dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "not vectorized: different sized vector " "types in statement, "); dump_generic_expr (MSG_MISSED_OPTIMIZATION, TDF_SLIM, vectype); dump_printf (MSG_MISSED_OPTIMIZATION, " and "); dump_generic_expr (MSG_MISSED_OPTIMIZATION, TDF_SLIM, nunits_vectype); dump_printf (MSG_MISSED_OPTIMIZATION, "\n"); } return false; into a single call to dump_printf_loc: if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "not vectorized: different sized vector " "types in statement, %T and %T\n", vectype, nunits_vectype); return false; Unlike regular pretty-printers, this captures metadata for the formatted chunks as appropriate, so that when written out to a JSON optimization record, the relevant parts of the message are labelled by type, and by source location (so that e.g. %G is entirely equivalent to using dump_gimple_stmt). Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. OK for trunk? I'm hoping to use this in a v3 of: "[PATCH 0/5] [RFC v2] Higher-level reporting of vectorization problems" https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00446.html where the above might become: return opt_result::failure_at (stmt, "not vectorized: different sized vector " "types in statement, %T and %T\n", vectype, nunits_vectype); where opt_result::failure_at would encapsulate the "false", and capture an opt_problem * (when dumps are enabled), for the reasons discussed in that other kit. David Malcolm (5): Simplify dump_context by adding a dump_loc member function dumpfile.c: eliminate special-casing of dump_file/alt_dump_file C++: clean up cp_printer c-family: clean up the data tables in c-format.c Formatted printing for dump_* in the middle-end gcc/c-family/c-format.c | 159 +++-- gcc/c-family/c-format.h | 1 + gcc/cp/error.c | 46 +- gcc/dump-context.h | 25 +- gcc/dumpfile.c | 1011 ++++++++++++++++++++++------- gcc/dumpfile.h | 54 +- gcc/optinfo-emit-json.cc | 2 +- gcc/optinfo.cc | 135 +--- gcc/optinfo.h | 38 +- gcc/testsuite/gcc.dg/format/gcc_diag-1.c | 19 +- gcc/testsuite/gcc.dg/format/gcc_diag-10.c | 33 +- 11 files changed, 998 insertions(+), 525 deletions(-) -- 1.8.5.3