| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2020-04-21 | Save SMT cache when terminating with an exception | Thomas Bauereiss | |
| 2020-04-21 | Add more mono rewrites for bitvector subranges | Thomas Bauereiss | |
| 2020-04-21 | Rewrite vector concat lexps to sequences of assignments | Thomas Bauereiss | |
| ... instead of a tuple assignment. This makes the rewrite independent of the tuple assignment rewrite and allows it to be moved after the latter (nesting vector concat lexps into tuple lexps is an idiom in ASL, but the other way around doesn't make sense). | |||
| 2020-04-21 | Be more careful about type annotations in rewrites to Lem | Thomas Bauereiss | |
| In particular, don't add annotations for types with existentially quantified variables that only occur in constraints, not in the type, e.g. {'i1 'i2, 'i1 == div('i2, 8). int('i1)}. These seem to confuse the type checker when pulled out into the source AST. | |||
| 2020-04-10 | Check more types in monomorphisation rewrites | Thomas Bauereiss | |
| In the new version of the ASL-generated Sail, some vector operators are also overloaded for integers to match idioms of ASL (e.g. i[31:0], where i is an integer), so check in the monomorphisation rewrites that we use bitvector helper functions only for actual bitvectors. | |||
| 2020-04-10 | Allow empty Sail source files | Thomas Bauereiss | |
| ... instead of dying with "Syntax error". | |||
| 2020-04-10 | Add Lem builtins for operations on reals | Thomas Bauereiss | |
| ... that match the names in lib/real.sail. Also fix the lem mapping for abs_int_atom and a Lem syntax error with nested record updates. | |||
| 2020-04-10 | Make bounds check for vector subrange assignments stricter | Thomas Bauereiss | |
| Check that indices are within bounds, not just in the right (increasing/decreasing) order. | |||
| 2020-04-10 | Implement hex_str for Lem | Thomas Bauereiss | |
| 2020-04-10 | Be more careful when flow-typing loops | Thomas Bauereiss | |
| Asserting constraints from the loop condition in the body is fine for while-loops, but doesn't make sense for until-loops. | |||
| 2020-04-01 | Report SMT solver stderr on unexpected return code | Brian Campbell | |
| 2020-03-29 | Implement set_slice_int in the interpreter | Alasdair | |
| 2020-03-25 | Fix a typo in write_mem for the interpreter | Alasdair | |
| 2020-03-19 | Improve a particularly unhelpful type error | Alasdair | |
| From: No type variable 'ex14# to: Type error: [../and_let_bool.sail]:6:19-50 6 | and_bool(let y : bool = x in not_bool(y), x) | ^-----------------------------^ | The type variable 'ex14# would leak into an outer scope. | | Try adding a type annotation to this expression. | This error was caused by: | [../and_let_bool.sail]:6:23-24 | 6 | and_bool(let y : bool = x in not_bool(y), x) | | ^ | | Type variable 'ex14# was introduced here | | |||
| 2020-03-18 | Expose details of failed lexp bounds checks | Thomas Bauereiss | |
| Allows ASL-to-Sail translation to automatically patch lexp bounds check errors. | |||
| 2020-03-13 | SMT fixes for some corner cases of vector updates | Thomas Bauereiss | |
| 2020-03-02 | Fix jenkins | Alasdair Armstrong | |
| 2020-03-02 | Add arith_shiftr to SMT and interpreter | Thomas Bauereiss | |
| 2020-02-25 | Implement count_leading_zeros for interpreter | Thomas Bauereiss | |
| 2020-02-24 | Avoid generating assertions multiple times during typechecking | Thomas Bauereiss | |
| 2020-02-21 | Make sure we test that struct literals have a complete set of fields. Fixes #60 | Alasdair Armstrong | |
| 2020-02-21 | Distinguish type identifiers in topological sorting | Thomas Bauereiss | |
| Fixes #61 | |||
| 2020-02-21 | Fix bug in last patch to topological sorting (e5ee087f) | Thomas Bauereiss | |
| 2020-02-21 | SMT: Implement a few more primops | Thomas Bauereiss | |
| 2020-02-21 | Nl_flow: Consider early returns | Thomas Bauereiss | |
| Tells the typechecker that, for example, in a block after if (i < 0) then { return (); } else { ... } the constraint not(i < 0) holds. This is a useful pattern when type-checking code generated from ASL. | |||
| 2020-02-21 | Move topological sorting code to graph.ml | Thomas Bauereiss | |
| 2020-02-20 | More list C codegen fixes for issue #59 | Alasdair Armstrong | |
| 2020-02-20 | Fix missing code generation builtins for lists. Fixes #59 | Alasdair Armstrong | |
| Also uncovered a few other issues w.r.t lists | |||
| 2020-02-06 | Make sure tdiv_int and tmod_int are recognised by sail -i | Alasdair Armstrong | |
| 2020-01-31 | Fix soundness bug found by Mark | Alasdair | |
| When returning a type from a letbinding we need to be careful that the type it returns does not refer to any type variable that only exists for the lifetime of the letbinding (because it was bound by it). Normally this fails because any type variable bound in the inner letbinding won't exist in the outer scope, but if it is shadowed this can cause an issue. | |||
| 2020-01-30 | Make sure external pprint is listed as a dependency for sail when used as an ↵ | Alasdair Armstrong | |
| OCaml library | |||
| 2020-01-28 | Use external PPrint | Thomas Bauereiss | |
| 2020-01-28 | Fix a bug with lexp->exp conversion for register references | Alasdair | |
| 2020-01-22 | Preserve effect annotation when realising mappings | Thomas Bauereiss | |
| 2020-01-21 | Reduce the amount of unnecessary parentheses in Coq output | Brian Campbell | |
| 2020-01-21 | Use hex/bin literals in Coq backend | Brian Campbell | |
| Also be more careful to avoid pattern bindings with identifiers to avoid parsing clashes, eg `let 'bytes := ...` which is confused with the notation for binary literals. | |||
| 2020-01-17 | Merge scattered mapping fixes | James Clarke | |
| 2020-01-17 | Merge branch 'coq-bool-props' into sail2 | Brian Campbell | |
| 2020-01-17 | Keep track of source locations for all IR branches | Alasdair | |
| Useful for tracking down non-determinism | |||
| 2020-01-16 | Allow effects on mappings | Alasdair Armstrong | |
| 2020-01-16 | Cleanup type-checking rule for LEXP_field | Alasdair Armstrong | |
| Was being overly conservative with nested structs and used an incorrect location for the error message | |||
| 2020-01-16 | Keep track of (non-bit) vectors known to be fixed size in Jib | Alasdair Armstrong | |
| This is useful because an arbitrary vector of a fixed size N can be represented symbolically as a vector of N symbolic values, whereas an arbitrary vector of arbitrary size cannot be easily represented. | |||
| 2020-01-14 | Basic support to track uncaught exceptions in Sail->C | Alasdair | |
| 2020-01-10 | Don't do any C specific name mangling for the cons operator in jib_compile | Alasdair Armstrong | |
| Instead handle it specially in c_backend, leaving the type information in the IR available for other consumers | |||
| 2020-01-04 | Coq: change record field update notation to avoid duplicating terms | Brian Campbell | |
| (using match rather than let-and-projections because the latter would be reduced by tactics like unfold) | |||
| 2020-01-03 | Add Sail pretty-printing of bitfields | Thomas Bauereiss | |
| 2019-12-18 | Make sure we generate literals of precisely the right length for symbolic ↵ | Alasdair Armstrong | |
| execution | |||
| 2019-12-13 | move ott pp to different Makefile rule | Peter Sewell | |
| 2019-12-13 | experiment in ott-generated pp | Peter Sewell | |
| 2019-12-12 | Fix a little bit of inconsistency in the command line arguments | Alasdair Armstrong | |
