| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2017-07-14 | Generalise matching a little in monomorphisation | Brian Campbell | |
| 2017-07-13 | Avoid recent OCaml library function | Brian Campbell | |
| 2017-07-13 | Added some code to check if function return types in function clauses and ↵ | Alasdair Armstrong | |
| val specs are the same | |||
| 2017-07-13 | Monomorphisation size limits | Brian Campbell | |
| 2017-07-13 | Monomorphisation now splits vectors | Brian Campbell | |
| 2017-07-13 | Make new-tc monomorphisation actually work | Brian Campbell | |
| 2017-07-13 | Couple of fixes for old-tc monomorphisation | Brian Campbell | |
| 2017-07-13 | Add basic translation of monomorphisation to the new type checker | Brian Campbell | |
| 2017-07-13 | Typechecker now inserts val specs into AST when it infers them | Alasdair Armstrong | |
| 2017-07-13 | Modified MIPS model so it typechecks with the new typechecker | Alasdair Armstrong | |
| 2017-07-13 | Improved type inference for let statements and assignments with type ↵ | Alasdair Armstrong | |
| annotated patterns and lexps Added get_enum to type checker interface | |||
| 2017-07-12 | Various small changes | Alasdair Armstrong | |
| * Experimented with using list<bit> to clean up manually monomorphised code in MIPS tlb * Added option -dtc_verbose to control verbosity of new typechecker * Allowed functions with val specs to omit their type declarations | |||
| 2017-07-12 | Remove old interface file | Brian Campbell | |
| 2017-07-12 | Merge branch 'sail_new_tc' of https://bitbucket.org/Peter_Sewell/sail into ↵ | Alasdair Armstrong | |
| sail_new_tc | |||
| 2017-07-12 | Removed inital_check_full_ast | Alasdair Armstrong | |
| 2017-07-12 | Fixed parser to parse 2** nexp expressions properly | Alasdair Armstrong | |
| This introduces some shift/reduce and reduce/reduce conflicts, but I don't think these matter. | |||
| 2017-07-12 | Add annotations to raw bitvector slices | Thomas Bauereiss | |
| 2017-07-12 | Merge | Thomas Bauereiss | |
| 2017-07-12 | Add checks for variable identifiers in pattern subsumption | Thomas Bauereiss | |
| 2017-07-12 | Added vector range l-expressions and additional tests | Alasdair Armstrong | |
| 2017-07-11 | Merge branch 'sail_new_tc' of https://bitbucket.org/Peter_Sewell/sail into ↵ | Alasdair Armstrong | |
| sail_new_tc | |||
| 2017-07-11 | Various typechecker improvements: | Alasdair Armstrong | |
| * Fixed a bug where non-polymorphic function return types could be incorrect * Added support for LEXP_memory AST node * Flow typing constraint generation for all inequality operators * Better support for increasing vector indices in field access expressions | |||
| 2017-07-11 | Fix missing vector append constraints in old type checker | Brian Campbell | |
| 2017-07-10 | Bugfixes and testing new checker on the MIPS spec | Alasdair Armstrong | |
| 2017-07-10 | Added tests for union constructor matching | Alasdair Armstrong | |
| 2017-07-10 | Merge remote-tracking branch 'origin/word' into sail_new_tc | Alasdair Armstrong | |
| 2017-07-10 | Adder pattern matching for union types | Alasdair Armstrong | |
| 2017-07-10 | Further performance improvements to typechecker | Alasdair Armstrong | |
| Added code to solve basic constraints without passing them to Z3. This results in roughly another 5x speedup. | |||
| 2017-07-10 | Performance improvements to type checker | Alasdair Armstrong | |
| Filter the possible casts by only attempting those which reasonably match the surrounding type environment. This results in about a 5x performance improvement. | |||
| 2017-07-10 | Reduce functions during constant propagation under reasonable circumstances | Brian Campbell | |
| 2017-07-10 | Support some variable patterns in monomorphisation | Brian Campbell | |
| 2017-07-07 | Warn when we can't monomorphise a constructor application | Brian Campbell | |
| 2017-07-07 | Correct variable mapping when splitting constructor patterns for ↵ | Brian Campbell | |
| monomorphisation | |||
| 2017-07-07 | Implement basic monomorphisation of constructors | Brian Campbell | |
| 2017-07-06 | Testing new typechecker on MIPS spec | Alasdair Armstrong | |
| Also: - Added support for foreach loops - Started work on type unions - Flow typing can now generate constraints, in addition to restricting range-typed variables - Various bugfixes - Better unification for nexps with multiplication | |||
| 2017-07-05 | Fixed several unification bugs | Alasdair Armstrong | |
| 2017-07-05 | Added split_on_char as a utility function in Util.ml, and replaced usage in ↵ | Alasdair Armstrong | |
| sail.ml Current REMS install script and Jenkins CI server is on an older ocaml which doesn't have this function in String. | |||
| 2017-07-05 | Merge remote-tracking branch 'origin/word' into sail_new_tc | Alasdair Armstrong | |
| 2017-07-05 | Re-factored and cleaned up type-checker | Alasdair Armstrong | |
| 2017-07-04 | Added effect system to new type checker | Alasdair Armstrong | |
| 2017-07-04 | Added documentation to type_check_new.mli | Alasdair Armstrong | |
| 2017-07-03 | Cleanup, and add support for variable bindings in bitvector patterns | Thomas Bauereiss | |
| 2017-07-03 | Added records to checker | Alasdair Armstrong | |
| Added the following constructs to the new type checker: * Added records, and record field accessors * Added assert statements * Added nondet blocks * More simple flow typing tests | |||
| 2017-06-30 | Split bit patterns for monomorphisation, do equality checks | Brian Campbell | |
| (e.g., for some ARM decoding functions) | |||
| 2017-06-30 | Added flow types to new typechecker | Alasdair Armstrong | |
| Added preliminary support for flow types, so we can typecheck things like: default Order inc val forall Num 'n, Num 'm, Num 'o, Num 'p. ([|'n:'m|], [|'o:'p|]) -> [|'n+'o:'m+'p|] effect pure add_range val forall Num 'n, Num 'm, Num 'o, Num 'p. ([|'n:'m|], [|'o:'p|]) -> [|'n-'p:'m-'o|] effect pure sub_range val forall Num 'n, Num 'm, Num 'o. ([|'n:'m|], [:'o:]) -> bool effect pure lt_range_atom val forall Num 'n, Num 'm, Num 'o. ([:'n:], [|'m:'o|]) -> bool effect pure lt_atom_range overload (deinfix +) [add_range] overload (deinfix -) [sub_range] overload (deinfix <) [lt_atom_range; lt_range_atom] function ([|63|]) branch (([|63|]) x) = { y := x; if (y < 32) then { y := 31; y + 32 } else y - 32 } Currently how this works is that the if condition is lifted to a typ modifying function that applies to the type of the variables appearing in the condition provided it satisfies some ad-hoc conditions. As can be seen above, it does require that the initial environment for the typechecker is set up with the correct definitions | |||
| 2017-06-29 | Rewrite bitvector patterns | Thomas Bauereiss | |
| Seems to work for CHERI-MIPS, but still a few things to be done, e.g. collecting let bindings for variables bound in bitvector patterns | |||
| 2017-06-29 | Added a large test case to the test-suite | Alasdair Armstrong | |
| Commented out some buggy re-sugaring logic from pretty_print_common where it re-sugared vectors incorrectly Fixed a bug where the type checker forgot to preserve type signatures in top-level letbinds | |||
| 2017-06-29 | Created prelude.sail for initial typing environment | Alasdair Armstrong | |
| Other things: * Cleaned up several files a bit * Fixed a bug in the parser where (deinfix |) got parsed as (definfix ||) * Turned of the irritating auto-indent in sail-mode.el | |||
| 2017-06-29 | Propagate type information from reducing case expressions | Brian Campbell | |
| 2017-06-29 | Ocamlbuild targets should always be remade | Brian Campbell | |
