diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-09-14 11:52:12 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-09-14 11:52:12 +0000 |
commit | 09fb8169aa13d7b58276075ee13e825729bbde66 (patch) | |
tree | 51b442cc55baa6a5cd6d64a78448bf644f070ac8 | |
parent | 554b372aa98901a0b4f93f59a90598e485a406ee (diff) |
proc_sparc: ne pas appeler ranlib si solaris.
selection: traiter Istore multi-mot (utilise pour les let rec de valeurs).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@271 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | asmcomp/proc_sparc.ml | 12 | ||||
-rw-r--r-- | asmcomp/selection.ml | 13 |
2 files changed, 20 insertions, 5 deletions
diff --git a/asmcomp/proc_sparc.ml b/asmcomp/proc_sparc.ml index 5edac88e1..83b554d55 100644 --- a/asmcomp/proc_sparc.ml +++ b/asmcomp/proc_sparc.ml @@ -259,5 +259,13 @@ let assemble_file infile outfile = let create_archive archive file_list = Misc.remove_file archive; - Sys.command ("ar rc " ^ archive ^ " " ^ String.concat " " file_list ^ - " && ranlib " ^ archive) + match Config.system with + "sunos" -> + Sys.command ("ar rc " ^ archive ^ " " ^ String.concat " " file_list ^ + " && ranlib " ^ archive) + | "solaris" -> + Sys.command ("ar rc " ^ archive ^ " " ^ String.concat " " file_list) + | _ -> + fatal_error "Proc_sparc.create_archive" + + diff --git a/asmcomp/selection.ml b/asmcomp/selection.ml index 6c8d01dc9..5dc9330e3 100644 --- a/asmcomp/selection.ml +++ b/asmcomp/selection.ml @@ -397,15 +397,22 @@ let rec emit_expr env exp seq = a := Arch.offset_addressing !a (size_component ty.(i)) done; rd + | Istore(Word, addr) -> + begin match new_args with + [] -> fatal_error "Selection.Istore" + | arg_addr :: args_data -> + let ra = emit_expr env arg_addr seq in + emit_stores env args_data seq ra addr; + [||] + end | Istore(chunk, addr) -> begin match new_args with [arg_addr; arg_data] -> let ra = emit_expr env arg_addr seq in let rd = emit_expr env arg_data seq in - insert (Iop(Istore(chunk, addr))) - (Array.append rd ra) [||] seq; + insert (Iop(Istore(chunk, addr))) (Array.append rd ra) [||] seq; [||] - | _ -> fatal_error "Selection.Istore" + | _ -> fatal_error "Selection.Istorechunk" end | Ialloc _ -> Proc.contains_calls := true; |