Example 1:
if (v)
x = 0;
else
x = 1;
y += x;
where v is a dynamic variable.
stich (template1);
template1:
if (v)
x = 0;
else
x = 1;
y += x;
Example 2:
if (r)
x = 0;
else
x = 1;
y += x;
where r is a run-time constant
if (r)
x = 0;
else
x = 1;
stich (template1, x->rtconst1);
template1:
y += rtconst1;
+---------------+
| if (sym) |
+---------------+
/\
T / \ F
/ \
------- -------
( ( ( (
) ) ) )
( A ( ( B (
) ) ) )
------- -------
\ /
\ /
\ /
+---------------+
| |
+---------------+
x = constant; Add x to the set x = y op z; Add x only if y, z are in the set
{rtc:q}
+---------------+
| if (sym) |
+---------------+
/\ {rtc:q}
T / \ F
/ \
+-----+ +-----+
b:| x=0 | c:| x=1 |
+-----+ +-----+
{x:b,rtc:q} \ / {x:c,rtc:q}
\ /
\ /
+---------------+
d:| y =+ x |
+---------------+
{x:d,rtc:q}