From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 58FDA3858D3C for ; Fri, 7 Oct 2022 14:13:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 58FDA3858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ventanamicro.com Received: by mail-pf1-x42a.google.com with SMTP id h13so3574621pfr.7 for ; Fri, 07 Oct 2022 07:13:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=R7ILfZm0satuxfB9B1ve8XDAJ6PD5aNfcvqB/RjiXQE=; b=Fe+lB1EJyWdGfMQOIyO99SkLwLcESpladHshN71CUJD0AdW8Nad7XcT+iHV9cSFw/k IuzPlDm63mmEAHVxZkHCVi16sY3c2WQ6e1sh8W+UxUvXeh9kXT2bcbe5+OPHgHQraKGl Zkf8mXglrrko2i/n5iGLfVwzgpUerouPTnMdLIsov5INBSlmYw1BpSDqcQnY2auMmrJI C9pnyleRBQsKD6FjCiGWB/phVLganJv+UV1p22PPhR1vl/ikqBsSju9lrzHPfGKPu6KL pOEgCfue6eHioaUPVenrNz8G+VHY2Rps/14e6LUgSL0XFBQMyQlw+3YBOfL/ZhhIdhL5 X4AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=R7ILfZm0satuxfB9B1ve8XDAJ6PD5aNfcvqB/RjiXQE=; b=1HfFeIVc7m0bSiVFhpUjJjjso5qkgSb+AAgpPLiBLeMLUYZdAKOcljKLv7OGl4V7CE U47mKktUUm9yFoikjQNO7EDY8wXYQlT1IZz8MFatwy6HcOsFUX571pHnOlfwdGDNIYLG i+67IBL/7Zbf6uSmREK3+/PdWNetucpq5ZMDxvXl+m7oM0IW9pxwLhuDGYGDIXgertZ+ 4Xbi9p7+9JBxNtm8HKepPDCNU8fyVnTAYtBk120u1vQodCVkSOvlVerfAurYLsxyI3O/ CAaO61YkVCZaHyzltl0rHbAa8ERbB9usmD+snQGeHleOaRj3Ou9rRj9MbNJ91Jai31dN YZfA== X-Gm-Message-State: ACrzQf0IdA6bffO3CCWUgGkbamEZnxlyjM58rmtmo06u0VRYB4DjXuPb 0/SKCGmfj56iWkAxF8jaQHDSdVElHCPuTjP8 X-Google-Smtp-Source: AMsMyM7d+YmKgDEGTtyjwXxSqONu6mUkec4mGIqiqmNwHgmX9BMMlpQj01Kbzu/qRoePRVG89AM/zQ== X-Received: by 2002:a17:902:a9c6:b0:178:b2d4:f8b2 with SMTP id b6-20020a170902a9c600b00178b2d4f8b2mr5181432plr.79.1665151998849; Fri, 07 Oct 2022 07:13:18 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::f0a? ([2601:681:8600:13d0::f0a]) by smtp.gmail.com with ESMTPSA id a16-20020a170902b59000b0017e232b6724sm1575617pls.69.2022.10.07.07.13.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Oct 2022 07:13:18 -0700 (PDT) Message-ID: <76e49e22-86be-afbc-50d4-97e8c4d16be9@ventanamicro.com> Date: Fri, 7 Oct 2022 08:13:17 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [RFA] Minor improvement to coremark, avoid unconditional jump to return Content-Language: en-US To: Franz Sirl , gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 10/7/22 04:51, Franz Sirl wrote: > Am 2022-09-25 um 18:28 schrieb Jeff Law: >> This is a minor improvement for the core_list_find routine in coremark. >> >> >> Basically for riscv, and likely other targets, we can end up with an >> unconditional jump to a return statement.    This is a result of >> compensation code created by bb-reorder, and no jump optimization >> pass runs after bb-reorder to clean this stuff up. >> >> This patch utilizes preexisting code to identify suitable branch >> targets as well as preexisting code to emit a suitable return, so >> it's pretty simple.  Note that when we arrange to do this >> optimization, the original return block may become unreachable. So we >> conditionally call delete_unreachable_blocks to fix that up. >> >> This triggers ~160 times during an x86_64 bootstrap.  Naturally it >> bootstraps and regression tests on x86_64. >> >> I've also bootstrapped this on riscv64, regression testing with qemu >> shows some regressions, but AFAICT they're actually qemu bugs with >> signal handling/delivery -- qemu user mode emulation is not >> consistently calling user defined signal handlers.  Given the same >> binary, sometimes they'll get called and the test passes, other times >> the handler isn't called and the test (of course) fails. I'll >> probably spend some time to try and chase this down for the sake of >> making testing easier. >> >> >> OK for the trunk? > > Hello Jeff, > > I've bisected this change to break a "profiledbootstrap" on x86_64 > like that: > > make[3]: Entering directory > '/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/gcc' > /home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/./prev-gcc/xg++ > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/./prev-gcc/ > -B/usr/x86_64-suse-linux/ > bin/ -nostdinc++ > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64 > -suse-linux/prev-x86_64-suse-linux/libstdc++-v3/libsupc++/.libs > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include/x86_64-suse-linu > x > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include > > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/libstdc++-v3/libsupc++ > -L > /home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs > -L/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x8 > > 6_64-suse-linux/libstdc++-v3/libsupc++/.libs  -fno-PIE -c   -O2 -g > -fmessage-length=0 -D_FORTIFY_SOURCE=2 -funwind-tables > -fasynchronous-unwind-tables -U_FORTIFY_SOURCE -fprofile-use > -fprofile-reprod > ucible=parallel-runs -DIN_GCC     -fno-exceptions -fno-rtti > -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings > -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic > -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings > -fno-common -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. > -I../../gcc/../include -I../../gcc/../libcpp/include > -I../../gcc/../libcody >  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid > -I../libdecnumber -I../../gcc/../libbacktrace   -o cgraph.o -MT > cgraph.o -MMD -MP -MF ./.deps/cgraph.TPo ../../gcc/cgraph.cc > ../../gcc/cgraph.cc: In member function 'cgraph_edge* > cgraph_edge::first_speculative_call_target()': > ../../gcc/cgraph.cc:1166:1: error: EDGE_CROSSING incorrectly set > across same section >  1166 | } >       | ^ > ../../gcc/cgraph.cc:1166:1: error: No region crossing jump at section > boundary in bb 19 > during RTL pass: bbro > ../../gcc/cgraph.cc:1166:1: internal compiler error: verify_flow_info > failed > 0xa7116e verify_flow_info() >         ../../gcc/cfghooks.cc:284 > 0x1c64958 execute >         ../../gcc/bb-reorder.cc:2663 > > In such a case, what do you need to reproduce it? I'm a mere user of > the Suse RPM builds here, no idea if profiling needs any extra data to > reproduce to bug. Franz, it's been a long time.  Good to hear from you. I'll take a look.  I'll start with a profiledbootstrap and if that doesn't reproduce I'll get in contact jeff