Skip to content

Commit a7d853d

Browse files
committed
use directives on arm
1 parent 0ef22fb commit a7d853d

File tree

4 files changed

+323
-216
lines changed

4 files changed

+323
-216
lines changed

backend/amd64/emit.ml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ let to_x86_directive (dir : ND.Directive.t) : X86_ast.asm_line list =
113113
comment_lines comment @ [X86_ast.Sleb128 (to_x86_constant constant)]
114114
| Space { bytes } -> [Space bytes]
115115
| Type (n, st) ->
116-
let typ = match st with Function -> "STT_FUNC" | Object -> "STT_OBJECT" in
116+
let typ = ND.symbol_type_to_string st in
117117
[Type (n, typ)]
118118
| Uleb128 { constant; comment } ->
119119
comment_lines comment @ [X86_ast.Uleb128 (to_x86_constant constant)]
@@ -1495,7 +1495,10 @@ let emit_instr ~first ~fallthrough i =
14951495
(* +0.0 *)
14961496
I.xorpd (res i 0) (res i 0)
14971497
| _ ->
1498-
(* float32 constants still take up 8 bytes; we load the lower half. *)
1498+
(* float32 constants take up 8 bytes when we emit them with
1499+
[float_literal] (see the conversion from int32 to int64 below). Thus,
1500+
we load the lower half. Note that this is different from Cmm 32-bit
1501+
floats ([Csingle]), which are emitted as 4-byte constants. *)
14991502
let lbl = add_float_constant (Int64.of_int32 f) in
15001503
I.movss (mem64_rip REAL4 (emit_label lbl)) (res i 0))
15011504
| Lop (Const_float f) -> (

0 commit comments

Comments
 (0)