Records with many Real fields are not updated correctly on x86
The program below outputs (R 1 1 1 1 1 1 1 0)
on the current linux-x86 nightly (June 11), which should be (R 1 1 1 1 1 1 1 1)
. When adding more fields to the record, all fields after the 7th are set to 0. This problem does not exist on x64 builds.
module test
import StdEnv
:: R =
{ f1 :: !Real, f2 :: !Real, f3 :: !Real, f4 :: !Real
, f5 :: !Real, f6 :: !Real, f7 :: !Real, f8 :: !Real
}
f :: !Int !R -> R
f 0 r = r
f i r = f (i-1) case i of
1 -> {r & f1= 1.0}
2 -> {r & f2= 1.0}
3 -> {r & f3= 1.0}
4 -> {r & f4= 1.0}
5 -> {r & f5= 1.0}
6 -> {r & f6= 1.0}
7 -> {r & f7= 1.0}
8 -> {r & f8= 1.0}
Start = f 8
{ f1=10.0, f2=10.0, f3=10.0, f4=10.0
, f5=10.0, f6=10.0, f7=10.0, f8=10.0
}