diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-17 16:30:43 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-17 16:30:43 +0200 |
commit | 1b5db339bb05f773a6a132be4c0b8cea54d50461 (patch) | |
tree | 5c7c767bc107eca66fdf6795777821572c5ec5af /arm | |
parent | 3d751c114fe4611a5b72e160127be09cf6c6cfec (diff) | |
download | compcert-kvx-1b5db339bb05f773a6a132be4c0b8cea54d50461.tar.gz compcert-kvx-1b5db339bb05f773a6a132be4c0b8cea54d50461.zip |
Experiment: support a subset of GCC's extended asm statements.
Diffstat (limited to 'arm')
-rw-r--r-- | arm/CBuiltins.ml | 4 | ||||
-rw-r--r-- | arm/TargetPrinter.ml | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/arm/CBuiltins.ml b/arm/CBuiltins.ml index 17aa5115..00de4df7 100644 --- a/arm/CBuiltins.ml +++ b/arm/CBuiltins.ml @@ -55,3 +55,7 @@ let builtins = { let size_va_list = 4 let va_list_scalar = true + +(* Expand memory references inside extended asm statements. Used in C2C. *) + +let asm_mem_argument arg = Printf.sprintf "[%s, #0]" arg diff --git a/arm/TargetPrinter.ml b/arm/TargetPrinter.ml index df17e595..913bff9e 100644 --- a/arm/TargetPrinter.ml +++ b/arm/TargetPrinter.ml @@ -1003,9 +1003,9 @@ module Target (Opt: PRINTER_OPTIONS) : TARGET = (Int32.to_int (camlint_of_coqint al)) args | EF_annot_val(txt, targ) -> print_annot_val oc (extern_atom txt) args res - | EF_inline_asm txt -> + | EF_inline_asm(txt, sg) -> fprintf oc "%s begin inline assembly\n" comment; - fprintf oc " %s\n" (extern_atom txt); + PrintAnnot.print_inline_asm preg oc (extern_atom txt) sg args res; fprintf oc "%s end inline assembly\n" comment; 5 (* hoping this is an upper bound... *) | _ -> |