llvm-project/clang/docs/DataFlowAnalysisIntroImages/IntegerSetsFiniteLattice.svg
Dmitri Gribenko ab31d003e1 [clang][docs][dataflow] Added an introduction to dataflow analysis
This documentation supports the dataflow analysis framework (see "[RFC]
A dataflow analysis framework for Clang AST" on cfe-dev).

Since the implementation of the framework has not been committed yet,
right now the doc describes dataflow analysis in general.

Since this is the first markdown document in clang/docs, I added support
for Markdown to clang/docs/conf.py in the same way as it is done in
llvm/docs.

Reviewed By: xazax.hun

Differential Revision: https://reviews.llvm.org/D114231
2021-12-06 12:16:35 +01:00

404 lines
18 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg8"
version="1.1"
viewBox="0 0 170 110"
height="110mm"
width="170mm">
<defs
id="defs2" />
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<text
id="text1921"
y="105.83334"
x="89.958336"
style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;word-spacing:0px;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.93889px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="105.83334"
x="89.958336"
id="tspan1919"
sodipodi:role="line">⊥ = {}</tspan></text>
<text
id="text1925"
y="76.729172"
x="4.0951862"
style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.93889px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="76.729172"
x="4.0951862"
id="tspan1923"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="27.907686"
y="76.729172"
id="text1925-6"><tspan
sodipodi:role="line"
id="tspan1923-9"
x="27.907686"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="16.001438"
y="76.729172"
id="text1925-7"><tspan
sodipodi:role="line"
id="tspan1923-8"
x="16.001438"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{9}</tspan></text>
<text
id="text1925-7-7"
y="76.729172"
x="39.813934"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="76.729172"
x="39.813934"
id="tspan1923-8-1"
sodipodi:role="line">{5}</tspan></text>
<text
id="text1925-6-4"
y="76.729172"
x="51.720184"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="76.729172"
x="51.720184"
id="tspan1923-9-4"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="63.626438"
y="76.729172"
id="text1925-7-7-6"><tspan
sodipodi:role="line"
id="tspan1923-8-1-9"
x="63.626438"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{3}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="79.501442"
y="76.729172"
id="text1925-7-7-67"><tspan
sodipodi:role="line"
id="tspan1923-8-1-8"
x="79.501442"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{2}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="95.37645"
y="76.729172"
id="text1925-7-7-9"><tspan
sodipodi:role="line"
id="tspan1923-8-1-1"
x="95.37645"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{1}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="109.92851"
y="76.729172"
id="text1925-7-7-7"><tspan
sodipodi:role="line"
id="tspan1923-8-1-0"
x="109.92851"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{0}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="123.15768"
y="76.729172"
id="text1925-7-7-3"><tspan
sodipodi:role="line"
id="tspan1923-8-1-6"
x="123.15768"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{1}</tspan></text>
<text
id="text1925-7-7-3-3"
y="76.729172"
x="136.38686"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="76.729172"
x="136.38686"
id="tspan1923-8-1-6-8"
sodipodi:role="line">{2}</tspan></text>
<text
id="text1925-7-7-3-31"
y="76.729172"
x="149.61603"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="76.729172"
x="149.61603"
id="tspan1923-8-1-6-5"
sodipodi:role="line">{3}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="160.19936"
y="76.729172"
id="text1925-6-4-0"><tspan
sodipodi:role="line"
id="tspan1923-9-4-8"
x="160.19936"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<path
sodipodi:nodetypes="cc"
id="path2089"
d="M 16.001436,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2091"
d="M 39.813936,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2093"
d="M 63.626436,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2095"
d="M 79.501436,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2097"
d="m 95.376433,78.052083 -5.29166,22.489577"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2099"
d="M 109.92852,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2101"
d="M 123.15768,78.052083 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path2121"
d="M 136.38685,78.052082 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path2123"
d="M 149.61601,78.052082 90.084773,100.54166"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="9.3868532"
y="50.270832"
id="text1925-62"><tspan
sodipodi:role="line"
id="tspan1923-98"
x="9.3868532"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<text
id="text1925-6-6"
y="50.270832"
x="53.043102"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="50.270832"
x="53.043102"
id="tspan1923-9-0"
sodipodi:role="line"></tspan></text>
<text
id="text1925-7-6"
y="50.270832"
x="29.230604"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="50.270832"
x="29.230604"
id="tspan1923-8-18"
sodipodi:role="line">{9, 5}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="79.501442"
y="50.270832"
id="text1925-7-7-31"><tspan
sodipodi:role="line"
id="tspan1923-8-1-87"
x="79.501442"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{3, 1}</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="108.60561"
y="50.270832"
id="text1925-6-4-5"><tspan
sodipodi:role="line"
id="tspan1923-9-4-85"
x="108.60561"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<text
id="text1925-7-7-6-0"
y="50.270832"
x="129.77228"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="50.270832"
x="129.77228"
id="tspan1923-8-1-9-0"
sodipodi:role="line">{1, 2}</tspan></text>
<text
id="text1925-6-4-5-3"
y="50.270832"
x="149.61603"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="50.270832"
x="149.61603"
id="tspan1923-9-4-85-4"
sodipodi:role="line"></tspan></text>
<path
id="path2191"
d="M 16.001436,71.437499 29.230603,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path2193"
d="M 39.813936,71.437499 29.230603,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path2195"
d="M 63.626435,71.437499 79.501436,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path2197"
d="M 95.376433,71.437499 79.501436,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path2199"
d="M 124.4806,71.437499 129.77227,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path2201"
d="M 135.06393,71.437499 129.77227,51.59375"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 129.77226,44.979165 128.44935,25.135416"
id="path2201-1" />
<text
xml:space="preserve"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="128.44936"
y="23.812502"
id="text1925-7-7-6-0-2"><tspan
sodipodi:role="line"
id="tspan1923-8-1-9-0-9"
x="128.44936"
y="23.812502"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{1, 2, 3}</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 149.61601,71.437499 128.44935,25.135416"
id="path205" />
<text
id="text1925-6-4-5-0"
y="23.812502"
x="112.57436"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="23.812502"
x="112.57436"
id="tspan1923-9-4-85-5"
sodipodi:role="line"></tspan></text>
<text
id="text1925-6-4-5-7"
y="23.812502"
x="143.00143"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="23.812502"
x="143.00143"
id="tspan1923-9-4-85-0"
sodipodi:role="line"></tspan></text>
<text
id="text1925-7-7-6-0-2-0"
y="6.6145835"
x="90.084763"
style="font-size:4.9389px;line-height:1.25;font-family:sans-serif;text-align:center;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="6.6145835"
x="90.084763"
id="tspan1923-8-1-9-0-9-0"
sodipodi:role="line"> = </tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 90.084773,7.9374993 128.44935,18.520833"
id="path253" />
<path
id="path253-2"
d="M 90.084773,7.9375003 108.6056,44.979166"
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path253-8"
d="M 90.084773,7.9375003 79.501436,44.979166"
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path253-6"
d="M 90.084773,7.9375003 53.043103,44.979166"
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
id="path253-4"
d="M 90.084773,7.9375003 29.230603,44.979166"
style="fill:none;stroke:#000000;stroke-width:0.26499901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:nodetypes="cc" />
</g>
</svg>