don't init tracked temps without GC fields. (#49879)
authorSergey Andreenko <seandree@microsoft.com>
Fri, 19 Mar 2021 20:37:07 +0000 (13:37 -0700)
committerGitHub <noreply@github.com>
Fri, 19 Mar 2021 20:37:07 +0000 (13:37 -0700)
The diffs are in D:\Sergey\logs\diff.liveness.txt

src/coreclr/jit/codegencommon.cpp

index 9b63903..d03db89 100644 (file)
@@ -4682,6 +4682,12 @@ void CodeGen::genCheckUseBlockInit()
             continue;
         }
 
+        if (varDsc->lvIsTemp && !varDsc->HasGCPtr())
+        {
+            varDsc->lvMustInit = 0;
+            continue;
+        }
+
         if (compiler->info.compInitMem || varDsc->HasGCPtr() || varDsc->lvMustInit)
         {
             if (varDsc->lvTracked)
@@ -4728,8 +4734,7 @@ void CodeGen::genCheckUseBlockInit()
                 unless they are untracked GC type or structs that contain GC pointers */
             CLANG_FORMAT_COMMENT_ANCHOR;
 
-            if ((!varDsc->lvTracked || (varDsc->lvType == TYP_STRUCT)) && varDsc->lvOnFrame &&
-                (!varDsc->lvIsTemp || varDsc->HasGCPtr()))
+            if ((!varDsc->lvTracked || (varDsc->lvType == TYP_STRUCT)) && varDsc->lvOnFrame)
             {
 
                 varDsc->lvMustInit = true;