summaryrefslogtreecommitdiff
path: root/asmcomp/sparc/emit.mlp
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2011-12-18 10:00:56 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2011-12-18 10:00:56 +0000
commitca0c2369197920fa945f03d71c918dc62bb1ae0b (patch)
tree538716b803dde97e9dab3744546e8b2ae97174e7 /asmcomp/sparc/emit.mlp
parent4af724cf549549598f1e8d02babaf91d62e24a58 (diff)
downloadocaml-ca0c2369197920fa945f03d71c918dc62bb1ae0b.tar.gz
PR#4869: rare collisions between assembly labels for code and data
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@11887 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmcomp/sparc/emit.mlp')
-rw-r--r--asmcomp/sparc/emit.mlp7
1 files changed, 5 insertions, 2 deletions
diff --git a/asmcomp/sparc/emit.mlp b/asmcomp/sparc/emit.mlp
index 52a8bc60a8..ef3fb9a8e3 100644
--- a/asmcomp/sparc/emit.mlp
+++ b/asmcomp/sparc/emit.mlp
@@ -98,6 +98,9 @@ let label_prefix =
let emit_label lbl =
emit_string label_prefix; emit_int lbl
+let emit_data_label lbl =
+ emit_string label_prefix; emit_string "d"; emit_int lbl
+
(* Output a pseudo-register *)
let emit_reg r =
@@ -714,7 +717,7 @@ let emit_item = function
| Cdefine_symbol s ->
`{emit_symbol s}:\n`
| Cdefine_label lbl ->
- `{emit_label (lbl + 100000)}:\n`
+ `{emit_data_label lbl}:\n`
| Cint8 n ->
` .byte {emit_int n}\n`
| Cint16 n ->
@@ -730,7 +733,7 @@ let emit_item = function
| Csymbol_address s ->
` .word {emit_symbol s}\n`
| Clabel_address lbl ->
- ` .word {emit_label (lbl + 100000)}\n`
+ ` .word {emit_data_label lbl}\n`
| Cstring s ->
emit_string_directive " .ascii " s
| Cskip n ->