







Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An overview of structural analysis, a more refined form of interval analysis used in control flow for software verification. Topics covered include t1-t2 analysis, structural analysis, reaching definitions, and constant folding.
Typology: Slides
1 / 13
This page cannot be seen from the preview
Don't miss anything!








T1 transformation collapses one node self loop to a node T2 transformation collapses sequence of two nodes into one if the second node has only one predecessor
An acyclic region that does not fit any of the simple categories and so is identified as a proper interval
Structural Analysis of a flow graph
Control tree of the flow graph analyzed in the previous slide
access X –pointer *q = y
gen(S) = {d} kill(S) = Da - {d} out(S) = gen(S) S in(S) - kill(S)
gen(S) = gen(S2) S gen(S1) - kill(S2) kill(S) = kill(S2) S kill(S1) - gen(S2) in(S1) = in(S) in(S2) = out(S1) out(S) = out(S2)
gen(S) = gen(S1) S gen(S2) kill(S) = kill(S1) T kill(S2) out(S) = out(S1) S out(S2)
A definition d reaches end of a block iff either
It is generated in the block It reaches block and not killed
Kill & gen known for each block. A program with N blocks has 2N equations with 2N unknowns and therefore, solution is possible.
Use iterative forward bit vector approach
for each block B do in(B) = ; out(B) = gen(B) endfor; change = true; while change do change = false; for each block B do newin = S out(P) if newin 6= in(B) then { change = true; in(B) = newin; out(B) = in(B) - kill(B) S gen(B); } endfor endwhile