summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-07-20Handle guarded patterns in monomorphisationBrian Campbell
2017-07-19Better pretty printing for sail functions with no inline type annotationsAlasdair Armstrong
Also added some additional helper functions in type_check_new.mli and changed real literals slightly
2017-07-18Add Lem pretty-printer for new typecheckerThomas Bauereiss
2017-07-18Added pretty-printing support for real literalsAlasdair Armstrong
2017-07-18Added real number literals to sail, to better support full ASL translationAlasdair Armstrong
2017-07-17Added pattern guards to sailAlasdair Armstrong
Introduces a when keyword for case statements, as the Pat_when constructor for pexp's in the AST. This allows us to write things like: typedef T = const union { int C1; int C2 } function int test ((int) x, (T) y) = switch y { case (C1(z)) when z == 0 -> 0 case (C1(z)) when z != 0 -> x quot z case (C2(z)) -> z } this should make translation from ASL's patterns much more straightforward
2017-07-17Fix some corner casesThomas Bauereiss
2017-07-15Add version of rewriter for new typecheckerThomas Bauereiss
2017-07-14Extend literal matching in monomorphisationBrian Campbell
2017-07-14Generalise matching a little in monomorphisationBrian Campbell
2017-07-13Avoid recent OCaml library functionBrian Campbell
2017-07-13Added some code to check if function return types in function clauses and ↵Alasdair Armstrong
val specs are the same
2017-07-13Monomorphisation size limitsBrian Campbell
2017-07-13Monomorphisation now splits vectorsBrian Campbell
2017-07-13Make new-tc monomorphisation actually workBrian Campbell
2017-07-13Couple of fixes for old-tc monomorphisationBrian Campbell
2017-07-13Add basic translation of monomorphisation to the new type checkerBrian Campbell
2017-07-13Typechecker now inserts val specs into AST when it infers themAlasdair Armstrong
2017-07-13Modified MIPS model so it typechecks with the new typecheckerAlasdair Armstrong
2017-07-13Improved type inference for let statements and assignments with type ↵Alasdair Armstrong
annotated patterns and lexps Added get_enum to type checker interface
2017-07-12Various small changesAlasdair 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-12Remove old interface fileBrian Campbell
2017-07-12Merge branch 'sail_new_tc' of https://bitbucket.org/Peter_Sewell/sail into ↵Alasdair Armstrong
sail_new_tc
2017-07-12Removed inital_check_full_astAlasdair Armstrong
2017-07-12Fixed parser to parse 2** nexp expressions properlyAlasdair Armstrong
This introduces some shift/reduce and reduce/reduce conflicts, but I don't think these matter.
2017-07-12Add annotations to raw bitvector slicesThomas Bauereiss
2017-07-12MergeThomas Bauereiss
2017-07-12Add checks for variable identifiers in pattern subsumptionThomas Bauereiss
2017-07-12Added vector range l-expressions and additional testsAlasdair Armstrong
2017-07-11Merge branch 'sail_new_tc' of https://bitbucket.org/Peter_Sewell/sail into ↵Alasdair Armstrong
sail_new_tc
2017-07-11Various 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-11Fix missing vector append constraints in old type checkerBrian Campbell
2017-07-10Bugfixes and testing new checker on the MIPS specAlasdair Armstrong
2017-07-10Added tests for union constructor matchingAlasdair Armstrong
2017-07-10Merge remote-tracking branch 'origin/word' into sail_new_tcAlasdair Armstrong
2017-07-10Adder pattern matching for union typesAlasdair Armstrong
2017-07-10Further performance improvements to typecheckerAlasdair Armstrong
Added code to solve basic constraints without passing them to Z3. This results in roughly another 5x speedup.
2017-07-10Performance improvements to type checkerAlasdair 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-10Reduce functions during constant propagation under reasonable circumstancesBrian Campbell
2017-07-10Support some variable patterns in monomorphisationBrian Campbell
2017-07-07Warn when we can't monomorphise a constructor applicationBrian Campbell
2017-07-07Correct variable mapping when splitting constructor patterns for ↵Brian Campbell
monomorphisation
2017-07-07Implement basic monomorphisation of constructorsBrian Campbell
2017-07-06Testing new typechecker on MIPS specAlasdair 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-05Fixed several unification bugsAlasdair Armstrong
2017-07-05Added 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-05Merge remote-tracking branch 'origin/word' into sail_new_tcAlasdair Armstrong
2017-07-05Re-factored and cleaned up type-checkerAlasdair Armstrong
2017-07-04Added effect system to new type checkerAlasdair Armstrong
2017-07-04Added documentation to type_check_new.mliAlasdair Armstrong