You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, I have the following (boiled down) example code:
export fn main() -> reg u64 {
reg u64 t t2;
reg u64 msf;
reg bool c;
msf = #init_msf();
() = #spill(t);
c = t == 0;
if (c) {
msf = #update_msf(c, msf);
t = #protect(t, msf);
t2 = (u64)[t];
}
() = #unspill(t);
reg u64 ret;
ret = 0;
return ret;
}
This fails with the following error:
"test.jazz", line 17 (4-21):
compilation error in function main:
lower spilling instructions:
The variable t (defined at "test.jazz", line 2 (12-13))
needs to be spilled before (maybe the variable has been written since the last spill)
This is caused by the assignment due to the #protect expression.
I think there should be an exception for assignments with #protect, since they do not change the contents of the variable, to allow this code to compile.
The text was updated successfully, but these errors were encountered:
First, your program is unsafe : you use t before initialising it.
Second the if set the value of t (invalidating its spilled value).
This explain the error (and it is exactly said in the error message)
Hello, I have the following (boiled down) example code:
This fails with the following error:
This is caused by the assignment due to the
#protect
expression.I think there should be an exception for assignments with
#protect
, since they do not change the contents of the variable, to allow this code to compile.The text was updated successfully, but these errors were encountered: