From a4b338f26bcaf081ab116fdc0e6e412e1c105b92 Mon Sep 17 00:00:00 2001 From: Pat Gavlin Date: Tue, 17 Jan 2017 13:58:06 -0800 Subject: [PATCH] GS checkes: only set lVExactSize for SIMD vars. Copying this field for non-SIMD variables causes a later call to `lvaSetStruct` to skip critical initialization steps. Skipping these steps led to failures in GC stress due to uninitialized frame variables that contained GC pointers. --- src/jit/gschecks.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jit/gschecks.cpp b/src/jit/gschecks.cpp index c3522b8..e4f1c25 100644 --- a/src/jit/gschecks.cpp +++ b/src/jit/gschecks.cpp @@ -406,11 +406,11 @@ void Compiler::gsParamsToShadows() #ifdef FEATURE_SIMD lvaTable[shadowVar].lvSIMDType = varDsc->lvSIMDType; - lvaTable[shadowVar].lvExactSize = varDsc->lvExactSize; lvaTable[shadowVar].lvUsedInSIMDIntrinsic = varDsc->lvUsedInSIMDIntrinsic; if (varDsc->lvSIMDType) { - lvaTable[shadowVar].lvBaseType = varDsc->lvBaseType; + lvaTable[shadowVar].lvExactSize = varDsc->lvExactSize; + lvaTable[shadowVar].lvBaseType = varDsc->lvBaseType; } #endif lvaTable[shadowVar].lvRegStruct = varDsc->lvRegStruct; -- 2.7.4