[PATCH] D78277: [SimpleLoopUnswitch] Update DefaultExit condition to check unreachable is not empty.
Alina Sbirlea via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 6 15:55:36 PDT 2020
asbirlea marked an inline comment as done.
asbirlea added inline comments.
================
Comment at: llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp:614
+ bool isUnreachable = isa<UnreachableInst>(TI);
+ return !isUnreachable || (isUnreachable && (&*BBToCheck.begin() != TI));
+ };
----------------
chandlerc wrote:
> efriedma wrote:
> > Need to skip debug info
> I hadn't expected that to matter as the thing we care most about here are the empty-but-unreachable blocks *created* by this same pass (and those would never have debug info).
>
> But I suppose you're right that we still need to skip debug info because then the frontend adding it could suddenly enable (pointless) unswitching.
>
> Ugh, but good catch.
Just to clarify, when `TI` is an unreachable, the check should instead traverse `BBToCheck` and verify that if any instructions beside `TI` exists, they are an `IntrinsicInstr` and `I->getIntrinsicID()` is one of: `Intrinsic::dbg_addr`, `Intrinsic::dbg_declare`, `Intrinsic::dbg_label` or `Intrinsic::dbg_value`.
Is this right, or is there a simpler way to add this check?
Thanks for the input!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78277/new/
https://reviews.llvm.org/D78277
More information about the llvm-commits
mailing list