From patchwork Tue Jul 18 23:12:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 12237 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2078150vqt; Tue, 18 Jul 2023 16:34:38 -0700 (PDT) X-Google-Smtp-Source: APBJJlHLwCxYOBACiWI0WbQA32tCQIZArhRsLzwseyqKK574a578gR68MpmmqFYDAGlLxt16+iaS X-Received: by 2002:a5d:49c7:0:b0:317:18f9:c5bd with SMTP id t7-20020a5d49c7000000b0031718f9c5bdmr346526wrs.3.1689723278037; Tue, 18 Jul 2023 16:34:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689723278; cv=none; d=google.com; s=arc-20160816; b=mMqrpBUWucMivPcFYOf4Kdyy7hATJ3LK2NIS1ZO5WqVutKtu5JKZj6XGajl1GynMhP jcNEVq1w7UCKPNehkFsE4PKU+cx9TzpdjmE/vfls7pkLC6paU9Ow+6Nb7ckANecpSRzl UFqa4vh23FVNflyHQ/9e22aJ6FsSLbtfRX0M5V8pms6Y0gii7hyP0P1T1WPlZUSzLaNo y8B9vKnB9iGzY6OYZXmIzMurI/3/pvQHeUNFSBjSsJaNHJZ6evKW1vGi2nPf8vFDAeyc Rl9MxS7lm4m7B2aC1yUOrgMliayLdb89C/KFFBwHQ07A5VcCPJ7XR9ba4QWLmn8buA4k p7Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=hSXG3zCQBQZE1VioyYAxGypQ+kdsfq8wNF8S9AGrSlc=; fh=hKkoBlg2rAphFCrDc208gTEUOqt6AsfxlVHdeTjfSrM=; b=tMI0d9W+5A6jDzBWL89vCvygdyzLbmlRc7FBrRhInZN7UWMj9tJgIOvE94XtQ/zmXy dSSy9kkHlT8yWugUsIL0q4IEC2bHfJH3x2742Vy6bUuouKqv9owxuZgK9gI1wCZ3M5hK ZV0qQjoIZdJeN83P8+ClKKzoFfUa/elxWpFzWnU9ILPTBggkdtHBZHBTK17kpASKrYT5 qdh91z4ws911log9luYPq0LsmX5SNzTLzAPUqxJpFsurMnRfdlBXU6hvGAlRZYvgRnLq c5U0oSqCXORRAw+tiSn/Yuybbf4HH+BfAihBnEr6afdDvfdwgLOCQRxNyooLHoyhWuwE 60MA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=DAZW1MKK; 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 (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id rk12-20020a170907214c00b00992d263099dsi1787037ejb.10.2023.07.18.16.34.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 16:34:38 -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=DAZW1MKK; 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 517973858D32 for ; Tue, 18 Jul 2023 23:34:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 517973858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1689723275; bh=hSXG3zCQBQZE1VioyYAxGypQ+kdsfq8wNF8S9AGrSlc=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=DAZW1MKK/1dX0s0er8r41PF4xGN6vjH2/t329yypeinDa7LMFDTApaNW//Z4l3nAC vb9QCpU5WhAwVydiGPHKD6QGuWBqip5hNDSc5/do7RiZyLtAL7iATA3xxksza1haeK WEulLlQ6WwygGk0/kB2uVq9BuSordqXSY7oA4Th8= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id D15B63858D32; Tue, 18 Jul 2023 23:33:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D15B63858D32 Received: from pps.filterd (m0247471.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36INPerO012269; Tue, 18 Jul 2023 23:33:37 GMT Received: from mxout24.cac.washington.edu (mxout24.cac.washington.edu [140.142.234.158]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3rwysrt5bd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Jul 2023 23:33:37 +0000 Received: from smtp.washington.edu (smtp.washington.edu [128.208.60.54]) by mxout24.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW22.04) with ESMTP id 36INX5IT007737 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 18 Jul 2023 16:33:05 -0700 X-Auth-Received: from localhost.localdomain ([10.154.74.234]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW19.10) with ESMTPSA id 36INX5Lw022682 (version=TLSv1.2 cipher=DHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 18 Jul 2023 16:33:05 -0700 X-UW-Orig-Sender: kmatsui@smtp.washington.edu To: gcc-patches@gcc.gnu.org Cc: Ken Matsui Subject: [PATCH 0/8] Tweak predicate macros in tree Date: Tue, 18 Jul 2023 16:12:42 -0700 Message-ID: <20230718233301.28677-1-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: wYwPAiAJfV9P0F5sC_3Wyy4uxm8xOyhm X-Proofpoint-GUID: wYwPAiAJfV9P0F5sC_3Wyy4uxm8xOyhm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-18_18,2023-07-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 mlxlogscore=999 spamscore=0 clxscore=1034 phishscore=0 bulkscore=0 mlxscore=0 adultscore=0 malwarescore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307180208 X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SCC_10_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_NEUTRAL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no 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: Ken Matsui via Gcc-patches From: Ken Matsui Reply-To: Ken Matsui Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771803276116800533 X-GMAIL-MSGID: 1771803276116800533 This patch series tweaks predicate macros in tree.h to make the code more readable. TYPE_REF_P is moved to tree.h and used for INDIRECT_TYPE_P and TYPE_REF_IS_LVALUE. TYPE_PTR_P is also moved to tree.h and used for INDIRECT_TYPE_P. POINTER_TYPE_P in tree.h is replaced with INDIRECT_TYPE_P since it is ambiguous. TYPE_REF_IS_LVALUE is defined in tree.h through TYPE_REF_P and TYPE_REF_IS_RVALUE. The same behavior codes with those predicate macros are replaced for clarity. These works were all the way up to implementing __is_lvalue_reference built-in trait and optimizing the is_lvalue_reference trait. However, those changes were dropped since I did not observe any performance improvements. For those who are interested in the benchmark results, they can be found below: 1. is_lvalue_reference https://github.com/ken-matsui/gcc-benches/blob/main/is_lvalue_reference.md#tue-jul-18-033708-pm-pdt-2023 Time: +1.35432% Peak Memory Usage: -0.103283% Total Memory Usage: No difference 2. is_lvalue_reference_v https://github.com/ken-matsui/gcc-benches/blob/main/is_lvalue_reference_v.md#tue-jul-18-034236-pm-pdt-2023 Time: No difference Peak Memory Usage: -0.426872% Total Memory Usage: -0.677638% Ken Matsui (8): c++, tree: Move TYPE_REF_P to tree.h gcc: Use TYPE_REF_P c++, tree: Move TYPE_PTR_P to tree.h c++, tree: Move INDIRECT_TYPE_P to tree.h gcc: Use INDIRECT_TYPE_P instead of POINTER_TYPE_P tree: Remove POINTER_TYPE_P tree: Define TYPE_REF_IS_LVALUE c++, lto: Use TYPE_REF_IS_LVALUE gcc/ada/gcc-interface/ada-tree.h | 2 +- gcc/ada/gcc-interface/decl.cc | 6 +- gcc/ada/gcc-interface/trans.cc | 16 +-- gcc/ada/gcc-interface/utils.cc | 12 +- gcc/ada/gcc-interface/utils2.cc | 14 +- gcc/alias.cc | 12 +- gcc/analyzer/analyzer.cc | 4 +- gcc/analyzer/call-details.h | 2 +- gcc/analyzer/call-summary.cc | 2 +- gcc/analyzer/checker-event.cc | 4 +- gcc/analyzer/constraint-manager.cc | 2 +- gcc/analyzer/engine.cc | 4 +- gcc/analyzer/program-state.cc | 2 +- gcc/analyzer/region-model-manager.cc | 6 +- gcc/analyzer/region-model.cc | 6 +- gcc/analyzer/sm.cc | 4 +- gcc/analyzer/svalue.cc | 2 +- gcc/analyzer/varargs.cc | 2 +- gcc/asan.cc | 4 +- gcc/builtins.cc | 24 ++-- gcc/c-family/c-ada-spec.cc | 2 +- gcc/c-family/c-attribs.cc | 32 ++--- gcc/c-family/c-common.cc | 41 +++--- gcc/c-family/c-omp.cc | 8 +- gcc/c-family/c-pretty-print.cc | 4 +- gcc/c-family/c-ubsan.cc | 10 +- gcc/c-family/c-warn.cc | 34 ++--- gcc/c/c-decl.cc | 8 +- gcc/c/c-parser.cc | 4 +- gcc/c/c-typeck.cc | 40 +++--- gcc/c/gimple-parser.cc | 8 +- gcc/calls.cc | 2 +- gcc/cfgexpand.cc | 6 +- gcc/cgraph.cc | 2 +- gcc/cgraphunit.cc | 2 +- gcc/config/aarch64/aarch64-builtins.cc | 2 +- gcc/config/aarch64/aarch64-sve-builtins.cc | 2 +- gcc/config/aarch64/aarch64.cc | 6 +- gcc/config/arc/arc.cc | 2 +- gcc/config/arm/arm-builtins.cc | 6 +- gcc/config/arm/arm-mve-builtins.cc | 2 +- gcc/config/avr/avr.cc | 6 +- gcc/config/epiphany/epiphany.cc | 2 +- gcc/config/gcn/gcn-tree.cc | 2 +- gcc/config/gcn/gcn.cc | 6 +- gcc/config/i386/i386-builtins.cc | 2 +- gcc/config/i386/i386-options.cc | 2 +- gcc/config/i386/i386.cc | 10 +- gcc/config/m32c/m32c.cc | 2 +- gcc/config/m68k/m68k.cc | 4 +- gcc/config/mips/mips.cc | 2 +- gcc/config/mn10300/mn10300.cc | 2 +- gcc/config/msp430/msp430.cc | 2 +- gcc/config/nios2/nios2.cc | 2 +- gcc/config/pa/pa.cc | 4 +- gcc/config/pru/pru-passes.cc | 2 +- gcc/config/pru/pru.cc | 2 +- gcc/config/rs6000/rs6000-builtin.cc | 4 +- gcc/config/rs6000/rs6000-c.cc | 10 +- gcc/config/rs6000/rs6000.cc | 4 +- gcc/config/s390/s390-c.cc | 2 +- gcc/config/s390/s390.cc | 12 +- gcc/config/sparc/sparc.cc | 2 +- gcc/convert.cc | 4 +- gcc/cp/class.cc | 4 +- gcc/cp/constexpr.cc | 8 +- gcc/cp/coroutines.cc | 4 +- gcc/cp/cp-gimplify.cc | 2 +- gcc/cp/cp-tree.h | 12 -- gcc/cp/decl.cc | 5 +- gcc/cp/init.cc | 5 +- gcc/cp/method.cc | 5 +- gcc/cp/pt.cc | 8 +- gcc/cp/semantics.cc | 18 +-- gcc/cp/tree.cc | 2 +- gcc/cp/typeck.cc | 4 +- gcc/d/d-attribs.cc | 6 +- gcc/d/d-builtins.cc | 2 +- gcc/d/d-codegen.cc | 12 +- gcc/d/d-convert.cc | 12 +- gcc/d/expr.cc | 10 +- gcc/d/intrinsics.cc | 12 +- gcc/dojump.cc | 4 +- gcc/dwarf2out.cc | 2 +- gcc/emit-rtl.cc | 2 +- gcc/expmed.cc | 2 +- gcc/expr.cc | 22 +-- gcc/fold-const.cc | 58 ++++---- gcc/fortran/trans-array.cc | 36 ++--- gcc/fortran/trans-decl.cc | 32 ++--- gcc/fortran/trans-expr.cc | 106 +++++++------- gcc/fortran/trans-intrinsic.cc | 28 ++-- gcc/fortran/trans-io.cc | 8 +- gcc/fortran/trans-openmp.cc | 88 ++++++------ gcc/fortran/trans-stmt.cc | 14 +- gcc/fortran/trans-types.cc | 8 +- gcc/fortran/trans.cc | 14 +- gcc/function-abi.cc | 2 +- gcc/function.cc | 6 +- gcc/gimple-array-bounds.cc | 6 +- gcc/gimple-expr.cc | 8 +- gcc/gimple-fold.cc | 20 +-- gcc/gimple-loop-versioning.cc | 4 +- gcc/gimple-low.cc | 2 +- gcc/gimple-pretty-print.cc | 4 +- gcc/gimple-range-cache.cc | 4 +- gcc/gimple-range-fold.cc | 2 +- gcc/gimple-range-infer.cc | 2 +- gcc/gimple-range-path.cc | 4 +- gcc/gimple-ssa-isolate-paths.cc | 6 +- gcc/gimple-ssa-nonnull-compare.cc | 4 +- gcc/gimple-ssa-sprintf.cc | 4 +- gcc/gimple-ssa-store-merging.cc | 6 +- gcc/gimple-ssa-strength-reduction.cc | 22 +-- gcc/gimple-ssa-warn-access.cc | 8 +- gcc/gimple-ssa-warn-restrict.cc | 6 +- gcc/gimple.cc | 10 +- gcc/gimplify.cc | 44 +++--- gcc/go/go-gcc.cc | 2 +- gcc/godump.cc | 4 +- gcc/graphite-isl-ast-to-gimple.cc | 8 +- gcc/graphite-sese-to-poly.cc | 2 +- gcc/ipa-cp.cc | 4 +- gcc/ipa-devirt.cc | 8 +- gcc/ipa-free-lang-data.cc | 8 +- gcc/ipa-icf-gimple.cc | 2 +- gcc/ipa-icf.cc | 6 +- gcc/ipa-modref-tree.cc | 2 +- gcc/ipa-modref.cc | 8 +- gcc/ipa-param-manipulation.cc | 4 +- gcc/ipa-polymorphic-call.cc | 6 +- gcc/ipa-prop.cc | 28 ++-- gcc/ipa-sra.cc | 4 +- gcc/jit/dummy-frontend.cc | 2 +- gcc/langhooks.cc | 2 +- gcc/lto-streamer-out.cc | 4 +- gcc/lto/lto-common.cc | 10 +- gcc/lto/lto-lang.cc | 2 +- gcc/lto/lto-symtab.cc | 2 +- gcc/m2/gm2-gcc/m2expr.cc | 12 +- gcc/m2/gm2-gcc/m2tree.cc | 2 +- gcc/m2/gm2-gcc/m2treelib.cc | 2 +- gcc/m2/m2pp.cc | 4 +- gcc/match.pd | 48 +++---- gcc/objc/objc-act.cc | 32 ++--- gcc/objc/objc-encoding.cc | 2 +- gcc/objc/objc-gnu-runtime-abi-01.cc | 4 +- gcc/objc/objc-next-runtime-abi-01.cc | 4 +- gcc/objc/objc-next-runtime-abi-02.cc | 6 +- gcc/omp-expand.cc | 156 ++++++++++----------- gcc/omp-general.cc | 10 +- gcc/omp-low.cc | 45 +++--- gcc/omp-oacc-neuter-broadcast.cc | 8 +- gcc/omp-offload.cc | 2 +- gcc/omp-simd-clone.cc | 28 ++-- gcc/pointer-query.cc | 12 +- gcc/predict.cc | 4 +- gcc/range-op.cc | 4 +- gcc/rust/backend/rust-tree.cc | 2 +- gcc/rust/rust-gcc.cc | 2 +- gcc/sese.cc | 2 +- gcc/tree-affine.cc | 12 +- gcc/tree-cfg.cc | 38 ++--- gcc/tree-chrec.cc | 14 +- gcc/tree-chrec.h | 4 +- gcc/tree-core.h | 2 +- gcc/tree-data-ref.cc | 18 +-- gcc/tree-dfa.cc | 2 +- gcc/tree-if-conv.cc | 4 +- gcc/tree-inline.cc | 10 +- gcc/tree-nested.cc | 8 +- gcc/tree-object-size.cc | 10 +- gcc/tree-outof-ssa.cc | 2 +- gcc/tree-pretty-print.cc | 8 +- gcc/tree-profile.cc | 2 +- gcc/tree-scalar-evolution.cc | 8 +- gcc/tree-sra.cc | 2 +- gcc/tree-ssa-address.cc | 6 +- gcc/tree-ssa-alias.cc | 18 +-- gcc/tree-ssa-ccp.cc | 22 +-- gcc/tree-ssa-copy.cc | 4 +- gcc/tree-ssa-dom.cc | 2 +- gcc/tree-ssa-dse.cc | 2 +- gcc/tree-ssa-forwprop.cc | 6 +- gcc/tree-ssa-ifcombine.cc | 2 +- gcc/tree-ssa-loop-ch.cc | 2 +- gcc/tree-ssa-loop-ivopts.cc | 44 +++--- gcc/tree-ssa-loop-manip.cc | 10 +- gcc/tree-ssa-loop-niter.cc | 40 +++--- gcc/tree-ssa-loop-split.cc | 10 +- gcc/tree-ssa-phiopt.cc | 2 +- gcc/tree-ssa-phiprop.cc | 2 +- gcc/tree-ssa-reassoc.cc | 14 +- gcc/tree-ssa-sccvn.cc | 6 +- gcc/tree-ssa-strlen.cc | 10 +- gcc/tree-ssa-structalias.cc | 14 +- gcc/tree-ssa-threadedge.cc | 2 +- gcc/tree-ssa-uninit.cc | 10 +- gcc/tree-ssa.cc | 2 +- gcc/tree-ssanames.cc | 22 +-- gcc/tree-stdarg.cc | 6 +- gcc/tree-streamer-in.cc | 2 +- gcc/tree-streamer-out.cc | 2 +- gcc/tree-tailcall.cc | 8 +- gcc/tree-vect-data-refs.cc | 4 +- gcc/tree-vect-loop-manip.cc | 2 +- gcc/tree-vect-loop.cc | 4 +- gcc/tree-vect-stmts.cc | 18 +-- gcc/tree-vrp.cc | 6 +- gcc/tree.cc | 64 ++++----- gcc/tree.h | 30 ++-- gcc/ubsan.cc | 18 +-- gcc/value-pointer-equiv.cc | 4 +- gcc/value-pointer-equiv.h | 2 +- gcc/value-query.cc | 12 +- gcc/value-range.h | 6 +- gcc/var-tracking.cc | 6 +- gcc/varasm.cc | 10 +- gcc/vr-values.cc | 6 +- 219 files changed, 1139 insertions(+), 1148 deletions(-)