llvm-project/clang/docs/DataFlowAnalysisIntroImages/IntegerSetsInfiniteLattice.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 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"
width="170mm"
height="110mm"
viewBox="0 0 170 110"
version="1.1"
id="svg8">
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;word-spacing:0px;stroke-width:0.264583"
x="89.958336"
y="105.83334"
id="text1921"><tspan
sodipodi:role="line"
id="tspan1919"
x="89.958336"
y="105.83334"
style="font-size:4.93889px;text-align:center;text-anchor:middle;stroke-width:0.264583">⊥ = {}</tspan></text>
<text
xml:space="preserve"
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"
x="4.0951862"
y="76.729172"
id="text1925"><tspan
sodipodi:role="line"
id="tspan1923"
x="4.0951862"
y="76.729172"
style="font-size:4.93889px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<text
id="text1925-6"
y="76.729172"
x="27.907686"
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="27.907686"
id="tspan1923-9"
sodipodi:role="line"></tspan></text>
<text
id="text1925-7"
y="76.729172"
x="16.001438"
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="16.001438"
id="tspan1923-8"
sodipodi:role="line">{9}</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="39.813934"
y="76.729172"
id="text1925-7-7"><tspan
sodipodi:role="line"
id="tspan1923-8-1"
x="39.813934"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{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="51.720184"
y="76.729172"
id="text1925-6-4"><tspan
sodipodi:role="line"
id="tspan1923-9-4"
x="51.720184"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<text
id="text1925-7-7-6"
y="76.729172"
x="63.626438"
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="63.626438"
id="tspan1923-8-1-9"
sodipodi:role="line">{3}</tspan></text>
<text
id="text1925-7-7-67"
y="76.729172"
x="79.501442"
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="79.501442"
id="tspan1923-8-1-8"
sodipodi:role="line">{2}</tspan></text>
<text
id="text1925-7-7-9"
y="76.729172"
x="95.37645"
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="95.37645"
id="tspan1923-8-1-1"
sodipodi:role="line">{1}</tspan></text>
<text
id="text1925-7-7-7"
y="76.729172"
x="109.92851"
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="109.92851"
id="tspan1923-8-1-0"
sodipodi:role="line">{0}</tspan></text>
<text
id="text1925-7-7-3"
y="76.729172"
x="123.15768"
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="123.15768"
id="tspan1923-8-1-6"
sodipodi:role="line">{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="136.38686"
y="76.729172"
id="text1925-7-7-3-3"><tspan
sodipodi:role="line"
id="tspan1923-8-1-6-8"
x="136.38686"
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="149.61603"
y="76.729172"
id="text1925-7-7-3-31"><tspan
sodipodi:role="line"
id="tspan1923-8-1-6-5"
x="149.61603"
y="76.729172"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{3}</tspan></text>
<text
id="text1925-6-4-0"
y="76.729172"
x="160.19936"
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="160.19936"
id="tspan1923-9-4-8"
sodipodi:role="line"></tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 16.001436,78.052083 90.084773,100.54166"
id="path2089"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 39.813936,78.052083 90.084773,100.54166"
id="path2091"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 63.626436,78.052083 90.084773,100.54166"
id="path2093"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 79.501436,78.052083 90.084773,100.54166"
id="path2095"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 95.376433,78.052083 -5.29166,22.489577"
id="path2097"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 109.92852,78.052083 90.084773,100.54166"
id="path2099"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 123.15768,78.052083 90.084773,100.54166"
id="path2101"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 136.38685,78.052082 90.084773,100.54166"
id="path2121" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 149.61601,78.052082 90.084773,100.54166"
id="path2123" />
<text
id="text1925-62"
y="50.270832"
x="9.3868532"
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="9.3868532"
id="tspan1923-98"
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="53.043102"
y="50.270832"
id="text1925-6-6"><tspan
sodipodi:role="line"
id="tspan1923-9-0"
x="53.043102"
y="50.270832"
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="29.230604"
y="50.270832"
id="text1925-7-6"><tspan
sodipodi:role="line"
id="tspan1923-8-18"
x="29.230604"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{9, 5}</tspan></text>
<text
id="text1925-7-7-31"
y="50.270832"
x="79.501442"
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="79.501442"
id="tspan1923-8-1-87"
sodipodi:role="line">{3, 1}</tspan></text>
<text
id="text1925-6-4-5"
y="50.270832"
x="108.60561"
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="108.60561"
id="tspan1923-9-4-85"
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="129.77228"
y="50.270832"
id="text1925-7-7-6-0"><tspan
sodipodi:role="line"
id="tspan1923-8-1-9-0"
x="129.77228"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">{1, 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="149.61603"
y="50.270832"
id="text1925-6-4-5-3"><tspan
sodipodi:role="line"
id="tspan1923-9-4-85-4"
x="149.61603"
y="50.270832"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583"></tspan></text>
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 16.001436,71.437499 29.230603,51.59375"
id="path2191" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 39.813936,71.437499 29.230603,51.59375"
id="path2193" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 63.626435,71.437499 79.501436,51.59375"
id="path2195" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 95.376433,71.437499 79.501436,51.59375"
id="path2197" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 124.4806,71.437499 129.77227,51.59375"
id="path2199" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 135.06393,71.437499 129.77227,51.59375"
id="path2201" />
<path
id="path2201-1"
d="M 129.77226,44.979165 128.44935,25.135416"
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<text
id="text1925-7-7-6-0-2"
y="23.812502"
x="128.44936"
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="128.44936"
id="tspan1923-8-1-9-0-9"
sodipodi:role="line">{1, 2, 3}</tspan></text>
<path
id="path205"
d="M 149.61601,71.437499 128.44935,25.135416"
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="112.57436"
y="23.812502"
id="text1925-6-4-5-0"><tspan
sodipodi:role="line"
id="tspan1923-9-4-85-5"
x="112.57436"
y="23.812502"
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="143.00143"
y="23.812502"
id="text1925-6-4-5-7"><tspan
sodipodi:role="line"
id="tspan1923-9-4-85-0"
x="143.00143"
y="23.812502"
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="90.084763"
y="6.6145835"
id="text1925-7-7-6-0-2-0"><tspan
sodipodi:role="line"
id="tspan1923-8-1-9-0-9-0"
x="90.084763"
y="6.6145835"
style="font-size:4.9389px;text-align:center;text-anchor:middle;stroke-width:0.264583">(goes up infinitely)</tspan></text>
<path
id="path253"
d="M 90.084773,7.9374993 128.44935,18.520833"
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.12, 2.12;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.12, 2.12;stroke-dashoffset:0;stroke-opacity:1"
d="M 90.084773,7.9375003 108.6056,44.979166"
id="path253-2" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.12, 2.12;stroke-dashoffset:0;stroke-opacity:1"
d="M 90.084773,7.9375003 79.501436,44.979166"
id="path253-8" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.12, 2.12;stroke-dashoffset:0;stroke-opacity:1"
d="M 90.084773,7.9375003 53.043103,44.979166"
id="path253-6" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.12, 2.12;stroke-dashoffset:0;stroke-opacity:1"
d="M 90.084773,7.9375003 29.230603,44.979166"
id="path253-4" />
</g>
</svg>