From patchwork Mon Nov 26 23:04:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 152095 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp491382ljp; Mon, 26 Nov 2018 15:05:18 -0800 (PST) X-Google-Smtp-Source: AFSGD/WbMAzVT91Nh6mtE+Ze0m9IoDmOF/4lF4exZOjBHyIzkXcBWHKbvPgaVxHZki0CTJ2c9qVQ X-Received: by 2002:a81:3454:: with SMTP id b81mr27668441ywa.191.1543273518539; Mon, 26 Nov 2018 15:05:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543273518; cv=none; d=google.com; s=arc-20160816; b=zetaAg4ID4K+HXNgTmSj67ei6ejGoB4NGopHjDByN6UqUGINw0bqjxLwk2UfKfDrcl qzVsu/oJnwUzfpMDGqBUa5Kh8cJClm4hPJSS/4zBu3TzTxOBBmuYQt01V06AdrEVyrQL DT4MA+cvYCwn473ywUkCfNA0TCv2wocfjw25KJ5oCIOqzBJcZ3S6+07k6JziMtSHsrPp OoEyHb//TDotTPWH1pyDw5j3yGtN5H/3H4bsLTThFp24Q41wTDWhxGNZSc3L45PstV6F Cr3QFpGR5dz1xxxPtFGAmqd3mzCKFddsubFTeWLvd4tbL7ZayCp613/MoQjhflErsc/7 Gv3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:message-id:date:to:from :dkim-signature; bh=4pQrDrsVZ497IMjqzCtBVXkOy2ASWSeNt/zcyzzaDMU=; b=lDxiogMd/rJo1+UdBUrVZTXO/uq8Gan3LwbMWRAWdS8zu8CojbguxcSYgs4ushOpmH Zbh4y6Lpp9bwz6FPXAvZpCnCM7plSg5g47wBmfVyZ1HlbIV+wQ09hS11BFb8oPrKtRbc Ft+pFz60y+PcsJB4g88rPqLiQw6tiRiNV98MzcB52NNnhCsEZMj34sdV9BZ7WnoX3mcf Fx66fzp/yQd7DDaQZrJDds7JhNKFDq5eir9PYkT8diMcyS44qAgtmj0YNC+2W9xQCyJG c3hdV/oY2rAPIYaRBZ7jtERwH/h1sAwioLiwKZqBpUO5rMcwvsWzaL23vHbexZNlb4Q1 Eujw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=dtz1MkiU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 79si1211193ywp.372.2018.11.26.15.05.18 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 26 Nov 2018 15:05:18 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=dtz1MkiU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39229 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRPwL-0002Zj-Qs for patch@linaro.org; Mon, 26 Nov 2018 18:05:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRPw3-0002ZM-Rq for qemu-devel@nongnu.org; Mon, 26 Nov 2018 18:05:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRPvz-0000GX-6c for qemu-devel@nongnu.org; Mon, 26 Nov 2018 18:04:59 -0500 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:46475) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gRPvy-0000GK-Vm for qemu-devel@nongnu.org; Mon, 26 Nov 2018 18:04:55 -0500 Received: by mail-pg1-x52d.google.com with SMTP id w7so6858683pgp.13 for ; Mon, 26 Nov 2018 15:04:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id; bh=4pQrDrsVZ497IMjqzCtBVXkOy2ASWSeNt/zcyzzaDMU=; b=dtz1MkiUubEopQGNepboBxoQnr3Lu+amFltAJTgrU+tMDfilMFYC/qH1I+wN6kx02Z 7C0u83hKtT4Rk8gVQDYPKXozlAIDRNnqgxdsrBMr7MlKk7dMCU5E7F7ymB2Ne8XA7Eu2 MrBmjnenMAy0UI+PbvbnQS+RqaZmgE85RjvXM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=4pQrDrsVZ497IMjqzCtBVXkOy2ASWSeNt/zcyzzaDMU=; b=kDC6cnHpZRsTwrYPllSkmhJWrCBBAv9BYWGlmsyPsInbTHlMReeP0LvCKyxe43OlXj SS00Q1Hx84xv7GUGOSvBeDp7eohr/qZipcNpPijIf3FFyCyNOAbaFn3xFk2TsbfQigFE B7Z5eAgPkib23JU0qeGi5sNoxDqH6XnHYD61MANxr6uGyw9j+Gw/lYQStDwASpfwCK9l blME/CASDu/zqcknaevZzkECKKrmtZ13teVBpJ/JNMULLky6VhiidCAMLevDrcyg7mxb U3PavOOIBqUUBGTXQfTKVnXh3yL9psOmP29a7amGDGFOXc8LPYapXToEXsGppZty1mJJ /rSg== X-Gm-Message-State: AA+aEWbVy5H8hyefIo9zt1GoDnCwis78BgRxWZ/ShWDFQ7roogf5As+6 /tZdle7FG2b4kxwrtaY50jCZFkk/8fw= X-Received: by 2002:a63:6cc8:: with SMTP id h191mr25866279pgc.366.1543273493280; Mon, 26 Nov 2018 15:04:53 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-170-180.tukw.qwest.net. [97.113.170.180]) by smtp.gmail.com with ESMTPSA id o13sm1798703pfk.57.2018.11.26.15.04.51 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 26 Nov 2018 15:04:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Mon, 26 Nov 2018 15:04:46 -0800 Message-Id: <20181126230450.672-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::52d Subject: [Qemu-devel] [PATCH 0/4] tcg: Remove unreachable code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" I've been meaning to add a trivial cleanup pass like this for some time. There have occasionally been instaces within front ends wherein we want to raise an invalid operand exception (or some such) deep within a set of subroutines. And without a longjmp (or some such) back to the top level of the translator loop we must return a dummy value so that we produce valid tcg code following the exception. While we still probably have to return a dummy value, we can clean up the dead code that follows the exception. In addition, when optimization is able to fold a conditional branch, the original code sequence: brcond x,y,$L1 goto_tb mov pc,foo exit_tb $1 set_label $L1 goto_tb mov pc,bar exit_tb $2 The initial brcond is either folded to br, or removed as a never taken branch, which leaves one of the two sets of goto_tb ... exit_tb unreachable. With this we can completely remove the code for the dead branch. While I do not expect this to have any noticable effect, this dead code could get in the way of some other changes that I'm planning. r~ Richard Henderson (4): tcg: Renumber TCG_CALL_* flags tcg: Add TCG_CALL_NO_RETURN tcg: Reference count labels tcg: Add reachable_code_pass include/exec/helper-head.h | 13 ++++++ include/exec/helper-tcg.h | 21 ++++++--- tcg/tcg-op.h | 1 + tcg/tcg.h | 11 +++-- tcg/tcg-op.c | 2 + tcg/tcg.c | 96 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 133 insertions(+), 11 deletions(-) -- 2.17.2