summary refs log tree commit diff stats
path: root/compiler/dfa.nim
Commit message (Collapse)AuthorAgeFilesLines
* fixes #15130 (#15141)Andreas Rumpf2020-08-011-1/+1
| | | | | * fixes #15130 * you really have to copy from cursors
* fixes #15111 (#15136)Andreas Rumpf2020-08-011-2/+2
|
* injectdestructors fixes and refactor (#14964)Clyybber2020-07-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * injectdestructors fixes and refactor * Tiny cleanup * Refactor and expand testcase * Closes #14902 by adding testcase * Better naming * Fix test failures * Misc cleanup * Add testcase for #14968 * Better approach; expand testcases * Optimizations and fixes * Add testcase * typo * Tiny cleanup
* DFA and injectdestructors cleanup (#14824)Clyybber2020-06-281-135/+92
| | | | | | | | | | | | | | | * DFA and injectdestructors cleanup * More precise write analysis * Cleanup obsoleted path * Unify defInstrTargets and useInstrTargets * Misc cleanups * Nicer CFG printing * Misc cleanups 2
* init checks and 'out' parameters (#14521)Andreas Rumpf2020-06-231-4/+2
| | | | | | | | | | | * I don't care about observable stores * enforce explicit initializations * cleaner code for the stdlib * stdlib: use explicit initializations * make tests green * algorithm.nim: set result explicitly * remove out parameters and bring the PR into a mergable state * updated the changelog
* more checking for --gc:arc, no need for valgrind (#14467)Andreas Rumpf2020-05-291-1/+4
| | | | * sigmatch: removed dead code
* New "ping-pong" DFA (#14322)Clyybber2020-05-151-41/+22
| | | | | | | | | | | | | | | | | * New ping-pong analysis * Add testcase for #13456 * Remove debugging leftover * Unquote "unstructured controlflow" * Fix typo * Fix exponential complexity in edge cases * Add sanity testcase * Fix
* Fix #14269 (#14286)Clyybber2020-05-091-1/+2
|
* Fix the DFA for "unstructured controlflow" (#14263)Clyybber2020-05-071-74/+115
| | | | | * Fix the DFA for "unstructured controlflow" * Add testcase from #14233
* destructors: don't produce stupid code for 'cast' (#14208) [backport:1.2]Andreas Rumpf2020-05-041-2/+2
| | | | | * destructors: don't produce stupid code for 'cast' * fixes #14207
* fixes #14159 [backport:1.2]Araq2020-05-021-1/+3
|
* Deprecate when declared(echo):echo (#13840)Juan Carlos2020-04-021-2/+1
|
* sink parameter inference for types that have destructors (#13544)Andreas Rumpf2020-03-041-0/+2
| | | | | | | | | | | | | | * ensure capitalize doesn't take an inferred sink parameter * sink parameter inference: first version, for now disabled. Changed that sink parameters can be consumed multiple times in order to adhere to our spec. * sink inference can now be disabled with .nosinks; sometimes for proc type interop this is required * fixes yet another critical DFA bug * better implementation that also understands if expressions etc * document sink parameter inference and allow for global disabling
* fixes #13314 (#13372)Andreas Rumpf2020-02-091-4/+9
|
* Cleanup DFA (#13173)Clyybber2020-01-161-34/+14
|
* ARC: misc bugfixes (#13156)Andreas Rumpf2020-01-151-2/+8
| | | | | | | | * fixes #13102 * closes #13149 * ARC: fixes a move optimizer bug (there are more left regarding array and tuple indexing) * proper fix; fixes #12957 * fixes yet another case object '=' code generation problem
* minor refactoringsAndreas Rumpf2019-12-271-9/+1
|
* fixes #12669Araq2019-11-291-11/+26
|
* Cosmetic compiler cleanup (#12718)Clyybber2019-11-281-44/+43
| | | | | | | | | | | | | | | | | | * Cleanup compiler code base * Unify add calls * Unify len invocations * Unify range operators * Fix oversight * Remove {.procvar.} pragma * initCandidate -> newCandidate where reasonable * Unify safeLen calls
* Fix spellings (#12277) [backport]Federico Ceratto2019-09-271-1/+1
|
* fix #12037 (#12089)Clyybber2019-08-301-14/+3
|
* [refactoring] remove unused imports in the compiler and in some stdlib modulesAraq2019-07-181-1/+1
|
* there is only one style -- my styleAraq2019-07-101-29/+29
|
* control flow graph: don't ignore yield statementsAraq2019-07-091-1/+1
|
* fixes #11633Andreas Rumpf2019-07-011-1/+1
|
* increase dfa instruction limit (#11579)cooldome2019-06-241-2/+2
|
* [bugfix] owned closures (#11544)Andreas Rumpf2019-06-201-2/+16
|
* fixes #10963, disallow implicit mixing of strings and ints/floats (#11292)Miran2019-05-211-1/+1
|
* Replace countup(x, y-1) with x ..< yClyybber2019-05-071-1/+1
|
* move analyser: fixes another critical bugAraq2019-04-291-1/+1
|
* make twidgets example green (#11135)Andreas Rumpf2019-04-281-3/+9
|
* fixes #11095 (#11104)Andreas Rumpf2019-04-251-11/+28
| | | * fixes #11095
* added a note about what to not doAndreas Rumpf2019-04-191-0/+10
|
* move analyser is smarter; refs #11053Andreas Rumpf2019-04-191-1/+4
|
* DFA: We are not allowed to take ownership of parametersAraq2019-04-171-1/+2
|
* make move-analysis smarter; see tuse_ownedref_after_move test caseAraq2019-04-161-8/+30
|
* dfa.nim: track object/tuple field accesses more precisely; sink(o.x); ↵Araq2019-04-161-17/+56
| | | | sink(o.y) needs to compile; activate the tuple unpacking transf.nim bugfix
* compute sinks/assignments properly for for-loop iteration variablesAraq2019-04-081-1/+1
|
* more destructor based changes (#10885)Andreas Rumpf2019-03-231-1/+1
| | | | | | | | | | | * mark user defined destructors with sfOverriden to simplify the logic * refactoring in preparation to merge liftings and generic instantiations for destructors * ast: introduce nkHiddenTryStmt for destructor generation in order to be able to optimize better the code later on * renamed 'patterns' switch to 'trmacros' as it was totally misleading before * destructors: introduce tfCheckedForDestructor flag in preparation of strict =destroy checking * test for invalid/too late destructor introductions * liftdestructors: make code robust for nimsuggest * --newruntime works for hello world again * newruntime: code generation for closures
* explicit default values for a leaner codegen, .cursor variables for optimizationAndreas Rumpf2019-03-071-39/+0
|
* dfa.nim: continues are badAndreas Rumpf2019-03-061-2/+3
|
* introduce tfHasOwned for fast must-move checkings; removed tfAcyclic as the ↵Andreas Rumpf2019-03-051-1/+1
| | | | GC has ignored this hint for quite some time now
* DFA: fixes wrong 'def' instruction emissionAndreas Rumpf2019-03-051-5/+6
|
* destructors/dfa: more documentationAndreas Rumpf2019-03-041-3/+5
|
* isLastRead regression fix (#10463)cooldome2019-01-281-6/+9
| | | | | | * fixes #10462 * add a test
* control flow graphs: introduce 'join' points for easy analyses based on ↵Andreas Rumpf2019-01-231-152/+391
| | | | abstract interpretation
* improve vmgen.codeListing formatting (#10306)Timothee Cour2019-01-151-1/+1
| | | | | * improve vmgen.codeListing formatting * address comments
* use control flow graph for sink paramsAndrii Riabushenko2018-12-091-1/+1
|
* destructors; fixes #9594Araq2018-11-021-2/+12
|
* DFA: implement exception handling properlyAndreas Rumpf2018-10-141-2/+20
|