aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Unblock.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2015-04-28 11:21:59 +0200
committerXavier Leroy <xavier.leroy@inria.fr>2015-04-28 11:21:59 +0200
commitb04bb783badb9051c62b26fb1858f916d0e4ccd0 (patch)
treec102a6ccdcfad8b4b3a76cffc2019742232a7cb3 /cparser/Unblock.ml
parent3c6f5343e0e64b273658b6b3508a8dd6c29b8cef (diff)
downloadcompcert-kvx-b04bb783badb9051c62b26fb1858f916d0e4ccd0.tar.gz
compcert-kvx-b04bb783badb9051c62b26fb1858f916d0e4ccd0.zip
Extended inline asm: handle missing cases.
Bitfields: better translation of initializers and compound literals; run this pass before unblocking. Transform.stmt: extend with ability to treat unblocked code. test/regression: more bitfield tests.
Diffstat (limited to 'cparser/Unblock.ml')
-rw-r--r--cparser/Unblock.ml8
1 files changed, 7 insertions, 1 deletions
diff --git a/cparser/Unblock.ml b/cparser/Unblock.ml
index 4013db9b..91f50552 100644
--- a/cparser/Unblock.ml
+++ b/cparser/Unblock.ml
@@ -225,7 +225,13 @@ let rec unblock_stmt env s =
{s with sdesc = Sreturn(Some (expand_expr true env e))}
| Sblock sl -> unblock_block env sl
| Sdecl d -> assert false
- | Sasm _ -> s
+ | Sasm(attr, template, outputs, inputs, clob) ->
+ let expand_asm_operand (lbl, cstr, e) =
+ (lbl, cstr, expand_expr true env e) in
+ {s with sdesc = Sasm(attr, template,
+ List.map expand_asm_operand outputs,
+ List.map expand_asm_operand inputs, clob)}
+
and unblock_block env = function
| [] -> sskip