Pseudocode: Generate merge instruction regardless of number of branches
This commit is contained in:
@@ -70,20 +70,22 @@ L9:
|
||||
r(a) -> <v21>
|
||||
jf(L10|<v21>) NEXT:[read (Unit), r(11) -> <v22>]
|
||||
r(11) -> <v22>
|
||||
jmp(L11) NEXT:[r(12) -> <v23>]
|
||||
jmp(L11) NEXT:[merge(if (a) 11|<v22>) -> <v23>]
|
||||
L10:
|
||||
read (Unit) PREV:[jf(L10|<v21>)]
|
||||
L11:
|
||||
r(12) -> <v23> PREV:[jmp(L11), read (Unit)]
|
||||
merge(if (a) 11|<v22>) -> <v23> PREV:[jmp(L11), read (Unit)]
|
||||
r(12) -> <v24>
|
||||
mark(if (a) else 13)
|
||||
r(a) -> <v24>
|
||||
jf(L12|<v24>) NEXT:[r(13) -> <v25>, read (Unit)]
|
||||
r(a) -> <v25>
|
||||
jf(L12|<v25>) NEXT:[r(13) -> <v26>, read (Unit)]
|
||||
read (Unit)
|
||||
jmp(L13) NEXT:[r(14) -> <v26>]
|
||||
jmp(L13) NEXT:[merge(if (a) else 13|<v26>) -> <v27>]
|
||||
L12:
|
||||
r(13) -> <v25> PREV:[jf(L12|<v24>)]
|
||||
r(13) -> <v26> PREV:[jf(L12|<v25>)]
|
||||
L13:
|
||||
r(14) -> <v26> PREV:[jmp(L13), r(13) -> <v25>]
|
||||
merge(if (a) else 13|<v26>) -> <v27> PREV:[jmp(L13), r(13) -> <v26>]
|
||||
r(14) -> <v28>
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
|
||||
@@ -42,11 +42,11 @@ if (a || b) 8 else 9
|
||||
10 <v20>: * NEW: r(10) -> <v20>
|
||||
a <v21>: Boolean NEW: r(a) -> <v21>
|
||||
11 <v22>: * NEW: r(11) -> <v22>
|
||||
if (a) 11 <v22>: * COPY
|
||||
12 <v23>: * NEW: r(12) -> <v23>
|
||||
a <v24>: Boolean NEW: r(a) -> <v24>
|
||||
13 <v25>: * NEW: r(13) -> <v25>
|
||||
if (a) else 13 <v25>: * COPY
|
||||
14 <v26>: * NEW: r(14) -> <v26>
|
||||
{ if (a) { 1 } else { 2 } 3 if (a && b) 5 else 6 7 if (a || b) 8 else 9 10 if (a) 11 12 if (a) else 13 14 } <v26>: * COPY
|
||||
if (a) 11 <v23>: * NEW: merge(if (a) 11|<v22>) -> <v23>
|
||||
12 <v24>: * NEW: r(12) -> <v24>
|
||||
a <v25>: Boolean NEW: r(a) -> <v25>
|
||||
13 <v26>: * NEW: r(13) -> <v26>
|
||||
if (a) else 13 <v27>: * NEW: merge(if (a) else 13|<v26>) -> <v27>
|
||||
14 <v28>: * NEW: r(14) -> <v28>
|
||||
{ if (a) { 1 } else { 2 } 3 if (a && b) 5 else 6 7 if (a || b) 8 else 9 10 if (a) 11 12 if (a) else 13 14 } <v28>: * COPY
|
||||
=====================
|
||||
|
||||
Reference in New Issue
Block a user