summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asmcomp/linscan.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/asmcomp/linscan.ml b/asmcomp/linscan.ml
index 24fdc7ca09..46d26fc36a 100644
--- a/asmcomp/linscan.ml
+++ b/asmcomp/linscan.ml
@@ -97,7 +97,11 @@ let allocate_free_register i =
| rn ->
let ci = active.(cl) in
let r0 = Proc.first_available_register.(cl) in
- (* Create register mask for this class *)
+ (* Create register mask for this class
+ note: if frame pointers are enabled then some registers may have
+ indexes that are off-bounds; we hence protect write accesses
+ below (given that the assign function will not consider such
+ registers) *)
let regmask = Array.make rn true in
(* Remove all assigned registers from the register mask *)
List.iter