cucapra/dahlia

Wrong merge function at combine

Closed this issue · 0 comments

Dahlia does not allow the following code:

decl m1: float[32][32 bank 32];
decl m2: float[32 bank 32][32];
decl prod: float[32][32];

for (let i = 0..32) {
  for (let j = 0..32) {
    for(let k = 0..32) unroll 32 {
      let mult = m1[i][k] * m2[k][j];
      ---
      m1[i][k] := 0.0;
    } combine {
      prod[i][j] += mult;
    }
  }
}

It will reports mult is not bound in scope. It's wrong. mult is bounded in scope.
The issue is the merge function on type environments doesn't correctly merge the sets of bound identifiers according to @rachitnigam .