| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 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-06 | Tests for (almost) all sail builtins. Many interesting things discovered. ↵ | Robert Norton | |
| Library in need of rationalisation. | |||
| 2017-07-06 | fix off by one in type of add_vec builtin function. There are many more ↵ | Robert Norton | |
| dubious types but will wait for library rationalisation to fix. | |||
| 2017-07-06 | fix interpreter version of get_min/max_representable which similarly broken ↵ | Robert Norton | |
| to ocaml version. TODO: also fix copies in sail_values.lem and sail_values_word.lem. | |||
| 2017-07-06 | fix interpreter lteq/gteq for range/vec. | Robert Norton | |
| 2017-07-06 | fix interpreter version of != which was broken for vector/range comparisons. | Robert Norton | |
| 2017-07-06 | substitute all uses of mod_big_int and div_big_int for Z.rem and Z.div which ↵ | Robert Norton | |
| have correct rounding behaviour. Missed these when changing quot and mod functions. | |||
| 2017-07-06 | implement abs function correctly for ocaml shallow embedding. | Robert Norton | |
| 2017-07-06 | fix dodgy get_min/max_representable functions. Looks like an attempt at ↵ | Robert Norton | |
| optimisation went wrong. | |||
| 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 | further testing of sail library. | Robert Norton | |
| 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-30 | add more tests for sail library. Can't compile entire file due to sail ↵ | Robert Norton | |
| performance bug or infinite loop. Add some missing shallow embedding funcitons. | |||
