diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-07-15 23:00:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-15 23:00:06 +0200 |
commit | c5358b0d4b1d27db04b974a0183c9b7312bc7bdc (patch) | |
tree | ca3a71953358c8f9475188045ba61c5dfb5caf87 /tests/arc/topt_cursor.nim | |
parent | 813dd1b670b953b0ac8348b04079faadace46c29 (diff) | |
download | Nim-c5358b0d4b1d27db04b974a0183c9b7312bc7bdc.tar.gz |
An optimizer for ARC (#14962)
* WIP: an optimizer for ARC * do not optimize away destructors in 'finally' if unstructured control flow is involved * optimized the optimizer * minor code cleanup * first steps to .cursor inference * cursor inference: big steps to a working solution * baby steps * better .cursor inference * new feature: expandArc for easy inspection of the AST after ARC transformations * added topt_cursor test * adapt tests * cleanups, make tests green * optimize common traversal patterns * moved test case * fixes .cursor inference so that npeg compiles once again * cursor inference: more bugfixes Co-authored-by: Clyybber <darkmine956@gmail.com>
Diffstat (limited to 'tests/arc/topt_cursor.nim')
-rw-r--r-- | tests/arc/topt_cursor.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/arc/topt_cursor.nim b/tests/arc/topt_cursor.nim new file mode 100644 index 000000000..6b923cf76 --- /dev/null +++ b/tests/arc/topt_cursor.nim @@ -0,0 +1,35 @@ +discard """ + output: '''("string here", 80)''' + cmd: '''nim c --gc:arc --expandArc:main --hint:Performance:off $file''' + nimout: '''--expandArc: main + +var + :tmpD + :tmpD_1 + :tmpD_2 +try: + var x = ("hi", 5) + x = if cond: + :tmpD = ("different", 54) + :tmpD else: + :tmpD_1 = ("string here", 80) + :tmpD_1 + echo [ + :tmpD_2 = `$`(x) + :tmpD_2] +finally: + `=destroy`(:tmpD_2) +-- end of expandArc ------------------------''' +""" + +proc main(cond: bool) = + var x = ("hi", 5) # goal: computed as cursor + + x = if cond: + ("different", 54) + else: + ("string here", 80) + + echo x + +main(false) |