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
	}