From a593b7070eb302cc446046797d87dab524be040b Mon Sep 17 00:00:00 2001 From: Yevgeny Rouban Date: Tue, 9 Jul 2019 05:07:28 +0000 Subject: [PATCH] Prepare for making SwitchInstProfUpdateWrapper strict This patch removes the test part that relates to the non-strict behavior of SwitchInstProfUpdateWrapper and changes the assertion to llvm_unreachable() to allow the check in release builds. This patch prepares SwitchInstProfUpdateWrapper to become strict with one line change. That is need to revert it easily if any failure will arise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365439 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/Instructions.cpp | 5 ++-- unittests/IR/InstructionsTest.cpp | 38 ------------------------------- 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/lib/IR/Instructions.cpp b/lib/IR/Instructions.cpp index 693918c8c07..2e7cad103c1 100644 --- a/lib/IR/Instructions.cpp +++ b/lib/IR/Instructions.cpp @@ -3913,9 +3913,8 @@ void SwitchInstProfUpdateWrapper::init() { if (ProfileData->getNumOperands() != SI.getNumSuccessors() + 1) { State = Invalid; if (SwitchInstProfUpdateWrapperStrict) - assert(false && - "number of prof branch_weights metadata operands corresponds to" - " number of succesors"); + llvm_unreachable("number of prof branch_weights metadata operands does " + "not correspond to number of succesors"); return; } diff --git a/unittests/IR/InstructionsTest.cpp b/unittests/IR/InstructionsTest.cpp index 7edd3a98bfb..9b9efe33cfe 100644 --- a/unittests/IR/InstructionsTest.cpp +++ b/unittests/IR/InstructionsTest.cpp @@ -792,44 +792,6 @@ TEST(InstructionsTest, SwitchInstProfUpdateWrapper) { EXPECT_EQ(*SIW.getSuccessorWeight(1), 11u); EXPECT_EQ(*SIW.getSuccessorWeight(2), 22u); } - - // Make prof data invalid by adding one extra weight. - SI->setMetadata(LLVMContext::MD_prof, MDBuilder(C).createBranchWeights( - { 99, 11, 22, 33 })); // extra - { // Invalid prof data makes wrapper act as if there were no prof data. - SwitchInstProfUpdateWrapper SIW(*SI); - ASSERT_FALSE(SIW.getSuccessorWeight(0).hasValue()); - ASSERT_FALSE(SIW.getSuccessorWeight(1).hasValue()); - ASSERT_FALSE(SIW.getSuccessorWeight(2).hasValue()); - SIW.addCase(ConstantInt::get(Int32Ty, 3), BB3.get(), 39); - ASSERT_FALSE(SIW.getSuccessorWeight(3).hasValue()); // did not add weight 39 - } - - { // With added 3rd case the prof data become consistent with num of cases. - SwitchInstProfUpdateWrapper SIW(*SI); - EXPECT_EQ(*SIW.getSuccessorWeight(0), 99u); - EXPECT_EQ(*SIW.getSuccessorWeight(1), 11u); - EXPECT_EQ(*SIW.getSuccessorWeight(2), 22u); - EXPECT_EQ(*SIW.getSuccessorWeight(3), 33u); - } - - // Make prof data invalid by removing one extra weight. - SI->setMetadata(LLVMContext::MD_prof, - MDBuilder(C).createBranchWeights({ 99, 11, 22 })); // shorter - { // Invalid prof data makes wrapper act as if there were no prof data. - SwitchInstProfUpdateWrapper SIW(*SI); - ASSERT_FALSE(SIW.getSuccessorWeight(0).hasValue()); - ASSERT_FALSE(SIW.getSuccessorWeight(1).hasValue()); - ASSERT_FALSE(SIW.getSuccessorWeight(2).hasValue()); - SIW.removeCase(SwitchInst::CaseIt(SI, 2)); - } - - { // With removed 3rd case the prof data become consistent with num of cases. - SwitchInstProfUpdateWrapper SIW(*SI); - EXPECT_EQ(*SIW.getSuccessorWeight(0), 99u); - EXPECT_EQ(*SIW.getSuccessorWeight(1), 11u); - EXPECT_EQ(*SIW.getSuccessorWeight(2), 22u); - } } TEST(InstructionsTest, CommuteShuffleMask) { -- 2.50.0