<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1988436947;
        mso-list-type:hybrid;
        mso-list-template-ids:-338762504 -825431104 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal><span style='color:#1F497D'>One thing that helps me
understand complex software is a dependency graph. I found an LLVM dependency graph
at <o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><a
href="https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_16/docs/UsingLibraries.html#dependencies">https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_16/docs/UsingLibraries.html#dependencies</a><o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>but it’s really messy and hard
to follow. From that graph I made a cleaner graph by hand (attached)... sorry
about the fax-quality scan. But I have some questions about it...<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='color:#1F497D'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>         
</span></span></span><![endif]><span style='color:#1F497D'>How old is this
graph?<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='color:#1F497D'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>         
</span></span></span><![endif]><span style='color:#1F497D'>Is anything missing?
(e.g. only SPARC stuff is present, I guess x86 et al would have similar
dependencies?)<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='color:#1F497D'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>         
</span></span></span><![endif]><span style='color:#1F497D'>The web page says "Where
a library has both archive and object forms, only the archive form is shown."
Are "archive library" and "object library" the names Unix uses
for dynamic link libraries and static libraries? What difference does it make
to the dependency graph whether a library is "archive" or "object"?<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> David Piepgrass <br>
<b>Sent:</b> Wednesday, July 21, 2010 4:16 PM<br>
<b>To:</b> 'llvmdev@cs.uiuc.edu'<br>
<b>Subject:</b> Is there a guide to LLVM's components?<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>I constructed an LLVM 2.7 VS solution with cmake, but it has
66 projects:<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><b>               
ALL_BUILD, ".\ALL_BUILD.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
BrainF, "examples\BrainF\BrainF.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Fibonacci, "examples\Fibonacci\Fibonacci.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
FileCheck, "utils\FileCheck\FileCheck.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
HowToUseJIT, "examples\HowToUseJIT\HowToUseJIT.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
INSTALL, ".\INSTALL.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch2,
"examples\Kaleidoscope\Chapter2\Kaleidoscope-Ch2.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch3,
"examples\Kaleidoscope\Chapter3\Kaleidoscope-Ch3.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch4,
"examples\Kaleidoscope\Chapter4\Kaleidoscope-Ch4.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch5,
"examples\Kaleidoscope\Chapter5\Kaleidoscope-Ch5.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch6,
"examples\Kaleidoscope\Chapter6\Kaleidoscope-Ch6.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
Kaleidoscope-Ch7,
"examples\Kaleidoscope\Chapter7\Kaleidoscope-Ch7.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMAnalysis, "lib\Analysis\LLVMAnalysis.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMArchive, "lib\Archive\LLVMArchive.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMAsmParser, "lib\AsmParser\LLVMAsmParser.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMAsmPrinter, "lib\CodeGen\AsmPrinter\LLVMAsmPrinter.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMBitReader, "lib\Bitcode\Reader\LLVMBitReader.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMBitWriter, "lib\Bitcode\Writer\LLVMBitWriter.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMCodeGen, "lib\CodeGen\LLVMCodeGen.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMCore, "lib\VMCore\LLVMCore.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMExecutionEngine, "lib\ExecutionEngine\LLVMExecutionEngine.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMInstCombine, "lib\Transforms\InstCombine\LLVMInstCombine.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMInstrumentation,
"lib\Transforms\Instrumentation\LLVMInstrumentation.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMInterpreter, "lib\ExecutionEngine\Interpreter\LLVMInterpreter.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMJIT, "lib\ExecutionEngine\JIT\LLVMJIT.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMLinker, "lib\Linker\LLVMLinker.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMMC, "lib\MC\LLVMMC.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMMCParser, "lib\MC\MCParser\LLVMMCParser.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMScalarOpts, "lib\Transforms\Scalar\LLVMScalarOpts.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMSelectionDAG, "lib\CodeGen\SelectionDAG\LLVMSelectionDAG.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMSupport, "lib\Support\LLVMSupport.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMSystem, "lib\System\LLVMSystem.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMTarget, "lib\Target\LLVMTarget.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMTransformUtils, "lib\Transforms\Utils\LLVMTransformUtils.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMX86AsmParser, "lib\Target\X86\AsmParser\LLVMX86AsmParser.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMX86AsmPrinter,
"lib\Target\X86\AsmPrinter\LLVMX86AsmPrinter.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMX86CodeGen, "lib\Target\X86\LLVMX86CodeGen.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMX86Disassembler, "lib\Target\X86\Disassembler\LLVMX86Disassembler.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMX86Info, "lib\Target\X86\TargetInfo\LLVMX86Info.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMipa, "lib\Analysis\IPA\LLVMipa.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
LLVMipo, "lib\Transforms\IPO\LLVMipo.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
ModuleMaker, "examples\ModuleMaker\ModuleMaker.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
X86CodeGenTable_gen, "lib\Target\X86\X86CodeGenTable_gen.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
ZERO_CHECK, ".\ZERO_CHECK.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
bugpoint, "tools\bugpoint\bugpoint.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
check, "test\check.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
count, "utils\count\count.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
intrinsics_gen, "include\llvm\intrinsics_gen.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llc, "tools\llc\llc.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
lli, "tools\lli\lli.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-ar, "tools\llvm-ar\llvm-ar.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-as, "tools\llvm-as\llvm-as.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-bcanalyzer, "tools\llvm-bcanalyzer\llvm-bcanalyzer.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-dis, "tools\llvm-dis\llvm-dis.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-extract, "tools\llvm-extract\llvm-extract.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-ld, "tools\llvm-ld\llvm-ld.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-link, "tools\llvm-link\llvm-link.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-mc, "tools\llvm-mc\llvm-mc.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-nm, "tools\llvm-nm\llvm-nm.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-prof, "tools\llvm-prof\llvm-prof.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-ranlib, "tools\llvm-ranlib\llvm-ranlib.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm-stub, "tools\llvm-stub\llvm-stub.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
llvm_headers_do_not_build,
"include\llvm\llvm_headers_do_not_build.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
not, "utils\not\not.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
opt, "tools\opt\opt.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><b>               
tblgen, "utils\TableGen\tblgen.vcproj"<o:p></o:p></b></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Is there a guide that explains the purpose of each?
Obviously the ones in an “example” folder are examples, but what about
everything else? Is there a guide to the LLVM components or source code?<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>If there are no such guides, could someone tell me which
parts of LLVM are needed for “minimal” JIT compilation? I would like to create
small amounts of IR at run-time, compile them in-memory, and run them.
Basically I would like to do as described at <a
href="http://www.codeproject.com/KB/cpp/runtime_compile.aspx">http://www.codeproject.com/KB/cpp/runtime_compile.aspx</a>,
except that (in order to minimize the code size), I would like to omit most/all
optimizations.<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Thanks,<o:p></o:p></p>

<p class=MsoNormal>David<o:p></o:p></p>

</div>

</body>

</html>