From: David Callahan Date: Mon, 14 Jan 2019 19:05:59 +0000 (+0000) Subject: Ignore PhiNodes when mapping sample profile data X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fcee5558c4d80e8c87f785edc0243c720b70c061;p=llvm Ignore PhiNodes when mapping sample profile data Summary: Like branch instructions, phi nodes frequently do not have debug information related to the block they are in and so they should be ignored. Reviewers: danielcdh, twoh, Kader, wmi Reviewed By: wmi Subscribers: aprantl, llvm-commits Differential Revision: https://reviews.llvm.org/D55094 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351102 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/IPO/SampleProfile.cpp b/lib/Transforms/IPO/SampleProfile.cpp index 06a1ce89827..1e86e04a79d 100644 --- a/lib/Transforms/IPO/SampleProfile.cpp +++ b/lib/Transforms/IPO/SampleProfile.cpp @@ -544,10 +544,10 @@ ErrorOr SampleProfileLoader::getInstWeight(const Instruction &Inst) { if (!FS) return std::error_code(); - // Ignore all intrinsics and branch instructions. - // Branch instruction usually contains debug info from sources outside of + // Ignore all intrinsics, phinodes and branch instructions. + // Branch and phinodes instruction usually contains debug info from sources outside of // the residing basic block, thus we ignore them during annotation. - if (isa(Inst) || isa(Inst)) + if (isa(Inst) || isa(Inst) || isa(Inst)) return std::error_code(); // If a direct call/invoke instruction is inlined in profile