@@ -2216,10 +2216,20 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2216
2216
if (!loop->memOpInfo->inductionVariableChangeInfoMap->ContainsKey(inductionSymID))
2217
2217
{
2218
2218
loop->memOpInfo->inductionVariableChangeInfoMap->Add(inductionSymID, inductionVariableChangeInfo);
2219
+ if (sym->m_id != inductionSymID)
2220
+ {
2221
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2222
+ loop->memOpInfo->inductionVariableChangeInfoMap->Add(sym->m_id, inductionVariableChangeInfo);
2223
+ }
2219
2224
}
2220
2225
else
2221
2226
{
2222
2227
loop->memOpInfo->inductionVariableChangeInfoMap->Item(inductionSymID, inductionVariableChangeInfo);
2228
+ if (sym->m_id != inductionSymID)
2229
+ {
2230
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2231
+ loop->memOpInfo->inductionVariableChangeInfoMap->Item(sym->m_id, inductionVariableChangeInfo);
2232
+ }
2223
2233
}
2224
2234
}
2225
2235
else
@@ -2228,6 +2238,11 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2228
2238
{
2229
2239
Loop::InductionVariableChangeInfo inductionVariableChangeInfo = { 1, isIncr };
2230
2240
loop->memOpInfo->inductionVariableChangeInfoMap->Add(inductionSymID, inductionVariableChangeInfo);
2241
+ if (sym->m_id != inductionSymID)
2242
+ {
2243
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2244
+ loop->memOpInfo->inductionVariableChangeInfoMap->Add(sym->m_id, inductionVariableChangeInfo);
2245
+ }
2231
2246
}
2232
2247
else
2233
2248
{
@@ -2242,6 +2257,11 @@ GlobOpt::CollectMemOpInfo(IR::Instr *instrBegin, IR::Instr *instr, Value *src1Va
2242
2257
}
2243
2258
inductionVariableChangeInfo.isIncremental = isIncr;
2244
2259
loop->memOpInfo->inductionVariableChangeInfoMap->Item(inductionSymID, inductionVariableChangeInfo);
2260
+ if (sym->m_id != inductionSymID)
2261
+ {
2262
+ // Backwards pass uses this bit-vector to lookup upwardExposedUsed/bytecodeUpwardExposedUsed symbols, which are not necessarily vars. Just add both.
2263
+ loop->memOpInfo->inductionVariableChangeInfoMap->Item(sym->m_id, inductionVariableChangeInfo);
2264
+ }
2245
2265
}
2246
2266
}
2247
2267
break;
0 commit comments