From: Andy Ayers Date: Wed, 18 Mar 2020 20:32:07 +0000 (-0700) Subject: JIT: propagate block flags during guarded devirt transform (#33724) X-Git-Tag: submit/tizen/20210909.063632~9095 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f7a6f0c19dd5ef0f9543a40f0b5108f9b38e6190;p=platform%2Fupstream%2Fdotnet%2Fruntime.git JIT: propagate block flags during guarded devirt transform (#33724) This transform duplicates code that might contain constructs we track via block flags, so update the block flags. --- diff --git a/src/coreclr/src/jit/indirectcalltransformer.cpp b/src/coreclr/src/jit/indirectcalltransformer.cpp index caec347..6aadc37 100644 --- a/src/coreclr/src/jit/indirectcalltransformer.cpp +++ b/src/coreclr/src/jit/indirectcalltransformer.cpp @@ -681,11 +681,12 @@ private: } //------------------------------------------------------------------------ - // CreateThen: create else block with direct call to method + // CreateThen: create then block with direct call to method // virtual void CreateThen() { thenBlock = CreateAndInsertBasicBlock(BBJ_ALWAYS, checkBlock); + thenBlock->bbFlags |= currBlock->bbFlags & BBF_SPLIT_GAINED; InlineCandidateInfo* inlineInfo = origCall->gtInlineCandidateInfo; CORINFO_CLASS_HANDLE clsHnd = inlineInfo->clsHandle; @@ -758,7 +759,8 @@ private: // virtual void CreateElse() { - elseBlock = CreateAndInsertBasicBlock(BBJ_NONE, thenBlock); + elseBlock = CreateAndInsertBasicBlock(BBJ_NONE, thenBlock); + elseBlock->bbFlags |= currBlock->bbFlags & BBF_SPLIT_GAINED; GenTreeCall* call = origCall; Statement* newStmt = compiler->gtNewStmt(call);