summaryrefslogtreecommitdiff
path: root/src/constant_fold.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-11-23 17:55:54 +0000
committerAlasdair Armstrong2018-11-23 18:27:31 +0000
commitea177d95766789b0500317f12fe0939d1508e19c (patch)
tree094ce6f42f23c8a526c8d75cf777d2eb400f0a8d /src/constant_fold.ml
parent01a6e9b8ad00728fdbf12a76cda24144a75ec552 (diff)
C backend improvements
- Propagate types more accurately to improve optimization on ANF representation. - Add a generic optimization pass to remove redundant variables that simply alias other variables. - Modify Sail interactive mode, so it can compile a specification with the :compile command, view generated intermediate representation via the :ir <function> command, and step-through the IR with :exec <exp> (although this is very incomplete) - Introduce a third bitvector representation, between fast fixed-precision bitvectors, and variable length large bitvectors. The bitvector types are now from most efficient to least * CT_fbits for fixed precision, 64-bit or less bitvectors * CT_sbits for 64-bit or less, variable length bitvectors * CT_lbits for arbitrary variable length bitvectors - Support for generating C code using CT_sbits is currently incomplete, it just exists in the intermediate representation right now. - Include ctyp in AV_C_fragment, so we don't have to recompute it
Diffstat (limited to 'src/constant_fold.ml')
-rw-r--r--src/constant_fold.ml1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/constant_fold.ml b/src/constant_fold.ml
index 407bd69a..f22b48de 100644
--- a/src/constant_fold.ml
+++ b/src/constant_fold.ml
@@ -100,6 +100,7 @@ let safe_primops =
"prerr_string";
"read_ram";
"write_ram";
+ "get_time_ns";
"Elf_loader.elf_entry";
"Elf_loader.elf_tohost"
]