From: Bruce Forstall Date: Tue, 10 May 2016 23:43:55 +0000 (-0700) Subject: Fix kill set of rep stos to include ECX X-Git-Tag: submit/tizen/20210909.063632~11030^2~10557^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=30522bb80b69736cfdc53e6a44f0caceb0acc242;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Fix kill set of rep stos to include ECX There was a very strange condition in the existing code to only conditionally include ECX in the kill set. I convinced myself that for AMD64, this condition always holds in this code path (which makes a lot more sense anyway), so I removed the condition, and also made all this code execute for x86 as well. Fixes dotnet/coreclr#4817 Commit migrated from https://github.com/dotnet/coreclr/commit/6e05fb4c01eeb133aa8683a581e5becab8d20b62 --- diff --git a/src/coreclr/src/jit/lsra.cpp b/src/coreclr/src/jit/lsra.cpp index 120f99e..facacaa 100644 --- a/src/coreclr/src/jit/lsra.cpp +++ b/src/coreclr/src/jit/lsra.cpp @@ -2527,14 +2527,10 @@ LinearScan::getKillSetForNode(GenTree* tree) case GenTreeBlkOp::BlkOpKindHelper: killMask = compiler->compHelperCallKillSet(CORINFO_HELP_MEMSET); break; -#ifdef _TARGET_AMD64_ +#ifdef _TARGET_XARCH_ case GenTreeBlkOp::BlkOpKindRepInstr: // rep stos kills RCX and RDI - killMask = RBM_RDI; - if (!initBlkNode->InitVal()->IsCnsIntOrI()) - { - killMask |= RBM_RCX; - } + killMask = RBM_RCX | RBM_RDI; break; #else case GenTreeBlkOp::BlkOpKindRepInstr: diff --git a/src/coreclr/tests/issues.targets b/src/coreclr/tests/issues.targets index 27d8beb..943c2e7 100644 --- a/src/coreclr/tests/issues.targets +++ b/src/coreclr/tests/issues.targets @@ -353,18 +353,6 @@ 3597 - - 4817 - - - 4817 - - - 4817 - - - 4817 - 4817