summary refs log tree commit diff stats
path: root/compiler/dfa.nim
Commit message (Collapse)AuthorAgeFilesLines
* fixes #17198, DFA failure on large case stmts (#17210)Saem Ghani2021-03-021-3/+8
| | | | | | This alters the DFA control flow graph generation for case statments. Gotos are now generated as a chained link, this ensures that evaluation of variant branches collapses as early as possible, without hitting the 2k call limit.
* add -d:nimStrictMode in CI to keep code from regressing; fixes ↵Timothee Cour2021-02-171-2/+0
| | | | ConvFromXtoItselfNotNeeded, UnusedImport notes (#16764)
* ARC Analysis in one pass v3 (#17068)Clyybber2021-02-171-14/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Analyse last reads all at once * Integrate firstWrite analysis * Small cleanup * Use sets instead of seqs * Remove instrTargets * Reap the benefits * Implement error diagnostics * Operate on DFA index for lastRead analysis * Use mgetOrPut * Cache alias results This improves performance by a lot, since many CFG locations map to a single PNode * Improve performance * Improve performance * Cleanup * Fix #17025 * Grammar * Expand testcase
* Revert "ARC: Analysis in one pass v2 (#17000)" (#17046)Clyybber2021-02-151-3/+14
| | | This reverts commit 216be4060a853b3425501318537d598c4842eefc.
* ARC: Analysis in one pass v2 (#17000)Clyybber2021-02-101-14/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Analyse last reads all at once * Integrate firstWrite analysis * Small cleanup * Use sets instead of seqs * Remove instrTargets * Reap the benefits * Implement error diagnostics * Operate on DFA index for lastRead analysis * Use mgetOrPut * Cache alias results This improves performance by a lot, since many CFG locations map to a single PNode * Improve performance * Improve performance * Cleanup
* Revert "ARC Analysis in one pass (#16849)" (#16984)Clyybber2021-02-091-3/+14
| | | This reverts commit ab740cb5b9bfbacece26956fa2444763a790ccd1.
* ARC Analysis in one pass (#16849)Clyybber2021-02-091-14/+3
| | | | | | | | | | | | | | | | | | | * Analyse last reads all at once * Integrate firstWrite analysis * Small cleanup * Use sets instead of seqs * Remove instrTargets * Reap the benefits * Implement error diagnostics * Operate on DFA index for lastRead analysis * Use mgetOrPut
* Finer analysis for array access (#16787)Clyybber2021-01-241-27/+73
| | | | | * Refine the analysis for array access * Cleanup * Add comments
* move asciitables to std/private/ (#16498)flywind2020-12-291-1/+2
| | | | | * move asciitables * minor
* 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
|