@@ -2222,10 +2222,20 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2222
2222
if (!loop->memOpInfo->inductionVariableChangeInfoMap->ContainsKey(inductionSymID))
2223
2223
{
2224
2224
loop->memOpInfo->inductionVariableChangeInfoMap->Add(inductionSymID, inductionVariableChangeInfo);
2225
+ if (sym->m_id != inductionSymID)
2226
+ {
2227
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2228
+ loop->memOpInfo->inductionVariableChangeInfoMap->Add(sym->m_id, inductionVariableChangeInfo);
2229
+ }
2225
2230
}
2226
2231
else
2227
2232
{
2228
2233
loop->memOpInfo->inductionVariableChangeInfoMap->Item(inductionSymID, inductionVariableChangeInfo);
2234
+ if (sym->m_id != inductionSymID)
2235
+ {
2236
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2237
+ loop->memOpInfo->inductionVariableChangeInfoMap->Item(sym->m_id, inductionVariableChangeInfo);
2238
+ }
2229
2239
}
2230
2240
}
2231
2241
else
@@ -2234,6 +2244,11 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2234
2244
{
2235
2245
Loop::InductionVariableChangeInfo inductionVariableChangeInfo = { 1, isIncr };
2236
2246
loop->memOpInfo->inductionVariableChangeInfoMap->Add(inductionSymID, inductionVariableChangeInfo);
2247
+ if (sym->m_id != inductionSymID)
2248
+ {
2249
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2250
+ loop->memOpInfo->inductionVariableChangeInfoMap->Add(sym->m_id, inductionVariableChangeInfo);
2251
+ }
2237
2252
}
2238
2253
else
2239
2254
{
@@ -2248,6 +2263,11 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2248
2263
}
2249
2264
inductionVariableChangeInfo.isIncremental = isIncr;
2250
2265
loop->memOpInfo->inductionVariableChangeInfoMap->Item(inductionSymID, inductionVariableChangeInfo);
2266
+ if (sym->m_id != inductionSymID)
2267
+ {
2268
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2269
+ loop->memOpInfo->inductionVariableChangeInfoMap->Item(sym->m_id, inductionVariableChangeInfo);
2270
+ }
2251
2271
}
2252
2272
}
2253
2273
break;
0 commit comments