From 399bb146cc0bb0c548cd0b50e51fb9aa29a7900c Mon Sep 17 00:00:00 2001 From: Dibyendu Majumdar Date: Mon, 15 Jan 2024 00:13:44 +0000 Subject: Implement break and continue (#55) * #52 Update chapter8 to align with chapter7 * #52 Update chapter8 to align with chapter7 * #52 Fix spacing * #51 get started on break and continue * #51 get started on break and continue * #51 more on break and continue * #51 more on break and continue * #51 more on break and continue * #51 more on break and continue * #51 more on break and continue * #51 more on break and continue * break & continue scopes are made lazily, and merged into as discovered Drop ContBreak. Drop ScopeNode.addScope. Add a simple mergeScopes. Simplify Region.inProgress; drop from child classes, use in Region. Add a ConstantNode.XCONTROL shortcut. * Fix some regressions * Error on dead code after break/continue * A more robust dead-def check * Fix for dead loop-back path * Fix scope shadowing bug with continue/break Turn on LAZY phis by default; fix minor golden test results * Fix a case with both break & continue * #51 more on break and continue * #51 more on break and continue * #51 more on break and continue * #51 fix erroneous push of scope * #51 fix import * #51 update test expected results * #51 Start Chapter8 writeup * #51 Start Chapter8 writeup * #51 _scope needs killing after continue * Add graph evaluator (#56) * #51 wip writeup * #51 wip writeup * #51 wip writeup * #51 wip writeup * #51 wip writeup * #51 update code comments / add assertion * #51 revert assertion * #51 evaluate graph to verify test outcome * #51 add code snippets * #51 add examples * Cleanup README Comment for usefullness of true Loops. Try to distiguish `PhiNode` as the programming construct from `phi` as the mathematically SSA notation. Flow long lines. Remove LAZY flag, set as `true`. Fold up true tests. * minor comment * #51 Check _breakScope is not null when parsing break or continue to detect use outside of loop * #51 in parseComparison we need to move the op= version above the op version, since at this time using <= and >= does not work since they are parsed as > and < with a preceeding = which causes an error * #51 Update main README to link to chapter 8 * Remove useless test --------- Co-authored-by: Cliff Click Co-authored-by: XmiliaH <45106915+XmiliaH@users.noreply.github.com> --- chapter08/docs/08-graph3.svg | 386 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 chapter08/docs/08-graph3.svg (limited to 'chapter08/docs/08-graph3.svg') diff --git a/chapter08/docs/08-graph3.svg b/chapter08/docs/08-graph3.svg new file mode 100644 index 00000000..12aafcc5 --- /dev/null +++ b/chapter08/docs/08-graph3.svg @@ -0,0 +1,386 @@ + + + + + + +chapter08 + + +cluster_Nodes + + + + +Start2 + + +Start + + + +$ctrl + +arg + + + +Stop3 + +Stop + + + +Return39 + +Return + + + +Stop3->Return39 + + +0 + + + +Loop6 + +Loop + + + +Loop6->Start2:p0 + + +1 + + + +If30 + + +If + + + +True + + +False + + + +Loop6->If30:p1 + + +2 + + + +Phi_arg8 + +φ_arg + + + +Phi_arg8->Start2:p1 + + +1 + + + +Phi_arg8->Loop6 + + +0 + + + +Add16 + ++ + + + +Con_9 + +10 + + + +LT10 + +< + + + +LT10->Phi_arg8 + + +1 + + + +LT10->Con_9 + + +2 + + + +If11 + + +If + + + +True + + +False + + + +If11->Loop6 + + +0 + + + +If11->LT10 + + +1 + + + +Con_15 + +1 + + + +Add16->Phi_arg8 + + + +1 + + + +Add16->Con_15 + + +2 + + + +Con_17 + +5 + + + +EQ18 + +== + + + +EQ18->Add16 + + +1 + + + +EQ18->Con_17 + + +2 + + + +If19 + + +If + + + +True + + +False + + + +If19->If11:p0 + + +0 + + + +If19->EQ18 + + +1 + + + +Region25 + +Region + + + +Region25->If11:p1 + + +1 + + + +Region25->If19:p0 + + +2 + + + +Phi_arg26 + +φ_arg + + + +Phi_arg26->Phi_arg8 + + +1 + + + +Phi_arg26->Add16 + + +2 + + + +Phi_arg26->Region25 + + +0 + + + +Con_28 + +6 + + + +EQ29 + +== + + + +EQ29->Add16 + + +1 + + + +EQ29->Con_28 + + +2 + + + +If30->If19:p1 + + +0 + + + +If30->EQ29 + + +1 + + + +Region36 + +Region + + + +Region36->Region25 + + +1 + + + +Region36->If30:p0 + + +2 + + + +Phi_arg37 + +φ_arg + + + +Phi_arg37->Add16 + + +2 + + + +Phi_arg37->Phi_arg26 + + +1 + + + +Phi_arg37->Region36 + + +0 + + + +Return39->Region36 + + +0 + + + +Return39->Phi_arg37 + + +1 + + + -- cgit v1.2.3