From: Mike Danes Date: Sat, 25 Mar 2017 07:45:15 +0000 (+0200) Subject: Correctly update bitvector in optAddVnAssertionMapping X-Git-Tag: submit/tizen/20210909.063632~11030^2~7542^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a73feba9ee06f1c02c1c9b16328ee67a17cf135f;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Correctly update bitvector in optAddVnAssertionMapping When short bitvectors are used only the first assertion was stored in the map stored bitvector, all subsequent assertions were stored into copies of that bitvector. Commit migrated from https://github.com/dotnet/coreclr/commit/fb604c571325fb1a2d4e2b0d5f98dce61f1f0475 --- diff --git a/src/coreclr/src/jit/assertionprop.cpp b/src/coreclr/src/jit/assertionprop.cpp index b804b96..87aa946 100644 --- a/src/coreclr/src/jit/assertionprop.cpp +++ b/src/coreclr/src/jit/assertionprop.cpp @@ -1483,13 +1483,15 @@ void Compiler::optPrintVnAssertionMapping() */ void Compiler::optAddVnAssertionMapping(ValueNum vn, AssertionIndex index) { - ASSERT_TP cur; - if (!optValueNumToAsserts->Lookup(vn, &cur)) + ASSERT_TP* cur = optValueNumToAsserts->LookupPointer(vn); + if (cur == nullptr) { - cur = BitVecOps::MakeEmpty(apTraits); - optValueNumToAsserts->Set(vn, cur); + optValueNumToAsserts->Set(vn, BitVecOps::MakeSingleton(apTraits, index - 1)); + } + else + { + BitVecOps::AddElemD(apTraits, *cur, index - 1); } - BitVecOps::AddElemD(apTraits, cur, index - 1); } /*****************************************************************************