[www-releases] r326992 - 6.0.0 files

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 8 02:24:48 PST 2018


Added: www-releases/trunk/6.0.0/docs/searchindex.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/searchindex.js?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/searchindex.js (added)
+++ www-releases/trunk/6.0.0/docs/searchindex.js Thu Mar  8 02:24:44 2018
@@ -0,0 +1 @@
+Search.setIndex({docnames:["AMDGPUUsage","AdvancedBuilds","AliasAnalysis","Atomics","Benchmarking","BigEndianNEON","BitCodeFormat","BlockFrequencyTerminology","BranchWeightMetadata","Bugpoint","CFIVerify","CMake","CMakePrimer","CodeGenerator","CodeOfConduct","CodingStandards","CommandGuide/FileCheck","CommandGuide/bugpoint","CommandGuide/dsymutil","CommandGuide/index","CommandGuide/lit","CommandGuide/llc","CommandGuide/lli","CommandGuide/llvm-ar","CommandGuide/llvm-as","CommandGuide/llvm-bcanalyzer","CommandGuide/llvm-build","CommandGuide/llvm-config","CommandGuide/llvm-cov","CommandGuide/llvm-diff","CommandGuide/llvm-dis","CommandGuide/llvm-dwarfdump","CommandGuide/llvm-extract","CommandGuide/llvm-lib","CommandGuide/llvm-link","CommandGuide/llvm-nm","CommandGuide/llvm-pdbutil","CommandGuide/llvm-profdata","CommandGuide/llvm-readobj","CommandGuide/llvm-stress","CommandGuide/llvm-symbolizer","CommandGuide/opt","CommandGuide/tblgen","CommandLine","CompileCudaWithLLVM","CompilerWriterInfo","Coroutines","CoverageMappingFormat","DebuggingJITedCode","DeveloperPolicy","Docker","ExceptionHandling","ExtendingLLVM","Extensions","FAQ","FaultMaps","Frontend/PerformanceTips","FuzzingLLVM","GarbageCollection","GetElementPtr","GettingStarted","GettingStartedVS","GlobalISel","GoldPlugin","HowToAddABuilder","HowToBuildOnARM","HowToCrossCompileBuiltinsOnArm","HowToCrossCompileLLVM","HowToReleaseLLVM","HowToSetUpLLVMStyleRTTI","HowToSubmitABug","HowToUseAttributes","HowToUseInstrMappings","InAlloca","LLVMBuild","LangRef","Lexicon","LibFuzzer","LinkTimeOptimization","MCJITDesignAndImplementation","MIRLangRef","MarkedUpDisassembly","MemorySSA","MergeFunctions","NVPTXUsage","OptBisect","PDB/CodeViewSymbols","PDB/CodeViewTypes","PDB/DbiStream","PDB/GlobalStream","PDB/HashStream","PDB/ModiStream","PDB/MsfFile","PDB/PdbStream","PDB/PublicStream","PDB/TpiStream","PDB/index","Packaging","Passes","Phabricator","ProgrammersManual","Projects","Proposals/GitHubMove","Proposals/VectorizationPlan","ReleaseNotes","ReleaseProcess","ReportingGuide","ScudoHardenedAllocator","SegmentedStacks","SourceLevelDebugging","SphinxQuickstartTemplate","StackMaps","Statepoints","SystemLibrary","TableGen/BackEnds","TableGen/Deficiencies","TableGen/LangIntro","TableGen/LangRef","TableGen/index","TableGenFundamentals","TestSuiteMakefileGuide","TestingGuide","TypeMetadata","Vectorizers","WritingAnLLVMBackend","WritingAnLLVMPass","XRay","XRayExample","XRayFDRFormat","YamlIO","index","tutorial/BuildingAJIT1","tutorial/BuildingAJIT2","tutorial/BuildingAJIT3","tutorial/BuildingAJIT4","tutorial/BuildingAJIT5","tutorial/LangImpl01","tutorial/LangImpl02","tutorial/LangImpl03","tutorial/LangImpl04","tutorial/LangImpl05","tutorial/LangImpl06","tutorial/LangImpl07","tutorial/LangImpl08","tutorial/LangImpl09","tutorial/LangImpl10","tutorial/OCamlLangImpl1","tutorial/OCamlLangImpl2","tutorial/OCamlLangImpl3","tutorial/OCamlLangImpl4","tutorial/OCamlLangImpl5","tutorial/OCamlLangImpl6","tutorial/OCamlLangImpl7","tutorial/OCamlLangImpl8","tutorial/index","yaml2obj"],envversion:50,filenames:["AMDGPUUsage.rst","AdvancedBuilds.rst","AliasAnalysis.rst","Atomics.rst","Benchmarking.rst","BigEndianNEON.rst","BitCodeFormat.rst","BlockFrequencyTerminology.rst","BranchWeightMetadata.rst","Bugpoint.rst","CFIVerify.rst","CMake.rst","CMakePrimer.rst","CodeGenerator.rst","CodeOfConduct.rst","CodingStandards.rst","CommandGuide/FileCheck.rst","CommandGuide/bugpoint.rst","CommandGuide/dsymutil.rst","CommandGuide/index.rst","CommandGuide/lit.rst","CommandGuide/llc.rst","CommandGuide/lli.rst","CommandGuide/llvm-ar.rst","CommandGuide/llvm-as.rst","CommandGuide/llvm-bcanalyzer.rst","CommandGuide/llvm-build.rst","CommandGuide/llvm-config.rst","CommandGuide/llvm-cov.rst","CommandGuide/llvm-diff.rst","CommandGuide/llvm-dis.rst","CommandGuide/llvm-dwarfdump.rst","CommandGuide/llvm-extract.rst","CommandGuide/llvm-lib.rst","CommandGuide/llvm-link.rst","CommandGuide/llvm-nm.rst","CommandGuide/llvm-pdbutil.rst","CommandGuide/llvm-profdata.rst","CommandGuide/llvm-readobj.rst","CommandGuide/llvm-stress.rst","CommandGuide/llvm-symbolizer.rst","CommandGuide/opt.rst","CommandGuide/tblgen.rst","CommandLine.rst","CompileCudaWithLLVM.rst","CompilerWriterInfo.rst","Coroutines.rst","CoverageMappingFormat.rst","DebuggingJITedCode.rst","DeveloperPolicy.rst","Docker.rst","ExceptionHandling.rst","ExtendingLLVM.rst","Extensions.rst","FAQ.rst","FaultMaps.rst","Frontend/PerformanceTips.rst","FuzzingLLVM.rst","GarbageCollection.rst","GetElementPtr.rst","GettingStarted.rst","GettingStartedVS.rst","GlobalISel.rst","GoldPlugin.rst","HowToAddABuilder.rst","HowToBuildOnARM.rst","HowToCrossCompileBuiltinsOnArm.rst","HowToCrossCompileLLVM.rst","HowToReleaseLLVM.rst","HowToSetUpLLVMStyleRTTI.rst","HowToSubmitABug.rst","HowToUseAttributes.rst","HowToUseInstrMappings.rst","InAlloca.rst","LLVMBuild.rst","LangRef.rst","Lexicon.rst","LibFuzzer.rst","LinkTimeOptimization.rst","MCJITDesignAndImplementation.rst","MIRLangRef.rst","MarkedUpDisassembly.rst","MemorySSA.rst","MergeFunctions.rst","NVPTXUsage.rst","OptBisect.rst","PDB/CodeViewSymbols.rst","PDB/CodeViewTypes.rst","PDB/DbiStream.rst","PDB/GlobalStream.rst","PDB/HashStream.rst","PDB/ModiStream.rst","PDB/MsfFile.rst","PDB/PdbStream.rst","PDB/PublicStream.rst","PDB/TpiStream.rst","PDB/index.rst","Packaging.rst","Passes.rst","Phabricator.rst","ProgrammersManual.rst","Projects.rst","Proposals/GitHubMove.rst","Proposals/VectorizationPlan.rst","ReleaseNotes.rst","ReleaseProcess.rst","ReportingGuide.rst","ScudoHardenedAllocator.rst","SegmentedStacks.rst","SourceLevelDebugging.rst","SphinxQuickstartTemplate.rst","StackMaps.rst","Statepoints.rst","SystemLibrary.rst","TableGen/BackEnds.rst","TableGen/Deficiencies.rst","TableGen/LangIntro.rst","TableGen/LangRef.rst","TableGen/index.rst","TableGenFundamentals.rst","TestSuiteMakefileGuide.rst","TestingGuide.rst","TypeMetadata.rst","Vectorizers.rst","WritingAnLLVMBackend.rst","WritingAnLLVMPass.rst","XRay.rst","XRayExample.rst","XRayFDRFormat.rst","YamlIO.rst","index.rst","tutorial/BuildingAJIT1.rst","tutorial/BuildingAJIT2.rst","tutorial/BuildingAJIT3.rst","tutorial/BuildingAJIT4.rst","tutorial/BuildingAJIT5.rst","tutorial/LangImpl01.rst","tutorial/LangImpl02.rst","tutorial/LangImpl03.rst","tutorial/LangImpl04.rst","tutorial/LangImpl05.rst","tutorial/LangImpl06.rst","tutorial/LangImpl07.rst","tutorial/LangImpl08.rst","tutorial/LangImpl09.rst","tutorial/LangImpl10.rst","tutorial/OCamlLangImpl1.rst","tutorial/OCamlLangImpl2.rst","tutorial/OCamlLangImpl3.rst","tutorial/OCamlLangImpl4.rst","tutorial/OCamlLangImpl5.rst","tutorial/OCamlLangImpl6.rst","tutorial/OCamlLangImpl7.rst","tutorial/OCamlLangImpl8.rst","tutorial/index.rst","yaml2obj.rst"],objects:{"":{"-":[41,0,1,"cmdoption"],"--all":[31,0,1,"cmdoption-a"],"--all-blocks":[28,0,1,"cmdoption-llvm-cov-gcov-a"],"--apple-names":[31,0,1,"cmdoption-debug-abbrev"],"--apple-namespaces":[31,0,1,"cmdoption-debug-abbrev"],"--apple-objc":[31,0,1,"cmdoption-debug-abbrev"],"--apple-types":[31,0,1,"cmdoption-debug-abbrev"],"--arch":[31,0,1,"cmdoption-arch"],"--branch-counts":[28,0,1,"cmdoption-llvm-cov-gcov-c"],"--branch-probabilities":[28,0,1,"cmdoption-llvm-cov-gcov-b"],"--check-prefix":[16,0,1,"cmdoption-check-prefix"],"--check-prefixes":[16,0,1,"cmdoption-check-prefixes"],"--config-prefix":[20,0,1,"cmdoption-config-prefix"],"--debug":[20,0,1,"cmdoption-debug"],"--debug-abbrev":[31,0,1,"cmdoption-debug-abbrev"],"--debug-aranges":[31,0,1,"cmdoption-debug-abbrev"],"--debug-cu-index":[31,0,1,"cmdoption-debug-abbrev"],"--debug-frame":[31,0,1,"cmdoption-debug-abbrev"],"--debug-gnu-pubnames":[31,0,1,"cmdoption-debug-abbrev"],"--debug-gnu-pubtypes":[31,0,1,"cmdoption-debug-abbrev"],"--debug-info":[31,0,1,"cmdoption-debug-abbrev"],"--debug-line":[31,0,1,"cmdoption-debug-abbrev"],"--debug-loc":[31,0,1,"cmdoption-debug-abbrev"],"--debug-macro":[31,0,1,"cmdoption-debug-abbrev"],"--debug-pubnames":[31,0,1,"cmdoption-debug-abbrev"],"--debug-pubtypes":[31,0,1,"cmdoption-debug-abbrev"],"--debug-ranges":[31,0,1,"cmdoption-debug-abbrev"],"--debug-str":[31,0,1,"cmdoption-debug-abbrev"],"--debug-str-offsets":[31,0,1,"cmdoption-debug-abbrev"],"--debug-syms":[35,0,1,"cmdoption-llvm-nm-debug-syms"],"--debug-tu-index":[31,0,1,"cmdoption-debug-abbrev"],"--debug-types":[31,0,1,"cmdoption-debug-abbrev"],"--defined-only":[35,0,1,"cmdoption-llvm-nm-defined-only"],"--diff":[31,0,1,"cmdoption-diff"],"--disable-excess-fp-precision":[21,0,1,"cmdoption-disable-excess-fp-precision"],"--disable-fp-elim":[21,0,1,"cmdoption-disable-fp-elim"],"--dump-debug-map":[18,0,1,"cmdoption-dump-debug-map"],"--dynamic":[35,0,1,"cmdoption-llvm-nm-dynamic"],"--echo-all-commands":[20,0,1,"cmdoption-vv"],"--eh-frame":[31,0,1,"cmdoption-debug-abbrev"],"--enable-no-infs-fp-math":[21,0,1,"cmdoption-enable-no-infs-fp-math"],"--enable-no-nans-fp-math":[21,0,1,"cmdoption-enable-no-nans-fp-math"],"--enable-unsafe-fp-math":[21,0,1,"cmdoption-enable-unsafe-fp-math"],"--enable-var-scope":[16,0,1,"cmdoption-enable-var-scope"],"--extern-only":[35,0,1,"cmdoption-llvm-nm-extern-only"],"--filter":[20,0,1,"cmdoption-filter"],"--find":[31,0,1,"cmdoption-f"],"--flat":[18,0,1,"cmdoption-f"],"--format":[35,0,1,"cmdoption-llvm-nm-format"],"--function-summaries":[28,0,1,"cmdoption-llvm-cov-gcov-f"],"--gdb-index":[31,0,1,"cmdoption-debug-abbrev"],"--help":[31,0,1,"cmdoption-h"],"--ignore-case":[31,0,1,"cmdoption-i"],"--implicit-check-not":[16,0,1,"cmdoption-implicit-check-not"],"--input-file":[16,0,1,"cmdoption-input-file"],"--load":[21,0,1,"cmdoption-load"],"--long-file-names":[28,0,1,"cmdoption-llvm-cov-gcov-l"],"--lookup":[31,0,1,"cmdoption-lookup"],"--match-full-lines":[16,0,1,"cmdoption-match-full-lines"],"--max-tests":[20,0,1,"cmdoption-max-tests"],"--max-time":[20,0,1,"cmdoption-max-time"],"--name":[31,0,1,"cmdoption-n"],"--no-odr":[18,0,1,"cmdoption-no-odr"],"--no-output":[28,0,1,"cmdoption-llvm-cov-gcov-n"],"--no-progress-bar":[20,0,1,"cmdoption-no-progress-bar"],"--no-sort":[35,0,1,"cmdoption-llvm-nm-no-sort"],"--no-swiftmodule-timestamp":[18,0,1,"cmdoption-no-swiftmodule-timestamp"],"--num-shards":[20,0,1,"cmdoption-num-shards"],"--num-threads":[18,0,1,"cmdoption-j"],"--numeric-sort":[35,0,1,"cmdoption-llvm-nm-numeric-sort"],"--object-directory":[28,0,1,"cmdoption-llvm-cov-gcov-o"],"--object-file":[28,0,1,"cmdoption-llvm-cov-gcov-o"],"--oso-prepend-path":[18,0,1,"cmdoption-oso-prepend-path"],"--out-file":[31,0,1,"cmdoption-o"],"--param":[20,0,1,"cmdoption-d"],"--path":[20,0,1,"cmdoption-path"],"--preserve-paths":[28,0,1,"cmdoption-llvm-cov-gcov-p"],"--print-file-name":[35,0,1,"cmdoption-llvm-nm-print-file-name"],"--print-machineinstrs":[21,0,1,"cmdoption-print-machineinstrs"],"--print-size":[35,0,1,"cmdoption-llvm-nm-print-size"],"--quiet":[20,0,1,"cmdoption-q"],"--radix":[35,0,1,"cmdoption-llvm-nm-radix"],"--recurse-depth":[31,0,1,"cmdoption-r"],"--regalloc":[21,0,1,"cmdoption-regalloc"],"--regex":[31,0,1,"cmdoption-x"],"--run-shard":[20,0,1,"cmdoption-run-shard"],"--show-all":[20,0,1,"cmdoption-a"],"--show-children":[31,0,1,"cmdoption-c"],"--show-form":[31,0,1,"cmdoption-show-form"],"--show-parents":[31,0,1,"cmdoption-p"],"--show-suites":[20,0,1,"cmdoption-show-suites"],"--show-tests":[20,0,1,"cmdoption-show-tests"],"--show-unsupported":[20,0,1,"cmdoption-show-unsupported"],"--show-xfail":[20,0,1,"cmdoption-show-xfail"],"--shuffle":[20,0,1,"cmdoption-shuffle"],"--size-sort":[35,0,1,"cmdoption-llvm-nm-size-sort"],"--spiller":[21,0,1,"cmdoption-spiller"],"--statistics":[31,0,1,"cmdoption-statistics"],"--stats":[21,0,1,"cmdoption-stats"],"--strict-whitespace":[16,0,1,"cmdoption-strict-whitespace"],"--succinct":[20,0,1,"cmdoption-s"],"--symtab":[18,0,1,"cmdoption-s"],"--threads":[20,0,1,"cmdoption-j"],"--time-passes":[21,0,1,"cmdoption-time-passes"],"--time-tests":[20,0,1,"cmdoption-time-tests"],"--unconditional-branches":[28,0,1,"cmdoption-llvm-cov-gcov-u"],"--undefined-only":[35,0,1,"cmdoption-llvm-nm-undefined-only"],"--uuid":[31,0,1,"cmdoption-u"],"--verbose":[31,0,1,"cmdoption-v"],"--verify":[31,0,1,"cmdoption-verify"],"--version":[31,0,1,"cmdoption-version"],"--vg":[20,0,1,"cmdoption-vg"],"--vg-arg":[20,0,1,"cmdoption-vg-arg"],"--vg-leak":[20,0,1,"cmdoption-vg-leak"],"--x86-asm-syntax":[21,0,1,"cmdoption-x86-asm-syntax"],"-A":[35,0,1,"cmdoption-llvm-nm-print-file-name"],"-B":[35,0,1,"cmdoption-llvm-nm-b"],"-D":[35,0,1,"cmdoption-llvm-nm-dynamic"],"-F":[31,0,1,"cmdoption-show-form"],"-I":[42,0,1,"cmdoption-tblgen-i"],"-O":[21,0,1,"cmdoption-o"],"-P":[35,0,1,"cmdoption-llvm-nm-p"],"-S":[41,0,1,"cmdoption-s"],"-Xdemangler":[28,0,1,"cmdoption-llvm-cov-show-xdemangler"],"-a":[35,0,1,"cmdoption-llvm-nm-debug-syms"],"-all":[36,0,1,"cmdoption-llvm-pdbutil-pretty-all"],"-all-functions":[37,0,1,"cmdoption-llvm-profdata-show-all-functions"],"-arch":[28,0,1,"cmdoption-llvm-cov-show-arch"],"-asmparsernum":[42,0,1,"cmdoption-tblgen-asmparsernum"],"-asmwriternum":[42,0,1,"cmdoption-tblgen-asmwriternum"],"-b":[28,0,1,"cmdoption-llvm-cov-gcov-b"],"-binary":[37,0,1,"cmdoption-llvm-profdata-merge-binary"],"-block-range":[36,0,1,"cmdoption-llvm-pdbutil-bytes-block-range"],"-byte-range":[36,0,1,"cmdoption-llvm-pdbutil-bytes-byte-range"],"-c":[31,0,1,"cmdoption-c"],"-chunks":[36,0,1,"cmdoption-llvm-pdbutil-bytes-chunks"],"-class":[42,0,1,"cmdoption-tblgen-class"],"-class-definitions":[36,0,1,"cmdoption-llvm-pdbutil-pretty-class-definitions"],"-class-order":[36,0,1,"cmdoption-llvm-pdbutil-pretty-class-order"],"-class-recurse-depth":[36,0,1,"cmdoption-llvm-pdbutil-pretty-class-recurse-depth"],"-classes":[36,0,1,"cmdoption-llvm-pdbutil-pretty-classes"],"-code-model":[22,0,1,"cmdoption-code-model"],"-color-output":[36,0,1,"cmdoption-llvm-pdbutil-pretty-color-output"],"-compilands":[36,0,1,"cmdoption-llvm-pdbutil-pretty-compilands"],"-counts":[37,0,1,"cmdoption-llvm-profdata-show-counts"],"-d":[34,0,1,"cmdoption-d"],"-debug":[41,0,1,"cmdoption-debug"],"-default-arch":[40,0,1,"cmdoption-default-arch"],"-demangle":[40,0,1,"cmdoption-demangle"],"-dependents":[36,0,1,"cmdoption-llvm-pdbutil-dump-dependents"],"-disable-excess-fp-precision":[22,0,1,"cmdoption-disable-excess-fp-precision"],"-disable-inlining":[41,0,1,"cmdoption-disable-inlining"],"-disable-opt":[41,0,1,"cmdoption-disable-opt"],"-disable-post-RA-scheduler":[22,0,1,"cmdoption-disable-post-ra-scheduler"],"-disable-spill-fusing":[22,0,1,"cmdoption-disable-spill-fusing"],"-dsym-hint":[40,0,1,"cmdoption-dsym-hint"],"-dump":[25,0,1,"cmdoption-llvm-bcanalyzer-dump"],"-dyn-symbols":[38,0,1,"cmdoption-dyn-symbols"],"-dynamic-table":[38,0,1,"cmdoption-dynamic-table"],"-ec":[36,0,1,"cmdoption-llvm-pdbutil-bytes-ec"],"-elf-section-groups":[38,0,1,"cmdoption-elf-section-groups"],"-enable-no-infs-fp-math":[22,0,1,"cmdoption-enable-no-infs-fp-math"],"-enable-no-nans-fp-math":[22,0,1,"cmdoption-enable-no-nans-fp-math"],"-enable-unsafe-fp-math":[22,0,1,"cmdoption-enable-unsafe-fp-math"],"-enums":[36,0,1,"cmdoption-llvm-pdbutil-pretty-enums"],"-exclude-compilands":[36,0,1,"cmdoption-llvm-pdbutil-pretty-exclude-compilands"],"-exclude-symbols":[36,0,1,"cmdoption-llvm-pdbutil-pretty-exclude-symbols"],"-exclude-types":[36,0,1,"cmdoption-llvm-pdbutil-pretty-exclude-types"],"-expand-relocs":[38,0,1,"cmdoption-expand-relocs"],"-externals":[36,0,1,"cmdoption-llvm-pdbutil-pretty-externals"],"-f":[41,0,1,"cmdoption-f"],"-fake-argv0":[22,0,1,"cmdoption-fake-argv0"],"-file-headers":[38,0,1,"cmdoption-file-headers"],"-files":[36,0,1,"cmdoption-llvm-pdbutil-dump-files"],"-filetype":[21,0,1,"cmdoption-filetype"],"-force-interpreter":[22,0,1,"cmdoption-force-interpreter"],"-format":[28,0,1,"cmdoption-llvm-cov-show-format"],"-fpm":[36,0,1,"cmdoption-llvm-pdbutil-bytes-fpm"],"-function":[37,0,1,"cmdoption-llvm-profdata-show-function"],"-functions":[40,0,1,"cmdoption-functions"],"-g":[38,0,1,"cmdoption-elf-section-groups"],"-gcc":[37,0,1,"cmdoption-llvm-profdata-merge-gcc"],"-gen-asm-matcher":[42,0,1,"cmdoption-tblgen-gen-asm-matcher"],"-gen-asm-writer":[42,0,1,"cmdoption-tblgen-gen-asm-writer"],"-gen-dag-isel":[42,0,1,"cmdoption-tblgen-gen-dag-isel"],"-gen-dfa-packetizer":[42,0,1,"cmdoption-tblgen-gen-dfa-packetizer"],"-gen-disassembler":[42,0,1,"cmdoption-tblgen-gen-disassembler"],"-gen-emitter":[42,0,1,"cmdoption-tblgen-gen-emitter"],"-gen-enhanced-disassembly-info":[42,0,1,"cmdoption-tblgen-gen-enhanced-disassembly-info"],"-gen-fast-isel":[42,0,1,"cmdoption-tblgen-gen-fast-isel"],"-gen-instr-info":[42,0,1,"cmdoption-tblgen-gen-instr-info"],"-gen-intrinsic":[42,0,1,"cmdoption-tblgen-gen-intrinsic"],"-gen-pseudo-lowering":[42,0,1,"cmdoption-tblgen-gen-pseudo-lowering"],"-gen-register-info":[42,0,1,"cmdoption-tblgen-gen-register-info"],"-gen-subtarget":[42,0,1,"cmdoption-tblgen-gen-subtarget"],"-gen-tgt-intrinsic":[42,0,1,"cmdoption-tblgen-gen-tgt-intrinsic"],"-global-extras":[36,0,1,"cmdoption-llvm-pdbutil-dump-global-extras"],"-globals":[36,0,1,"cmdoption-llvm-pdbutil-pretty-globals"],"-h":[38,0,1,"cmdoption-file-headers"],"-help":[42,0,1,"cmdoption-tblgen-help"],"-i":[31,0,1,"cmdoption-i"],"-id":[36,0,1,"cmdoption-llvm-pdbutil-bytes-id"],"-id-data":[36,0,1,"cmdoption-llvm-pdbutil-dump-id-data"],"-id-extras":[36,0,1,"cmdoption-llvm-pdbutil-dump-id-extras"],"-id-index":[36,0,1,"cmdoption-llvm-pdbutil-dump-id-index"],"-ids":[36,0,1,"cmdoption-llvm-pdbutil-dump-ids"],"-il":[36,0,1,"cmdoption-llvm-pdbutil-dump-il"],"-include-compilands":[36,0,1,"cmdoption-llvm-pdbutil-pretty-include-compilands"],"-include-symbols":[36,0,1,"cmdoption-llvm-pdbutil-pretty-include-symbols"],"-include-types":[36,0,1,"cmdoption-llvm-pdbutil-pretty-include-types"],"-inlining":[40,0,1,"cmdoption-inlining"],"-input-files":[37,0,1,"cmdoption-llvm-profdata-merge-input-files"],"-instr":[37,0,1,"cmdoption-llvm-profdata-show-instr"],"-j":[37,0,1,"cmdoption-llvm-profdata-merge-num-threads"],"-jit-enable-eh":[22,0,1,"cmdoption-jit-enable-eh"],"-join-liveintervals":[22,0,1,"cmdoption-join-liveintervals"],"-l":[36,0,1,"cmdoption-llvm-pdbutil-dump-l"],"-line-coverage-gt":[28,0,1,"cmdoption-llvm-cov-show-line-coverage-gt"],"-line-coverage-lt":[28,0,1,"cmdoption-llvm-cov-show-line-coverage-lt"],"-lines":[36,0,1,"cmdoption-llvm-pdbutil-pretty-lines"],"-load":[41,0,1,"cmdoption-load"],"-load-address":[36,0,1,"cmdoption-llvm-pdbutil-pretty-load-address"],"-march":[22,0,1,"cmdoption-march"],"-mattr":[22,0,1,"cmdoption-mattr"],"-mcpu":[22,0,1,"cmdoption-mcpu"],"-meabi":[21,0,1,"cmdoption-meabi"],"-memop-sizes":[37,0,1,"cmdoption-llvm-profdata-show-memop-sizes"],"-min-class-padding":[36,0,1,"cmdoption-llvm-pdbutil-pretty-min-class-padding"],"-min-class-padding-imm":[36,0,1,"cmdoption-llvm-pdbutil-pretty-min-class-padding-imm"],"-min-type-size":[36,0,1,"cmdoption-llvm-pdbutil-pretty-min-type-size"],"-mod":[36,0,1,"cmdoption-llvm-pdbutil-bytes-mod"],"-modi":[36,0,1,"cmdoption-llvm-pdbutil-dump-modi"],"-module-syms":[36,0,1,"cmdoption-llvm-pdbutil-pretty-module-syms"],"-modules":[36,0,1,"cmdoption-llvm-pdbutil-dump-modules"],"-mtriple":[22,0,1,"cmdoption-mtriple"],"-n":[35,0,1,"cmdoption-llvm-nm-numeric-sort"],"-name":[28,0,1,"cmdoption-llvm-cov-show-name"],"-name-map":[36,0,1,"cmdoption-llvm-pdbutil-bytes-name-map"],"-name-regex":[28,0,1,"cmdoption-llvm-cov-show-name-regex"],"-name-whitelist":[28,0,1,"cmdoption-llvm-cov-show-name-whitelist"],"-needed-libs":[38,0,1,"cmdoption-needed-libs"],"-no-compiler-generated":[36,0,1,"cmdoption-llvm-pdbutil-pretty-no-compiler-generated"],"-no-enum-definitions":[36,0,1,"cmdoption-llvm-pdbutil-pretty-no-enum-definitions"],"-no-system-libs":[36,0,1,"cmdoption-llvm-pdbutil-pretty-no-system-libs"],"-nodetails":[25,0,1,"cmdoption-llvm-bcanalyzer-nodetails"],"-nozero-initialized-in-bss":[22,0,1,"cmdoption-nozero-initialized-in-bss"],"-num-threads":[37,0,1,"cmdoption-llvm-profdata-merge-num-threads"],"-o":[42,0,1,"cmdoption-tblgen-o"],"-obj":[40,0,1,"cmdoption-obj"],"-output":[37,0,1,"cmdoption-llvm-profdata-show-output"],"-output-dir":[28,0,1,"cmdoption-llvm-cov-show-output-dir"],"-p":[41,0,1,"cmdoption-p"],"-path-equivalence":[28,0,1,"cmdoption-llvm-cov-show-path-equivalence"],"-pdb":[36,0,1,"cmdoption-llvm-pdbutil-yaml2pdb-pdb"],"-pre-RA-sched":[22,0,1,"cmdoption-pre-ra-sched"],"-pretty-print":[40,0,1,"cmdoption-pretty-print"],"-print-address":[40,0,1,"cmdoption-print-address"],"-print-enums":[42,0,1,"cmdoption-tblgen-print-enums"],"-print-records":[42,0,1,"cmdoption-tblgen-print-records"],"-print-sets":[42,0,1,"cmdoption-tblgen-print-sets"],"-program-headers":[38,0,1,"cmdoption-program-headers"],"-public-extras":[36,0,1,"cmdoption-llvm-pdbutil-dump-public-extras"],"-publics":[36,0,1,"cmdoption-llvm-pdbutil-dump-publics"],"-q":[20,0,1,"cmdoption-q"],"-r":[38,0,1,"cmdoption-relocations"],"-regalloc":[22,0,1,"cmdoption-regalloc"],"-region-coverage-gt":[28,0,1,"cmdoption-llvm-cov-show-region-coverage-gt"],"-region-coverage-lt":[28,0,1,"cmdoption-llvm-cov-show-region-coverage-lt"],"-relocation-model":[22,0,1,"cmdoption-relocation-model"],"-relocations":[38,0,1,"cmdoption-relocations"],"-s":[38,0,1,"cmdoption-sections"],"-sample":[37,0,1,"cmdoption-llvm-profdata-show-sample"],"-sc":[36,0,1,"cmdoption-llvm-pdbutil-bytes-sc"],"-sd":[38,0,1,"cmdoption-section-data"],"-section-contribs":[36,0,1,"cmdoption-llvm-pdbutil-dump-section-contribs"],"-section-data":[38,0,1,"cmdoption-section-data"],"-section-headers":[36,0,1,"cmdoption-llvm-pdbutil-dump-section-headers"],"-section-map":[36,0,1,"cmdoption-llvm-pdbutil-dump-section-map"],"-section-relocations":[38,0,1,"cmdoption-section-relocations"],"-section-symbols":[38,0,1,"cmdoption-section-symbols"],"-sections":[38,0,1,"cmdoption-sections"],"-seed":[39,0,1,"cmdoption-seed"],"-show-expansions":[28,0,1,"cmdoption-llvm-cov-show-show-expansions"],"-show-functions":[28,0,1,"cmdoption-llvm-cov-report-show-functions"],"-show-instantiation-summary":[28,0,1,"cmdoption-llvm-cov-report-show-instantiation-summary"],"-show-instantiations":[28,0,1,"cmdoption-llvm-cov-show-show-instantiations"],"-show-line-counts":[28,0,1,"cmdoption-llvm-cov-show-show-line-counts"],"-show-line-counts-or-regions":[28,0,1,"cmdoption-llvm-cov-show-show-line-counts-or-regions"],"-show-regions":[28,0,1,"cmdoption-llvm-cov-show-show-regions"],"-size":[39,0,1,"cmdoption-size"],"-sm":[36,0,1,"cmdoption-llvm-pdbutil-bytes-sm"],"-soft-float":[22,0,1,"cmdoption-soft-float"],"-sparse":[37,0,1,"cmdoption-llvm-profdata-merge-sparse"],"-spiller":[22,0,1,"cmdoption-spiller"],"-split-chunks":[36,0,1,"cmdoption-llvm-pdbutil-bytes-split-chunks"],"-sr":[38,0,1,"cmdoption-section-relocations"],"-st":[38,0,1,"cmdoption-section-symbols"],"-stack-size-section":[21,0,1,"cmdoption-stack-size-section"],"-stats":[41,0,1,"cmdoption-stats"],"-stream-blocks":[36,0,1,"cmdoption-llvm-pdbutil-dump-stream-blocks"],"-stream-data":[36,0,1,"cmdoption-llvm-pdbutil-bytes-stream-data"],"-streams":[36,0,1,"cmdoption-llvm-pdbutil-dump-streams"],"-string-table":[36,0,1,"cmdoption-llvm-pdbutil-dump-string-table"],"-strip-debug":[41,0,1,"cmdoption-strip-debug"],"-summary":[36,0,1,"cmdoption-llvm-pdbutil-dump-summary"],"-summary-only":[28,0,1,"cmdoption-llvm-cov-export-summary-only"],"-sym-data":[36,0,1,"cmdoption-llvm-pdbutil-dump-sym-data"],"-sym-types":[36,0,1,"cmdoption-llvm-pdbutil-pretty-sym-types"],"-symbol-order":[36,0,1,"cmdoption-llvm-pdbutil-pretty-symbol-order"],"-symbols":[38,0,1,"cmdoption-symbols"],"-syms":[36,0,1,"cmdoption-llvm-pdbutil-bytes-syms"],"-t":[38,0,1,"cmdoption-symbols"],"-tab-size":[28,0,1,"cmdoption-llvm-cov-show-tab-size"],"-text":[37,0,1,"cmdoption-llvm-profdata-show-text"],"-time-passes":[41,0,1,"cmdoption-time-passes"],"-topn":[37,0,1,"cmdoption-llvm-profdata-show-topn"],"-type":[36,0,1,"cmdoption-llvm-pdbutil-bytes-type"],"-type-data":[36,0,1,"cmdoption-llvm-pdbutil-dump-type-data"],"-type-extras":[36,0,1,"cmdoption-llvm-pdbutil-dump-type-extras"],"-type-index":[36,0,1,"cmdoption-llvm-pdbutil-dump-type-index"],"-type-server":[36,0,1,"cmdoption-llvm-pdbutil-bytes-type-server"],"-typedefs":[36,0,1,"cmdoption-llvm-pdbutil-pretty-typedefs"],"-types":[36,0,1,"cmdoption-llvm-pdbutil-pretty-types"],"-u":[38,0,1,"cmdoption-unwind"],"-unwind":[38,0,1,"cmdoption-unwind"],"-use-color":[28,0,1,"cmdoption-llvm-cov-show-use-color"],"-use-symbol-table":[40,0,1,"cmdoption-use-symbol-table"],"-v":[35,0,1,"cmdoption-llvm-nm-numeric-sort"],"-verify":[25,0,1,"cmdoption-llvm-bcanalyzer-verify"],"-verify-each":[41,0,1,"cmdoption-verify-each"],"-version":[42,0,1,"cmdoption-tblgen-version"],"-vv":[20,0,1,"cmdoption-vv"],"-weighted-input":[37,0,1,"cmdoption-llvm-profdata-merge-weighted-input"],"-x":[31,0,1,"cmdoption-x"],"-x86-asm-syntax":[22,0,1,"cmdoption-x86-asm-syntax"],"-xme":[36,0,1,"cmdoption-llvm-pdbutil-dump-xme"],"-xmi":[36,0,1,"cmdoption-llvm-pdbutil-dump-xmi"],"-y":[18,0,1,"cmdoption-y"]}},objnames:{"0":["std","cmdoption","program option"]},objtypes:{"0":"std:cmdoption"},terms:{"00000000041516c6":127,"000000e":[138,139,140,142,148,149,150,152],"00002fc0":127,"000102030405060708090a0b0c0d0e0f":75,"03d516c6":127,"04e":75,"0b000000":124,"0b000011":124,"0b000100":124,"0b000111":124,"0b01101101":75,"0b10":116,"0b100":116,"0b1001011":116,"0b101":116,"0b10110110":75,"0b111":116,"0baz":100,"0cleanup":51,"0dev":120,"0f00000000":84,"0f3f800000":84,"0f3fb8aa3b":84,"0f42d20000":84,"0f7f800000":84,"0fb5bfbe8e":84,"0fbf317200":84,"0fc2d20000":84,"0th":59,"0x0":[0,6,13,100],"0x00":[0,23,47,111],"0x00000000":[0,109],"0x0000000000000000":0,"0x0000000000000002":48,"0x000000000059c583":48,"0x0000000000d953b3":48,"0x0000000000dc8872":48,"0x00000000016677e0":48,"0x00000002":109,"0x00000003":109,"0x00000004":109,"0x00000009":109,"0x00000067":109,"0x0000006e":109,"0x000000c9":16,"0x000000ff":0,"0x00000100":[0,109],"0x00000110":109,"0x00000120":109,"0x00000130":109,"0x00000140":109,"0x00000147":109,"0x00000150":109,"0x00000233":16,"0x000003bd":109,"0x000003cd":109,"0x000003f3":109,"0x000003ff":13,"0x00001000":109,"0x00001023":109,"0x00001203":109,"0x00001c00":13,"0x00002000":109,"0x00002023":109,"0x00002200":109,"0x000034f0":109,"0x00003500":109,"0x00003550":109,"0x00007fff":13,"0x00007ffff7ed40a9":48,"0x0001023":109,"0x0002023":109,"0x00ff0000":13,"0x01":[0,47,109,118,128],"0x02":[0,47,109],"0x03":[0,111],"0x04":[109,128],"0x05":111,"0x06":111,"0x07":[0,111],"0x08":[0,109],"0x0a":[23,111],"0x0abcd":75,"0x0b":111,"0x0b17c0de":6,"0x0c":47,"0x0d":111,"0x0e":111,"0x0f":111,"0x0fffffff":128,"0x1":[0,13,100,109,111],"0x10":[109,111],"0x100":109,"0x1000":109,"0x100000f24":40,"0x1234":109,"0x12345678":109,"0x14c":[88,155],"0x1603020":48,"0x16151f0":48,"0x16677e0":48,"0x1b":6,"0x1c2":53,"0x1f84":40,"0x2":[13,100,111],"0x20":109,"0x200":109,"0x2000":109,"0x2413bc":125,"0x29273623":109,"0x2a":5,"0x3":[13,100,111],"0x3000":36,"0x3039":100,"0x3500000001652748":48,"0x3f":53,"0x3fe9":109,"0x3fea":109,"0x3feaed548f090ce":139,"0x3feb":109,"0x3fed":109,"0x4":[13,111],"0x40":109,"0x400":109,"0x4000":[36,109],"0x40000000":80,"0x4004f4":40,"0x400528":40,"0x40054d":40,"0x401000":40,"0x42":6,"0x4200":109,"0x43":6,"0x432ff973cafa8000":75,"0x5":[13,111],"0x5cf8c24cdb18bdac":47,"0x6":13,"0x60":23,"0x60500020":155,"0x7":13,"0x70b298":125,"0x710":40,"0x744e60":77,"0x744ea0":77,"0x7f":[75,116],"0x7fff":0,"0x7ffff7ed404c":48,"0x7fffffff":75,"0x7fffffffe018":48,"0x7fffffffe040":48,"0x8":[13,100],"0x80":[23,109],"0x800":109,"0x80000000":0,"0x82638293":109,"0x8664":88,"0x9":[13,100],"0x90":112,"0xa":[0,13,100],"0xabcdef00":112,"0xb":13,"0xc":[6,13],"0xc0de":6,"0xc3":116,"0xd":[6,13],"0xe":6,"0xe413754a191db537":47,"0xe8":116,"0xeffe0000":88,"0xf":116,"0xfc":0,"0xfe":0,"0xff":[0,75,116],"0xffbef174":125,"0xffff":[0,75,88,111],"0xffff000000000002":111,"0xffffffff":[0,6,75],"0xh":75,"0xk":75,"0xl":75,"0xl00000000000000004000900000000000":75,"0xm":75,"0xxxxxxxxx":109,"102kb":43,"10m":77,"10x":44,"123kkk":43,"123mb":43,"125000e":75,"128b":104,"128mib":53,"12x10":75,"133700e":[138,148],"15mb":102,"16b":5,"16bit":143,"16gb":64,"16mib":53,"18th":59,"1cleanup":51,"1gb":102,"1s100000s11010s10100s1111s1010s110s11s1":100,"1svn":68,"200000e":[140,150],"234000e":[138,148],"23421e":75,"24e8":100,"24mb":77,"250000e":80,"25mb":77,"260x":0,"290x":0,"2acr96qjuqsym":49,"2ap3":53,"2nd":[75,77,100,116],"2x3x4":75,"30pm":129,"32bit":143,"3340b":0,"3dnow":143,"3dnowa":143,"3gb":61,"3rd":[75,77,131],"3x4":75,"40th":[136,146],"41m":43,"4gib":53,"4kib":92,"4th":[13,75],"59620e187c6ac38b36382685ccd2b63b":120,"5rqxku":127,"5th":75,"64b":104,"64bit":[75,80,105],"64k":88,"66ghz":64,"6th":75,"7050b":0,"7150b":0,"7200p":0,"7350b":0,"7400p":0,"7600p":0,"7e15":43,"7th":75,"7ykb2k5f":33,"80f351b51825":50,"80x86":64,"80x87":13,"818b4c1539df3e51dc7e62c89ead4abfd348827d":109,"8500b":0,"8500p":0,"8600b":0,"8600p":0,"8700b":0,"8700p":0,"8780p":0,"8800b":0,"8800p":0,"8gib":53,"90p":127,"9600p":0,"9630p":0,"9700p":0,"9730p":0,"9800p":0,"9830p":0,"99p":127,"\u03c6":75,"abstract":[13,15,49,51,54,69,76,78,85,98,100,109,112,118,124,125,129,136,138,139,140,141,142,143,144,146,148,149,150,151,152],"boolean":[0,6,11,13,15,21,46,74,75,98,100,104,116,121,124,140,150],"break":[5,8,11,13,15,43,49,51,52,58,64,68,71,75,81,97,123,124,125,136,137,138,139,140,141,142,143,144,146,147,150,151],"byte":[0,2,3,5,6,13,21,23,25,46,47,52,59,75,77,88,91,92,96,100,104,107,108,109,111,112,122,124,128,147,148,149,150,151,152],"case":[0,2,3,5,6,8,9,10,11,12,13,14,15,16,19,23,27,31,32,41,43,44,46,47,50,51,52,54,55,56,58,59,60,62,65,66,67,69,70,72,73,75,77,78,79,80,81,82,83,85,88,93,96,98,100,101,102,104,106,108,109,110,111,112,113,114,116,117,118,120,121,123,124,125,129,130,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],"catch":[43,48,49,59,66,75,76,100,102,138,139,148,149],"char":[2,15,23,43,47,48,59,75,77,78,84,88,92,100,107,109,123,124,125,126,127,131,135,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],"class":[0,5,6,14,16,36,42,49,52,57,58,60,62,71,73,76,79,81,83,85,88,93,97,98,103,104,109,113,114,118,122,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,147,148,149,152,153],"const":[0,2,13,15,43,47,52,58,69,73,77,78,80,85,100,107,109,124,125,126,127,129,131,132,133,134,135,137,138,139,140,141,142,143,144],"default":[0,1,2,3,6,8,11,13,16,17,18,20,21,22,23,27,28,30,31,32,35,36,37,40,42,43,44,46,47,49,52,53,56,57,58,60,61,62,63,64,66,67,69,73,75,77,79,80,81,82,84,97,99,100,101,102,104,107,109,111,112,114,116,118,120,121,123,124,125,126,127,131,132,137,138,139,140,141,142,143,144,148,149,150,151],"enum":[2,13,15,36,42,43,52,58,62,69,71,72,75,88,93,100,109,114,118,124,129,136,137,138,139,140,141,142,143,144,155],"export":[2,11,13,36,43,60,63,68,75,78,96,102,131,132,133,134,135,139,141],"final":[0,3,6,9,10,13,15,20,23,43,47,49,50,51,58,60,67,69,73,75,78,83,88,91,93,100,101,102,103,105,109,114,115,116,117,118,121,124,125,126,128,131,133,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153],"float":[6,7,13,21,43,44,52,56,59,62,65,67,83,84,100,104,109,118,123,124,129,136,137,138,139,140,146,147,148,149,150,151,152],"function":[0,2,3,5,6,7,9,10,11,16,19,21,23,25,28,29,31,35,36,37,40,41,44,48,50,51,56,57,58,59,60,62,63,69,70,71,72,73,74,76,77,78,79,81,82,85,88,91,97,102,103,104,107,108,111,112,114,122,124,127,129,130,131,132,134,135,136,137,139,140,141,142,143,145,146,147,149,150,151,152,153,154],"goto":[15,83,123,140,141,142,143,144,152],"import":[2,3,5,6,8,9,10,11,12,13,14,15,20,29,36,37,43,49,56,58,60,61,65,67,68,70,72,75,77,83,88,91,92,98,102,104,105,107,109,111,123,124,125,126,129,130,132,137,138,139,140,141,144,145,147,148,149,150,151,153],"instanceof":100,"int":[2,3,5,9,13,15,16,17,40,43,44,46,47,48,51,54,58,59,60,61,63,72,73,75,77,78,80,83,84,100,109,110,112,116,117,118,123,124,126,127,129,131,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153,155],"long":[1,2,3,8,9,12,13,15,17,20,23,25,28,45,49,51,53,54,56,57,58,59,60,62,69,75,92,96,99,100,104,105,106,109,112,113,121,124,125,129,132,135,138,139,145,148,153],"new":[1,3,6,9,11,12,13,15,17,20,23,26,41,43,48,50,56,57,58,60,63,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,84,85,88,92,99,102,103,104,107,108,110,111,112,113,114,116,117,120,124,129,130,131,132,133,137,138,139,140,141,143,144,145,147,148,149,150,151,153],"null":[0,2,6,13,15,21,22,46,51,55,56,75,80,83,84,85,88,98,100,109,111,112,124,125,129,131,137,138,139,140,141,142,143,144,150],"public":[12,36,43,49,57,58,60,64,69,74,84,88,96,105,106,109,124,125,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144],"return":[0,2,3,5,6,8,9,13,18,22,23,28,31,36,37,38,39,40,43,44,46,47,48,49,51,52,54,56,58,60,61,62,69,71,72,73,75,77,78,79,81,82,83,84,85,98,102,107,108,109,110,111,112,113,114,122,123,124,125,126,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],"short":[2,5,9,13,15,20,40,42,47,49,54,60,61,75,82,84,88,103,111,112,124,126,129,132,140,141,142,144,150,151,152],"static":[2,3,4,9,10,11,13,17,19,22,43,46,52,54,56,58,59,60,62,67,69,70,73,75,76,77,78,79,83,100,101,104,107,109,112,114,122,124,125,126,129,131,136,137,138,139,140,141,142,143,144,148,149],"super":[13,78,124],"switch":[10,11,43,46,51,52,60,62,63,65,68,69,72,98,99,100,102,112,114,123,124,128,129,137,138,139,140,141,142,143,144,148,149,150],"throw":[13,44,46,56,73,75,98,100,125,133],"true":[0,2,3,8,12,13,15,17,22,28,37,40,43,46,58,59,60,63,65,67,69,72,75,80,83,84,88,96,98,100,102,107,109,117,118,121,122,124,125,126,127,129,131,132,133,134,135,137,138,139,140,141,142,143,144,148,149,150,151,152],"try":[2,3,4,5,9,13,14,15,17,26,31,43,44,49,50,56,58,60,61,70,75,77,80,82,83,98,100,102,106,110,113,125,126,129,130,131,132,133,134,135,139,141,142,143,145,147,148,149,150,151,152,153],"var":[12,16,83,109,116,142,143,144,152],"void":[2,3,5,6,7,13,15,16,43,44,46,47,51,52,54,55,58,59,63,73,77,78,80,82,84,98,100,109,111,112,122,123,124,125,126,127,129,131,132,133,134,135,137,138,139,140,141,142,143,144],"while":[0,1,2,6,9,11,12,13,14,15,16,20,41,43,46,48,49,50,51,55,57,59,60,62,66,67,72,73,75,76,77,78,82,83,85,88,92,93,96,97,98,99,102,104,105,106,107,109,111,112,113,115,116,118,121,123,125,126,127,130,135,136,137,138,139,140,141,142,143,144,145,146,147,150,152,153],ACE:113,AND:[3,13,75,123],ASE:104,Added:104,Adding:[11,46,49,75,130,136,138,141,142,143,145,146,148,151,152,153,154],Age:[88,93],And:[11,15,43,58,59,71,75,78,83,92,100,109,113,114,121,123,124,125,129,132,135,140,144],BBs:[15,83],Being:[14,49,75,99,142,152],But:[5,13,15,44,59,60,67,75,83,88,100,102,109,110,124,129,139],CUs:0,CVS:102,DIEs:[0,109],Doing:[13,56,100,106,112,132,139,148],ERE:16,EXE:96,EXEs:96,For:[0,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,20,21,22,23,28,36,37,41,43,44,46,47,49,51,52,53,54,55,57,58,59,61,65,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,92,93,96,97,98,99,100,101,102,103,104,105,107,109,110,111,112,113,114,116,118,120,121,123,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],GAS:124,GDS:0,Going:[15,82],HDs:44,Has:129,ICE:60,IDE:[11,61],IDEs:12,IDs:[75,83,102],IFs:123,Ids:0,Into:99,Its:[6,11,23,43,47,58,75,78,80,82,122,128,136,139,146],LDS:0,LHS:[15,75,83,137,138,139,140,141,142,143,144,149,151,152],LIS:13,LTS:60,MFS:43,MIs:13,NOT:[15,65,75,85,121],Not:[0,6,12,13,14,18,37,43,51,53,58,75,78,105,124,125,128,140,144,150],One:[0,2,3,5,9,12,13,15,16,18,35,43,46,50,56,58,59,60,61,72,75,77,83,96,100,109,112,117,125,127,129,137,138,139,140,141,144,145,147,148,149,150,151,152,153],Ops:[13,141,142,143,144],PCs:77,RHS:[15,75,83,137,138,139,140,141,142,143,144,147,149,151,152],Res:[15,83],Such:[3,43,46,56,75,84,100,109,113],TLS:[6,13,51,75,104,112],That:[3,4,5,12,13,15,49,50,58,59,60,62,63,68,69,73,74,75,81,82,100,112,113,124,129,131,139,145,153],The:[0,1,3,4,5,6,7,8,9,10,11,12,14,17,18,19,20,21,22,23,25,26,27,28,30,32,33,35,36,37,38,39,41,42,44,45,46,47,48,49,50,51,52,53,54,57,61,62,64,65,66,67,70,71,72,73,74,78,79,80,81,83,85,97,98,99,101,104,105,106,107,108,109,110,111,112,113,114,115,117,119,120,121,122,126,128,129,130,131,132,133,134,135,138,139,140,141,142,143,144,145,148,149,150,151,152,153],Their:[75,100],Then:[9,13,43,47,60,64,69,70,73,75,77,78,81,83,98,100,109,124,125,131,139,141,142,143,144,151,152],There:[0,2,3,5,6,8,11,12,13,15,16,43,44,47,49,51,52,54,57,58,59,60,61,62,64,65,66,67,73,74,75,77,80,83,84,91,98,100,101,102,109,110,112,113,114,115,118,120,121,124,125,126,128,129,137,138,141,142,144,145,147,148,149,151,152,153],These:[0,2,3,5,6,7,9,10,11,13,15,16,17,19,20,21,23,28,33,43,44,49,52,53,56,57,58,59,60,68,71,72,74,75,77,80,84,85,97,98,100,101,102,103,109,111,112,113,114,116,118,120,121,122,123,124,125,126,128,131,132,136,137,138,139,140,141,142,143,144,145,146,147,149,153],Ths:25,Tied:75,Ties:0,Use:[0,4,5,13,17,28,31,35,37,41,58,60,61,65,68,77,78,80,84,99,105,109,110,116,120,121,124,125,126,130,134,135],Used:[0,11,20,72,75,76,114,124],Useful:[27,100,130],Uses:[11,51,60,75,76,118,124],Using:[0,11,16,23,43,46,75,77,84,99,101,102,105,116,124,129,130,133,138,142,144,148,152,154],VMs:77,Will:77,With:[2,4,6,12,13,15,16,23,24,25,30,32,34,41,43,46,59,61,69,73,75,76,77,102,109,118,122,126,129,130,132,133,136,137,138,139,140,141,142,144,146,147,148,149,150,151,152],XPS:113,YES:77,Yes:[54,59,60,98],_64:104,__________:100,______________________:100,______________________________________:100,__________________________________________________________:100,__annot:75,__anon_expr:[137,138,139,140,141,142,143,144],__apple_nam:109,__apple_namespac:109,__apple_objc:109,__apple_typ:109,__atomic_compare_exchang:3,__atomic_compare_exchange_n:3,__atomic_exchang:3,__atomic_exchange_n:3,__atomic_fetch_add_n:3,__atomic_fetch_and_n:3,__atomic_fetch_nand_n:3,__atomic_fetch_or_n:3,__atomic_fetch_sub_n:3,__atomic_fetch_xor_n:3,__atomic_load:3,__atomic_load_n:3,__atomic_stor:3,__atomic_store_n:3,__attribute__:[44,109,126],__bitcod:6,__builtin_expect:8,__builtin_longjmp:51,__builtin_setjmp:51,__builtin_trap:77,__c_specific_handl:51,__cdecl:75,__chkstk:53,__clang__:44,__clear_cach:75,__cuda__:44,__cuda_arch__:44,__cuda_ftz:84,__cudacc__:44,__cxa_allocate_except:51,__cxa_begin_catch:51,__cxa_call_unexpect:51,__cxa_demangl:57,__cxa_end_catch:51,__cxa_rethrow:51,__cxa_throw:51,__cxx_:127,__cxx_global_var_init:127,__cxxframehandler3:51,__cxxthrowexcept:51,__data:75,__declspec:[139,140,141,142,143,144],__dwarf:109,__eh_fram:13,__except:51,__gcmap_:58,__global__:44,__gxx_personality_v0:51,__has_attribut:114,__i386__:[145,153],__image_info:75,__imp_:75,__internal_accurate_powf:84,__jit_debug_register_cod:48,__llvm:6,__llvm_coverage_map:47,__llvm_covmap:47,__llvm_deoptim:75,__llvm_faultmap:55,__llvm_memcpy_element_unordered_atomic_:75,__llvm_memmove_element_unordered_atomic_:75,__llvm_memset_element_unordered_atomic_:75,__llvm_stackmap:111,__main:125,__morestack:108,__next__:46,__nv_isinff:84,__nv_isnanf:84,__nv_powf:84,__nv_truncf:84,__nvcc__:44,__objc:75,__objc_imageinfo:75,__profn_foo:47,__scudo_default_opt:107,__stack_chk_fail:[75,80],__stack_chk_guard:75,__sync_fetch_and_add_n:3,__sync_fetch_and_and_n:3,__sync_fetch_and_max_n:3,__sync_fetch_and_min_n:3,__sync_fetch_and_nand_n:3,__sync_fetch_and_or_n:3,__sync_fetch_and_sub_n:3,__sync_fetch_and_umax_n:3,__sync_fetch_and_umin_n:3,__sync_fetch_and_xor_n:3,__sync_lock_test_and_set_n:3,__sync_synchron:3,__sync_val_compare_and_swap_n:3,__syncthread:84,__text:13,__try:51,__unwind_info:13,__xray_log_fin:126,__xray_log_flushlog:126,__xray_log_init:126,__xray_log_register_mod:126,__xray_log_select_mod:126,__xray_patch:126,__xray_remove_handl:126,__xray_set_handl:126,__xray_set_log_impl:126,__xray_unpatch:126,_aligna:109,_args_:12,_bool:[142,152],_crit_edg:75,_cuda_ftz:84,_cxxthrowexcept:51,_dcleanup:51,_division_by_zero:0,_dpp:0,_e32:0,_e64:0,_except_handler3:51,_except_handler4:51,_flag:12,_flags_:12,_function_nam:53,_inexact:0,_info:0,_init:0,_invalid_oper:0,_m4enum:75,_main:[40,155],_name_:12,_overflow:0,_p1:109,_p3:109,_r0h:51,_regoffset:118,_ri:116,_rr:116,_runtim:111,_sdwa:0,_segment_buff:0,_segment_ptr:0,_segment_wave_offset:0,_size:0,_sourc:0,_source_dir:11,_tag:[147,148,149,150,151,152],_ty:52,_underflow:0,_unwind_resum:51,_var:12,_vol:0,_wave_offset:0,_workgroup_count_i:0,_workgroup_count_x:0,_workgroup_count_z:0,_z3foov:75,_zero:0,_zfoov:75,_zst1a:122,_ztid:75,_ztii:75,_zts1a:122,_zts1b:122,_zts1c:122,_zts1d:122,_ztv1a:122,_ztv1b:122,_ztv1c:122,_ztv1d:122,_ztv3bar:16,_ztv3foo:16,a10:0,a12:0,a15:65,a32:5,a64:5,a_ctor_bas:16,aad8i8:13,aad:13,aapc:75,aarch32:45,aarch64:[5,57,60,62,65,75,80,107,111,124,126],aarch64registerinfo:80,abandon:[62,100],abbrev:[6,31],abbrevi:[15,25],abbrevid:6,abbrevop0:6,abbrevop1:6,abbrevwidth:6,abc:75,abcd:6,abi:[5,10,11,23,46,49,53,54,60,62,66,67,68,73,75,84,97,98,109,111,121,122,124,139,143,144,145,149,153],abil:[13,14,41,43,48,52,56,58,75,81,100,101,102,109,129,136,140,141,142,146,150,151,152],abl:[0,2,4,9,13,16,23,43,44,47,49,54,56,58,59,60,62,66,67,70,73,74,75,76,78,96,100,102,103,106,109,110,111,112,116,123,124,125,126,129,130,131,132,139,140,141,144,145,149,150,151,153],abnorm:[56,113],abort:[9,13,15,51,75,100,104,116],about:[0,2,3,6,7,11,12,13,15,16,20,21,23,25,34,35,36,37,38,43,44,48,49,50,51,52,55,56,57,58,59,60,61,62,64,65,66,67,68,69,70,72,75,76,78,79,80,81,82,83,84,88,91,92,96,97,98,99,100,104,105,106,107,109,110,111,112,113,114,115,116,117,120,123,124,125,126,127,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],abov:[0,2,3,5,6,7,10,11,12,13,14,15,16,17,23,40,43,44,46,52,54,55,56,57,58,59,60,66,67,68,69,70,72,75,78,79,80,81,82,83,85,88,98,100,101,102,103,105,106,108,109,110,111,112,116,118,120,121,122,124,125,127,129,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],abs8:53,abs:[0,84],abs_f:118,abs_fp32:118,abs_fp64:118,abs_fp80:118,absenc:[9,13],absent:100,absolut:[7,11,15,16,28,36,52,60,62,67,75,88,100,104,121,124,125,128],absolute_tsc:128,absv16i8:124,absv1i64:124,abu:23,abus:100,acc:[75,100],acceler:[0,31,68,145,153],accept:[0,12,14,15,16,28,35,43,46,49,50,53,54,57,60,61,62,63,68,69,75,77,81,83,84,99,100,116,117,121,131,135],access:[0,2,3,5,11,23,26,28,35,43,46,50,51,52,56,58,59,60,61,64,77,79,80,82,84,85,92,98,99,100,104,107,109,111,112,114,116,123,124,125,126,129,131,132,138,142,145,152,153],accessor:[13,109,125,137],accessti:75,accessty1:75,accessty2:75,accident:[15,43,100,113,125],accommod:[6,13,53,75,84],accomplish:[49,58,69,93,98,100,136,146],accord:[0,6,7,43,58,62,69,75,80,100,103,105,111,112,124,129,138],accordingli:[51,58,72,75,92,100,102],account:[10,14,36,49,58,60,64,69,75,83,99,102,106,126,127],accqual:0,accumul:[75,77,98,123,147,148,149,150,151,152],accumulateconstantoffset:83,accur:[2,8,28,58,62,78,98,102,109,144,145,153],accuraci:[75,98],achiev:[3,11,50,56,57,72,75,78,102,103,107,113],acknowledg:106,acm:[13,58],aco:2,acq_rel:[0,3,75],acquaint:131,acquir:[0,75,77,82,100],acquisit:100,acronym:130,across:[3,5,10,12,13,25,43,44,46,51,56,60,62,74,75,76,77,84,85,92,93,98,100,102,109,111,112,118,123,125,139,145,149,153],act:[7,13,15,75,77,82,83,98,100,106,109,121,132],action:[0,8,13,15,46,51,52,57,60,62,75,76,85,99,100,106,112,124,125,128,132,134,135],actionscript:[145,153],activ:[2,13,15,44,46,49,50,51,58,73,75,77,100,111,124,125,130,132,133,134,135,154],actual:[0,2,3,5,6,9,12,13,15,16,20,23,43,44,46,49,50,51,54,55,56,58,59,64,69,74,75,76,77,79,82,83,88,96,98,100,101,105,107,109,112,113,116,120,121,124,125,129,131,132,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],actualaccqu:0,acycl:[13,42,76,109,124],ada:51,adapt:[44,49,54,66,98,100,113],adc32mi8:118,adc32mi:118,adc32mr:118,adc32ri8:118,adc32ri:118,adc32rm:118,adc32rr:118,adc64mi32:118,adc64mi8:118,adc64mr:118,adc64ri32:118,adc64ri8:118,adc64rm:118,adc64rr:118,adc:[0,76,100],add16mi8:118,add16mi:118,add16mr:118,add16ri8:118,add16ri:118,add16rm:118,add16rr:118,add32mi8:118,add32mi:118,add32mr:118,add32ri8:118,add32ri:118,add32rm:118,add32rr:118,add64mi32:118,add64mi8:118,add64mr:118,add64ri32:118,add8rr:13,add:[0,2,3,6,9,11,12,13,15,16,17,20,23,28,36,41,43,44,46,48,49,50,51,52,53,54,55,56,58,60,61,62,66,67,69,70,71,72,77,80,83,84,85,97,98,99,100,101,102,103,104,105,109,111,112,113,115,116,117,118,120,121,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],add_:12,add_cfg_simplif:[149,150,151,152],add_char:[146,147,148,149,150,151,152],add_custom_command:12,add_custom_target:12,add_definit:11,add_dep:12,add_depend:12,add_execut:[11,12],add_gvn:[149,150,151,152],add_incom:[150,151],add_instruction_combin:[149,150,151,152],add_librari:11,add_llvm_execut:12,add_llvm_fuzz:57,add_llvm_loadable_modul:[11,125],add_llvm_tool:57,add_llvm_unittest:11,add_memory_to_register_promot:152,add_pf:72,add_pt:72,add_reassoci:[149,150,151,152],add_ri:116,add_rr:116,add_subdirectori:[11,125],add_to_library_group:74,addcom:58,added:[0,6,9,10,11,13,15,23,28,30,43,47,48,49,50,52,58,60,64,66,72,75,77,78,81,83,99,100,104,106,109,110,111,112,113,114,116,120,121,123,124,125,129,131,132,133,134,135,137,139,140,141,142,143,144,147,149,150,151],addedcomplex:118,addend:[0,75],addenda:45,addendum:130,addfunctionast:[134,135],addi:[75,116],addimm:13,addincom:[140,141,142,143,144],adding:[7,9,11,13,15,20,21,31,47,49,52,53,56,57,62,64,66,69,72,75,85,100,102,109,110,121,124,125,130,131,133,136,138,139,140,141,142,143,144,145,146,149,150,151,152,153],addinstselector:124,addintervalsforspil:13,addit:[1,2,3,6,9,11,12,13,14,15,16,17,21,25,28,32,36,41,43,44,45,46,47,49,51,53,56,58,59,60,61,62,66,67,68,70,73,74,75,76,77,81,82,83,84,85,88,96,98,100,101,102,103,107,109,111,112,113,118,120,121,123,124,125,137,138,139,141,142,143,145,147,148,149,151,152,153],addition:[2,3,13,43,49,58,60,62,63,74,75,82,96,98,100,102,112],addllvm:[11,12],addmbb:13,addmodul:[131,132,133,134,135,139,140,141,142],addmoduleflag:144,addpassestoemitfil:[125,143],addpassestoemitmc:79,addpdrm:116,addpdrr:116,addpreemitpass:124,addpreserv:2,addpsrm:116,addpsrr:116,addq:111,addr2:40,addr:[40,46,75,124,135],addrawvalu:71,addreg:13,addregbankcoverag:62,addregfrm:124,addregisterclass:[13,124],address:[2,3,4,5,6,11,19,31,35,36,43,44,46,49,51,56,57,58,62,64,73,76,77,80,83,88,97,98,99,100,102,104,107,108,109,111,112,116,118,123,124,125,127,128,130,131,132,133,134,135,139,140,141,142,145,149,152,153],address_class:0,address_s:84,addressis32bit:88,addresssanit:[75,77],addressspac:62,addri:124,addrorerr:135,addrr:124,addrri:124,addrrr:124,addrspac:[51,62,75,84,112],addrspacequ:0,addsdrm:116,addsdrr:116,addtmp1:[139,149],addtmp4:[138,148],addtmp:[138,139,140,141,142,143,144,148,149,150,151,152],addtypenam:100,addx:116,addxri:80,adequ:[11,58,61,124],adher:[14,49,100,113,115,118],aditya:62,adjac:[0,75,100,117],adjust:[37,56,73,83,121,124],adjustpassmanag:84,admin:64,administr:64,adopt:[13,15,49,102,113,130,131],adorn:[75,110],adrp:53,adt:[60,131,132,133,134,135,137,138,139,140,141,142,143,144],adttest:11,advanc:[11,12,15,43,49,58,75,110,124,125,131,137,144,147,149],advantag:[3,5,13,15,43,46,49,58,59,62,71,75,77,78,100,102,141,142,145,151,152,153],adventur:100,advertis:51,advic:[17,49,56,58,65,99,130],advis:[12,23,68,71,140,150],advisori:14,advoc:[14,15],ae4deadbea242e8ea517eef662c30443f75bd086:109,afed8lhqlzfqjer0:49,affect:[3,5,10,11,14,16,43,44,49,62,67,68,70,75,76,83,84,85,100,102,105,113,116,117,125,139,140,150],affili:12,afn:[75,104],aforement:[49,60,92],aform_1:13,aform_2:13,afre:73,after:[0,1,2,3,4,5,6,7,9,10,11,12,13,14,16,17,22,23,28,30,31,36,41,43,46,47,49,50,51,54,57,58,59,60,62,64,65,67,68,69,73,75,77,79,80,81,82,83,84,88,98,100,101,104,107,109,110,111,112,113,114,116,117,118,120,121,122,124,125,126,128,129,131,132,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],after_bb:[150,151,152],afterbb:[140,141,142,143,144],afterloop:[140,141,142,143,144,150,151,152],afterward:[56,98,112],again:[1,5,12,16,43,46,51,56,68,70,75,82,83,100,102,108,110,120,125,131,138,139,140,142,145,149,150,152,153],against:[1,8,11,14,16,23,27,36,49,51,54,56,57,60,62,69,73,75,77,84,97,98,100,107,120,121,122,126,129,138],age:14,agenc:106,agent:[0,75],agg1:75,agg2:75,agg3:75,agg:75,aggreg:[15,36,51,73,76,100,124,127],aggress:[2,13,15,44,55,58,60,75,76,109,123,137,140,147,150],agnost:[5,13,109,113],agre:[14,49,98,109,129],agreement:49,agrep:120,ahead:[15,49,51,60,61,70,102,125,131,136,137,145,146,147,153],ahm:62,aid:[58,75],aim:[5,9,12,15,17,47,49,57,75,100,103,106,107,113,131],ain:0,aix:[13,45],aka:[1,2,13,75,77,96,100,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],al_aliasset:124,al_superregsset:124,alac:120,alacconvert:120,albeit:[142,152],alex:47,algebra:98,algn:127,algo:125,algorithm:[2,15,29,43,51,58,75,82,83,88,98,103,114,124,131,132,133,134,135,137,138,139,140,141,142,143,145,147,150,152,153],alia:[3,6,16,35,73,76,80,82,83,124,125,130,131],alias:[2,6,59,68,82,98,104,111,124,145,153],aliasanalysi:[75,125],aliasanalysiscount:2,aliasanalysisdebugg:2,aliase:[6,75,83],aliaseeti:75,aliasesset:2,aliasopt:43,aliasresult:2,aliasset:[2,124],align32bit:6,align:[0,3,13,16,36,45,46,47,51,58,59,71,75,78,80,83,84,98,100,103,109,111,112,124,128,129],align_nod:75,aligna:109,alignstack:[6,75],alignstyl:100,aliv:[13,46,83,98,100,125],all:[0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,25,27,28,29,31,32,35,36,37,38,40,41,42,43,44,46,48,49,50,51,52,53,56,57,58,59,60,61,62,63,64,65,67,68,69,70,72,73,74,75,76,77,78,79,80,82,83,84,85,88,91,92,96,99,100,101,103,104,105,106,107,109,111,112,113,114,116,117,118,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],all_build:61,allevi:[13,43,75,100],alli:75,alloc:[0,2,15,21,22,51,53,56,58,59,60,62,73,75,77,79,80,85,103,111,112,124,125,127,129,130,131,133,139,142,145,149,152,153],alloca:[13,15,46,51,58,59,73,82,98,100,109,111,112,142,143,144,152],allocainst:[15,75,100,142,143,144,152],allocat:[13,75,124],allocationinst:100,allocator_may_return_nul:107,allocinst:152,allocs:[6,75],allow:[0,2,3,5,6,8,11,12,13,14,15,16,17,20,21,23,28,44,46,47,48,49,50,51,52,53,56,58,59,60,62,67,69,71,73,74,75,77,78,79,80,81,82,83,84,85,88,97,98,99,100,102,104,107,108,109,111,112,113,115,116,117,118,121,122,123,124,125,126,127,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155],allowsanysmalls:100,allroot:120,almost:[3,5,13,15,49,52,56,57,58,76,100,102,112,113],alon:[13,43,49,60,121,137,147],along:[3,6,11,13,15,35,37,44,56,58,60,69,70,72,75,79,80,84,93,98,100,102,103,108,109,110,112,124,125,136,138,139,145,146,148,149,153],alongsid:[6,102],alpha:[75,124],alphacompilationcallback:124,alphajitinfo:124,alreadi:[2,8,10,11,12,13,15,43,44,49,52,58,60,61,62,69,70,73,75,83,85,100,101,102,106,108,109,110,111,112,118,121,124,125,129,131,132,133,135,136,138,139,140,141,142,143,144,146,148,149,150,151,152],also:[0,2,3,5,6,8,9,10,11,12,13,16,28,36,37,40,43,44,46,47,49,50,51,52,53,54,56,57,58,59,60,61,62,63,65,66,67,68,71,72,73,74,75,76,77,78,80,82,83,84,85,92,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,116,117,120,121,122,123,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],alt_always_instru:126,alt_never_instru:126,alter:[43,75,100,125],altern:[0,9,11,13,18,28,44,49,51,56,59,61,62,63,66,75,77,85,100,102,103,112,120,124,126,129,137,142,147,152,155],although:[3,6,12,13,15,20,26,43,44,49,52,58,60,61,69,74,75,77,80,88,93,100,110,112,121,125,141,148],altivec:[13,75,76],altogeth:103,alu32_rr:72,alu:0,alwai:[0,2,3,5,6,8,12,13,14,15,16,20,23,25,32,43,44,46,47,49,51,54,56,60,62,66,69,74,75,76,78,82,88,96,99,100,101,102,104,106,109,112,113,120,121,126,127,128,129,131,137,138,139,140,141,142,143,144,145,148,149,150,151,152,153],always_inlin:44,always_instru:126,alwaysinlin:[6,75],amaz:[141,151],amazingli:[140,150],ambigu:[43,69,117,121,137,141,147,151],amd64:60,amd:[0,13,45,67,104,114],amd_queue_t:0,amdfam10:143,amdgcn:0,amdgiz:0,amdgizcl:0,amdgpu:[60,62,75,80,130],amdgpu_float_denorm_mode_flush_dst:0,amdgpu_float_denorm_mode_flush_non:0,amdgpu_float_denorm_mode_flush_src:0,amdgpu_float_denorm_mode_flush_src_dst:0,amdgpu_float_round_mode_minus_infin:0,amdgpu_float_round_mode_near_even:0,amdgpu_float_round_mode_plus_infin:0,amdgpu_float_round_mode_zero:0,amdgpu_system_vgpr_workitem_id_undefin:0,amdgpu_system_vgpr_workitem_id_x:0,amdgpu_system_vgpr_workitem_id_x_i:0,amdgpu_system_vgpr_workitem_id_x_y_z:0,amdkernelcodet:0,amdpal:0,amen:13,amend:99,aminicheri:102,among:[2,13,15,44,53,56,60,75,77,78,83,84,98,100,102,114],amongst:3,amort:62,amount:[0,9,13,14,15,21,22,36,41,43,51,52,54,58,70,75,77,83,98,100,102,107,108,111,112,114,118,125,126,133,136,139,146,149],amper:65,anachronist:6,analog:[51,58,75,100,112,116,125,131],analys:[2,7,10,13,41,52,60,75,98,100,103,109,125,126,127,130],analysi:[3,7,8,10,25,41,47,52,54,56,58,60,72,75,76,78,80,82,85,103,109,120,127,130,139,142,144,149,152],analysisusag:2,analyz:[13,19,41,46,56,60,61,62,83,98,100,109,114,120,125,126,127,140,150],analyzebranch:124,anaylsi:10,ancestor:[0,69],anchor:109,ancient:1,andrew:[58,102],android:121,ands:76,andw:16,anew:109,angl:[15,44,129],ani:[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,20,21,23,25,27,28,29,30,31,35,36,37,41,43,46,47,49,50,51,52,53,54,56,57,58,59,60,61,62,65,67,68,71,72,74,75,76,78,79,80,81,82,83,84,85,96,98,100,101,102,103,104,106,107,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],annoat:81,annoi:15,annot:[8,37,44,51,56,76,84],announc:[102,105,126,130],anonym:[49,61,106,109,116,117,124,125,127,131,137,138,139,140,141,142,143,144,147,148,149,150,151,152],anoth:[0,2,3,4,5,6,11,12,13,14,15,16,23,28,36,41,43,46,47,49,51,52,53,54,58,60,61,62,65,67,72,73,74,75,76,77,78,82,83,84,96,98,102,109,110,111,112,113,116,118,121,124,125,126,127,128,129,131,132,137,138,139,140,141,142,143,144,145,147,149,150,151,152,153],anotherbranch:102,anothercategori:43,answer:[2,15,43,49,54,56,59,62,69,75,82,83,98,110,130,132,139,140,142,149,150,152],anticip:128,antisymmetr:83,antisymmetri:83,anxiou:11,anyhow:75,anymor:[100,125],anyon:[3,12,49,50,106,109,124],anyregcc:[6,75,111],anyth:[3,13,15,21,22,44,49,50,54,60,61,69,75,92,98,100,102,109,111,112,118,139,140,148,149,150],anywai:[15,67,75,82,98],anywher:[14,16,51,56,75,78,83,100,110,118,121,137,142,147,152],ap2:75,apach:[49,68,113],apart:[2,5,11,75,92,100],apertur:0,apfloat:[60,138,139,140,141,142,143,144,148],api:[0,2,11,15,36,43,45,58,63,68,74,77,82,84,93,96,97,104,107,111,114,126,130,132,133,134,135,138,139,144,148,149],apint:[80,100,127],app:[0,15,97,100],appar:[142,152],appatur:0,appdata:61,appear:[2,3,9,15,20,23,29,43,47,49,53,59,75,88,93,96,98,100,102,103,109,112,117,124,132],appel89:58,appel:58,append:[6,11,17,18,23,24,28,75,100,101,116,121,150],append_block:[148,149,150,151,152],appendinglinkag:100,appenduniqu:75,appertur:0,appl:[12,13,16,31,48,49,51,75,109,130],apple_nam:109,apple_namespac:109,apple_objc:109,apple_typ:109,appli:[0,2,3,5,9,11,12,13,14,15,23,28,41,43,46,49,53,56,59,60,62,64,66,68,75,77,78,79,85,88,98,99,100,102,103,105,109,113,116,117,124,125,128,129,132,139,141,142,145,149,151,152,153],applic:[0,5,6,11,13,15,23,27,28,31,43,45,49,51,55,56,58,61,66,74,75,77,79,83,100,111,112,116,118,120,121,124,125,127,128,130,131,136,139,141,145,146,149,151,153],appreci:49,approach:[5,9,11,13,15,43,44,46,50,51,59,62,69,72,75,83,98,100,103,104,108,109,112,121,124],appropri:[0,2,3,5,13,15,20,28,37,43,44,46,49,51,52,56,57,58,60,62,64,67,68,69,71,72,75,78,84,98,99,100,102,104,105,106,109,112,113,118,124,125,127,129,131,133,137,141,142,147,151,152],approv:[49,68,99],approx:[44,84],approxim:[8,20,44,61,75,76,77,104],apr1:49,apr:113,aptr:75,apu:0,aq2:75,arang:31,arbitrari:[0,2,6,13,15,20,26,43,49,51,57,58,59,62,74,75,80,82,96,100,109,111,112,116,124,125,128,136,137,138,139,142,145,146,147,148,149,152,153],arbitrarili:[69,75,109,140,150],arc:[28,60,99],arcanist:130,arcconfig:60,arch:[18,21,22,23,28,31,40,44,60,65,105,126,143],arch_nam:40,architect:0,architectur:[3,5,11,13,16,18,20,21,22,28,31,40,44,51,56,57,60,61,65,66,67,68,75,80,84,103,104,105,107,114,118,121,122,124,126,130,135,143,154],archiv:[19,31,33,35,49,50,63,74,78,88,100,101,102,106,107,126,130],arcp:75,arcpatch:99,arctan:129,area:[0,5,13,15,47,49,51,54,58,76,77,99,100,105,113,121,142,152],aren:[2,13,14,15,44,49,58,59,60,61,62,75,80,98,100,102,132,139,140,145,149,153],areprivatesymbolsstrip:88,arg1:[75,77,136,146],arg2:[75,77,136,146],arg:[0,15,17,20,22,28,37,43,48,57,70,75,83,112,117,128,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],arg_begin:100,arg_empti:100,arg_end:100,arg_iter:100,arg_siz:[58,100,138,139,140,141,142,143,144],argc:[43,47,48,75,77,84,100,109,127,135],argidx:144,arglist:75,argmemonli:[6,56,75],argn:12,argnam:[43,137,138,139,140,141,142,143,144],argstart:43,argsv:[138,139,140,141,142,143,144],argti:75,argu:15,argument:[2,5,6,10,11,13,15,16,17,19,20,22,25,27,28,35,37,42,44,47,50,51,52,54,56,57,58,59,60,61,62,63,69,70,72,73,77,79,83,85,102,104,108,109,111,112,117,118,120,121,124,125,127,128,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],argumentexpr:[147,148,149,150,151,152],argumentlisttyp:100,argv0:22,argv:[9,12,22,43,47,48,77,84,100,109,127,135],argvalu:[43,48],aris:[49,59,75,100],arithmet:[47,56,83,98,100,116,123,138,142,148,152],ariti:58,arm64:60,arm7:126,arm:[3,13,51,56,60,62,75,76,80,81,114,121,124,130],arm_aapcs_vfpcc:6,arm_aapcscc:6,arm_apcscc:6,arm_cflag:66,arm_neon:[5,114],arm_thumb1_sourc:66,arm_thumb1_vfpv2_sourc:66,armgenasmmatch:114,armgenregisterinfo:114,armhf:[66,67,107],arminstrinfo:124,armv5:3,armv6:[45,65],armv7:[5,45,60,65,67,75],armv7a:66,armv8:[45,118],around:[0,2,3,10,12,15,43,49,51,58,59,60,71,73,74,75,77,83,85,98,100,102,109,112,113,124,125,126,137,140,144,145,150,153],arr:[59,75,100],arrai:[0,2,5,6,13,21,23,36,46,51,56,58,77,83,84,88,91,92,98,109,114,121,123,124,137,142,145,147,148,149,150,151,152,153],arrang:[13,43,58,69,75,98,121,125,133],arrayidx1:75,arrayidx2:75,arrayidx3:75,arrayidx4:75,arrayidx:75,arrayref:104,arraytyp:100,arriv:59,art:58,artem:44,articl:[60,83,98,102,140,142,150,152],artifact:[59,77,83,103],artifact_prefix:77,as_float:[149,150,151,152],asan:[77,104,107],ascend:[47,75],ascii:[6,23,75,77,109,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],asi:124,asid:[0,75,82,100,107],ask:[2,14,44,49,52,56,58,60,61,68,69,83,100,102,105,106,109,112,115,116,117,125,130,133,137,140,142,144,145,147,150,152,153],asm:[6,21,22,42,84,104],asmmatcheremitt:114,asmnam:124,asmpars:[52,60,114],asmparsernum:42,asmprint:[13,58,114,124],asmstr:[116,118,124],asmwrit:[52,58],asmwriternum:42,aspect:[11,13,49,58,62,75,92,93,100,102,103,107,109,117,137,138,140,144,145,147,148,150,153],aspir:[141,151],aspx:15,assembl:[6,19,21,22,25,29,30,41,42,44,45,49,52,54,59,60,61,62,66,74,80,81,84,102,108,112,114,118,120,121,130,139,143,149,154],assert:[11,13,43,60,65,68,70,75,77,84,97,98,100,104,105,121,124,125,129,131,134,135,138,139,140,141,142,143,144],assert_valid_funct:[148,149,150,151,152],assign:[0,3,6,7,8,13,37,43,49,51,54,59,62,72,75,76,83,84,85,100,104,107,116,117,124,129,136,138,143,144,146,148],assignvirt2phi:13,assignvirt2stackslot:13,assing:83,assist:[15,42,56,70,85,141,151],associ:[0,5,6,7,8,12,13,15,21,23,43,47,51,53,58,71,74,76,79,80,82,83,85,98,100,107,111,112,113,116,122,124,126,128,137,139,147],assort:144,assum:[0,1,2,6,7,8,9,11,13,15,20,21,22,36,44,46,49,51,52,54,56,58,59,60,61,83,84,88,91,92,93,96,98,100,102,105,108,109,111,112,120,122,124,125,127,129,131,137,138,141,142,143,144,145,148,151,153],assumpt:[13,15,16,21,49,50,51,75,109,131,144,145,153],assur:129,ast:[44,76,114,131,133,135,136,138,139,141,142,144,145,146,148,149,151,152,153,154],astcontext:15,astdump:114,astnod:114,astread:114,astwrit:114,asymmetr:59,asymmetri:[55,83],asymptomat:17,async:46,async_op1:46,async_op2:46,async_op:46,asynchron:[0,3,46,75],at_apple_properti:109,at_apple_property_attribut:109,at_apple_property_sett:109,at_apple_runtime_class:109,at_artifici:109,at_byte_s:109,at_decl_fil:109,at_decl_lin:109,at_encod:109,at_end:[148,149,150,151,152],at_nam:109,at_typ:109,atan2:[136,146],atc:0,athlon:143,atoi:75,atom:[0,15,16,56,82,92,100,104,107,109,126,130],atom_count0:109,atom_count:109,atomic_:3,atomic_cmpxchg:3,atomic_f:3,atomic_load_:3,atomic_swap:3,atomicexpand:3,atomicexpandpass:3,atomicrmw:[0,3],atomtyp:109,atop:58,att:[21,22,75],attach:[15,46,48,49,60,64,75,84,99,100,104,109,122,128,138,139,140,141,142,152],attack:14,attempt:[2,6,9,13,15,17,41,49,51,56,60,75,77,79,98,100,106,111,112,113,124,125,127,128,132,133,134,135],attent:[14,15,49,60,75,106,121,124,131],attornei:49,attr0:6,attr1:6,attr:[0,6,75,109,114],attract:[49,58],attrdump:114,attrgrp0:6,attrgrp1:6,attrgrp:6,attribut:[6,21,22,29,31,51,58,62,72,78,83,84,85,99,100,104,108,112,114,118,124,125,130],attributelist:[6,114],attributerefer:114,attrimpl:114,attrinfomap:114,attrkind:[71,114],attrlist:114,attrparsedattrimpl:114,attrparsedattrkind:114,attrparsedattrlist:114,attrparserstringswitch:114,attrpchread:114,attrpchwrit:114,attrspel:114,attrspellinglistindex:114,attrtemplateinstanti:114,attrvisitor:114,atyp:59,audienc:[56,130],augment:[8,62,100,141,151],august:79,authent:[45,64],author:[13,15,46,49,54,64,69,75,76,83,130],authorit:36,auto:[13,26,28,37,61,100,103,109,126,130,131,132,133,134,135,137,138,139,140,141,142,143,144],autoconf:[11,12,54,65,68,100],autodetect:[21,22,28],autogener:49,autoinsert:100,autom:[1,13,49,60,99,101,114,118],automat:[0,2,11,13,15,19,20,21,43,54,58,60,64,67,68,69,73,74,80,83,99,100,101,102,103,104,108,109,110,114,116,124,125,126,129,130,138,140,142,143,144,148,149,150],automaton:[13,114],autotool:60,autovector:123,aux:100,auxiliari:[0,124],auxiliarydata:155,avail:[0,3,11,12,13,15,19,20,21,22,27,28,41,43,44,48,49,50,51,54,56,60,62,64,66,68,69,74,75,77,97,98,100,102,104,105,106,107,109,111,112,113,116,118,119,120,121,122,123,124,125,126,127,130,131,132,136,138,139,140,141,143,146,148,149,150],available_extern:[6,75],available_featur:[20,121],avalanch:100,avenu:106,averag:[25,77,140,143,150],avl:100,avoid:[0,2,4,5,6,9,11,12,13,49,57,58,59,60,62,69,73,75,77,78,83,100,102,103,105,107,109,111,112,113,116,118,121,124,125,135,142,144,152],avx1:121,avx2:121,avx512:[75,104],avx512bitalg:104,avx512vbmi2:104,avx512vnni:104,avx:[75,104,121,123],awai:[7,15,16,44,46,58,69,75,78,98,100,102,109,125,132,136,146],awaken:51,awar:[2,3,11,12,13,15,16,43,44,49,59,60,74,100,102,109,112],awkward:[15,43,59],axi:123,axpi:44,ayal:103,b0000:0,b13e8756b13a00cf168300179061fb4b91fefb:77,b32:84,b_ctor_bas:16,bach:113,back:[0,3,9,11,13,15,23,28,46,49,51,56,58,59,60,65,67,68,75,77,80,97,100,102,104,108,109,111,112,115,118,121,129,130,131,132,133,134,135,138,139,140,141,142,143,144,149,150,152],backedg:[7,98,112,140,141,150,151],backend:[3,8,9,17,22,27,42,44,45,51,52,56,57,60,62,64,70,73,75,80,100,104,107,109,111,112,120,130,154],background:[12,14,100,110,114,127,132],backport:67,backslash:77,backtrac:[13,144],backup:63,backward:[6,43,58,71,100,112,122,123],bad:[9,15,17,75,83,100,105,109,113,129,141,144,151],badfileformat:100,badli:[56,100],baeslayert:132,bag:57,bail:126,bake:62,balanc:[1,3,49],bam:15,ban:106,bandwidth:75,bang:117,bangoper:117,bank_mask:0,banner:100,bar:[11,12,13,15,16,20,37,43,44,46,47,53,54,73,75,84,100,109,112,117,121,122,123,129,138,140,148,150],bar_in_b_cc:8,bar_map:15,bare:[27,66,75,100,111,124,131],baremet:66,baremetalarm:66,barlist:15,barrier0:75,barrier:[3,112],bart:0,base2:75,base:[0,1,2,6,8,9,10,11,12,14,20,21,23,25,26,28,36,37,38,43,46,47,49,50,51,53,57,58,60,62,65,66,67,68,70,72,73,75,76,77,79,80,82,83,84,85,99,101,102,103,105,106,107,109,113,114,116,117,118,120,121,123,124,125,126,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],base_offset:112,baseclasslist:117,baseclasslistn:117,baseinstrinfo:114,baselay:132,baselayert:132,baselin:[13,68],basemulticlasslist:117,basenam:109,baseopcod:[72,124],basereg:13,baseregisterinfo:114,baseti:75,basety1:75,basety2:75,basetyp:75,bash:[50,110,113],basi:[0,25,43,50,58,75,82,85,100,102,103,112,136,141,146,151],basic:[3,7,12,13,15,21,23,25,28,29,43,44,46,47,49,51,54,57,58,59,60,61,62,68,70,71,76,82,84,96,101,103,109,110,111,112,113,115,117,120,123,126,127,132,138,139,140,141,142,143,144,145,148,149,150,151,152,153],basic_:116,basic_block:148,basic_p:116,basic_r:116,basic_ss:116,basicaa:125,basicaliasanalysi:[2,98,125,144],basicblock:[15,60,82,85,98,103,125,138,139,140,141,142,143,144,150],basicblocklisttyp:100,basicblockpass:85,basicblockutil:100,basictyp:75,batch:61,battl:36,baz:[12,15,37,43,100,109,117,122,123,140,150],baz_in_c_cc:8,bb0_1:84,bb0_26:84,bb0_28:84,bb0_29:84,bb0_2:84,bb0_30:84,bb0_4:84,bb0_5:84,bb1:[6,75],bb2:[6,75],bb3:75,bbrefer:80,bcanalyz:[6,19],bcc:124,bcpl:117,bcreader:27,bdce:76,bdist_egg:120,beanz:102,bear:16,beat:62,beauti:[136,138,141,146,148,151],becaus:[1,2,3,5,6,8,9,12,13,15,16,20,23,35,36,43,44,47,49,50,51,54,55,56,57,58,59,60,61,62,67,68,69,71,72,73,75,77,78,79,80,82,83,85,98,99,100,102,109,111,113,116,118,120,122,123,124,125,129,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],becom:[0,5,12,13,15,31,43,44,49,56,59,62,65,69,75,98,100,111,118,121,123,124,125,126,132,137,140,142,147,150,152],been:[0,3,5,9,10,11,12,13,15,16,17,20,23,25,41,43,44,48,49,51,52,54,56,58,59,60,61,62,68,75,77,79,83,84,85,88,91,93,96,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,115,116,117,118,124,125,127,129,131,132,133,134,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,153],befor:[0,2,3,5,9,10,11,12,13,16,22,23,36,40,41,43,44,46,49,50,51,52,54,55,56,58,59,60,61,62,67,68,69,70,73,75,79,80,82,83,84,85,98,100,103,105,109,111,112,114,116,120,121,123,124,125,126,127,128,129,131,132,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],began:102,begin:[0,2,6,11,13,15,16,23,29,43,49,51,56,58,60,61,68,69,75,76,79,82,83,84,88,92,100,107,109,111,113,117,121,124,126,128,129,131,132,140,142,143,144,147,148,149,150,151,152],beginassembl:58,behalf:[49,99],behav:[2,3,12,15,28,44,46,49,51,55,70,75,130,131,132,133],behavior:[3,12,13,14,15,16,17,20,29,43,44,46,49,51,52,54,56,58,70,75,77,85,98,100,106,123,124,125,132,137,140,142,147,150,152],behaviour:[5,15,43,75,80,121,123],behind:[13,15,16,49,70,71,72,75,84,100,112,125,130,131],being:[0,2,3,5,6,9,10,11,12,13,14,15,16,17,20,23,25,29,30,43,44,49,51,52,55,59,60,62,65,68,69,70,71,73,74,75,77,79,82,83,84,85,88,96,98,100,102,104,106,107,109,111,112,113,114,115,116,118,121,123,124,125,126,127,128,129,131,132,133,134,135,137,138,140,141,142,144,145,148,150,151,152,153],belevich:44,belief:14,believ:[14,15,49,75,85,100,106,139,140,141,149,150,151],belong:[43,46,51,75,83,100,107,122,128,142],below:[1,2,3,6,8,11,12,13,15,16,21,23,32,37,43,44,47,49,56,60,61,65,67,68,69,73,74,75,80,82,83,84,85,88,93,98,99,100,101,102,103,105,107,108,109,111,112,114,120,121,122,123,124,125,126,127,128,129,131,132,134,135,137,139,140,141,142,143,144,147,149,151,152],benchmark:[44,49,60,68,100,101,105,109,120,121,123],benchspec:120,benderski:44,benefici:[46,62,123],benefit:[2,15,56,58,59,77,98,100,101,107,109,131,132,133,134,139,143],benign:[100,120],benjamin:58,bernstein:109,besid:[15,43,75,102,106,121,124,137,141,147,151],bespok:58,best:[2,5,12,13,15,22,49,51,54,58,62,70,75,98,100,103,109,111,136,137,147,153],better:[3,13,15,16,48,49,51,62,65,70,75,76,77,82,83,98,100,102,120,123,125,127,130,131,132,137,140,142,145,147,150,152,153],between:[0,2,3,5,6,12,13,15,16,21,29,36,37,43,47,49,50,51,52,54,58,60,62,66,68,72,73,75,76,77,79,81,82,83,84,88,91,98,99,104,105,107,109,111,112,113,114,116,117,120,124,126,128,129,130,136,139,140,146,149,150],bewar:58,beyond:[0,12,13,42,51,56,59,75,81,82,100,110,118],bfd:63,bff:100,bfi:75,bia:4,bidirect:100,big:[4,13,15,22,49,56,65,75,100,105,121,124,128,130,138,141,142,148,151,152],bigblock:22,bigger:[15,46,129],biggest:[13,73],bikesh:69,bin:[1,17,28,43,50,57,60,61,63,65,66,67,101,102,105,118,121,124,127],binari:[0,3,6,8,9,10,11,13,15,24,27,28,30,32,34,36,37,40,41,43,44,45,47,49,50,53,57,58,60,61,63,67,77,79,83,84,88,91,97,98,100,105,107,109,114,116,124,126,127,128,136,138,139,140,142,143,144,145,146,148,149,150,152,153,155],binary_nam:40,binary_preced:[151,152],binaryexprast:[137,138,139,140,141,142,143,144],binaryoper:[15,100],binarypreced:[141,142,143,144],bind:[15,54,75,116,117,124,129,130,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],bindex:124,bindir:27,binfmt:60,binfmt_misc:60,bininteg:117,binloc:144,binop:[75,137,138,139,140,141,142,143,144,147,148,149,150,151,152],binop_preced:[147,148,149,150,151,152],binoppreced:[137,138,139,140,141,142,143,144],binopprototyp:[151,152],binoprh:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],binpath:48,binutil:[11,45,50,60,63,64,67],bisect:[100,130],bisect_script:102,bison:120,bit:[0,1,3,5,8,11,12,13,16,23,25,44,45,46,47,49,51,52,53,57,58,59,60,61,62,64,69,71,73,76,77,80,83,84,88,93,104,105,107,109,111,112,114,116,117,118,122,124,125,128,129,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],bitbucket:102,bitcast:[2,5,16,46,51,58,59,62,83,98,122,124],bitcod:[9,13,17,19,21,23,24,27,29,30,32,33,41,49,52,60,61,63,70,75,83,84,98,100,125,130],bitcoderead:52,bitcodewrit:[52,100],bite:54,bitfield:[3,88,92,128],bitmap:6,bitmask:75,bitpack:121,bitpattern:75,bitread:74,bitset:[77,122,124,129],bitsetcas:129,bitstreamwrit:52,bitvector:104,bitwidth:[6,75,83,112],bitwis:[13,98],bjark:44,bjarn:100,black:126,blah:[15,43,77],blame:[14,99,102],blank:[15,23,49,99,110,136,137,145,146,147,153],blarg:100,blatent:[142,152],bleed:[12,130],blind:13,blissfulli:[43,44],bloat:15,blob:[6,75,105],block:[2,8,12,13,16,22,25,26,28,29,31,36,37,46,49,51,56,58,62,68,73,76,77,82,83,84,91,96,103,105,108,109,110,111,114,116,122,123,124,125,130,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],block_begin:[148,149,150,151,152],block_par:[150,151,152],blockaddress:75,blockdim:84,blocker:[68,105],blockfrequencyinfo:[7,130],blockid:6,blockidx:84,blocklen:6,blocklen_32:6,blockmapaddr:92,blocknam:6,blockscalartrait:129,blocksiz:92,blocksizei:84,blocksizex:84,blocksizez:84,blog:102,bloom:13,blow:77,blr:53,blunt:127,blx:53,board:[49,65,67,106],boat:15,bob:129,bodi:[6,9,15,16,43,46,49,51,75,77,80,83,100,108,112,116,118,124,125,127,131,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],body_v:152,bodyexpr:[140,141,142,143,144,152],bodyitem:117,bodylist:117,bodysequ:128,bodyv:[142,143,144],boehm:58,bof:102,bogner:62,bogu:[125,143],boil:[5,49,69,102,140,141,150,151],boiler:[43,100],boilerpl:[43,58,69,114,149],bold:110,bonair:0,bone:[111,124,131],book:[15,76,100,102,125,130],bookkeep:[98,100],bool:[2,3,11,13,15,43,46,52,62,69,75,77,83,85,100,124,125,126,127,129,132,138,139,140,141,142,143,144,148,149,150,151,152],boolean_property_nam:74,boolordefault:43,booltmp:[138,139,140,141,142,143,144,148,149,150,151,152],boost:4,bootstrap:60,bootstrap_:50,borderlin:15,bore:125,boringssl:77,bork:[43,116],borrow:[75,100],bot:[1,15,49,102,130],both:[0,1,2,3,6,8,9,11,12,13,14,15,16,20,23,28,33,36,37,43,44,45,47,49,50,51,54,56,57,58,59,62,67,68,69,75,77,79,83,92,93,97,98,100,102,103,106,108,109,111,112,114,116,117,118,121,123,124,125,126,127,129,131,132,137,138,139,140,142,144,145,147,148,149,150,152,153],bother:[132,142,152],bottom:[7,22,43,62,75,76,83,98,99,113,123,124,125,132,150],bou_fals:43,bou_tru:43,bou_unset:43,bougacha:62,bound:[58,73,75,80,84,100,112,116,124,129],bound_ctrl:0,boundari:[3,5,6,10,13,46,75,98,100,139],bourn:[43,54,60],box:[13,99,104,109,126],bpf:[13,60,77],bpf_add:13,bpf_alu64:13,bpf_alu:13,bpf_and:13,bpf_arsh:13,bpf_b:13,bpf_call:13,bpf_class:13,bpf_div:13,bpf_dw:13,bpf_end:13,bpf_exit:13,bpf_h:13,bpf_imm:13,bpf_ja:13,bpf_jeq:13,bpf_jge:13,bpf_jgt:13,bpf_jmp:13,bpf_jne:13,bpf_jset:13,bpf_jsge:13,bpf_jsgt:13,bpf_k:13,bpf_ld:13,bpf_ldx:13,bpf_lsh:13,bpf_mem:13,bpf_mod:13,bpf_mov:13,bpf_mul:13,bpf_neg:13,bpf_op:13,bpf_or:13,bpf_rsh:13,bpf_st:13,bpf_stx:13,bpf_sub:13,bpf_w:13,bpf_x:13,bpf_xadd:13,bpf_xor:13,bpl:118,br_cc:62,bra:84,brace:[16,51,75,100,116,121],bracket:[15,44,49,51,74,75,80,109,129],brain:15,branch:[10,11,13,15,28,45,46,49,50,51,54,55,56,58,60,75,80,85,99,100,103,104,112,122,130,140,141,142,143,144,150,151,152],branch_weight:[7,8],branchfold:124,brand:125,brave:[137,147],breadth:[22,136,146],breakag:[49,102],breakcriticaledg:125,breakpoint:[0,9,48,136,144],brendan:127,breviti:[5,84],brew:100,brian:103,brick:83,bridg:[62,102,104],brief:[2,11,12,15,36,43,58,60,70,83],briefli:[47,83,125],brig:0,bring:[15,56,58,77,100,102,112,131,145,153],broad:[43,49,58,100,136,139,146,149],broadcast:[75,76],broadli:62,broadwel:104,broken:[5,20,49,54,64,75,100,102,112,116,121,124,125,130],brought:83,brows:[11,57,99,102,138,148],browsabl:11,browser:[99,127,130],brtarget8:124,brtarget:124,bruce:100,bsd4:23,bsd:[23,35,49,60],bss:[0,22,53],bswap:52,bucket:[36,100,109],bucket_count:109,buffer:[0,10,51,75,78,88,100,109,126,128,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],buffer_atomic_inc:0,buffer_load:0,buffer_load_dword:0,buffer_s:128,buffer_store_dwordx4:0,buffer_store_format_xi:0,buffer_wbinvl1:0,buffer_wbinvl1_vol:0,bug:[9,10,12,13,14,15,16,17,32,49,56,60,67,68,75,76,77,80,83,99,100,102,104,116,117,118,120,121,130,138,142,145,148,152,153],buggi:70,bugpoint:[19,32,49,60,70,85,125,130],bugzilla:[49,57,68,77,102,105,112,121,130],bui:65,buid:46,build:[2,6,12,13,15,19,20,23,27,28,41,43,44,46,48,49,51,58,60,61,62,75,78,85,88,97,98,103,104,105,107,114,115,116,118,120,121,122,124,126,130,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],build_add:[148,149,150,151,152],build_alloca:152,build_arch:101,build_br:[150,151,152],build_cal:[148,149,150,151,152],build_cond_br:[150,151,152],build_config:61,build_dir:102,build_docker_imag:50,build_fadd:148,build_fcmp:[148,149,150,151,152],build_fmul:148,build_for_websit:68,build_fsub:148,build_load:152,build_mod:61,build_mul:[148,149,150,151,152],build_phi:[150,151,152],build_ret:[148,149,150,151,152],build_shared_lib:11,build_stor:152,build_sub:[148,149,150,151,152],build_uitofp:[148,149,150,151,152],buildattribut:66,buildbot:[20,49,57,68,102,121,130],builddir:64,builder:[60,71,100,130,133,137,138,139,140,141,142,143,144,147,148,149,150,151,152],builder_at:152,buildmi:13,buildmod:121,buildmodul:131,buildnumb:88,buildslav:64,buildtool:74,built:[1,6,11,26,27,28,36,43,49,50,51,56,57,59,60,61,62,63,64,66,67,68,69,74,75,76,77,82,88,96,98,100,101,102,103,104,107,109,118,120,121,124,127,128,131,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],builtin:[3,6,20,26,75,84,100,102,125,130,141,142,143,144,147,151,152],bulk:[13,49,100,142,152],bulki:0,bullet:[54,69],bump:[58,100,108],bunch:[1,12,54,100,120,136,139,141,146,149,151],bundl:[18,31,46],bunzip2:60,bur:76,burden:[49,75,82],burg:76,buri:15,burn:65,burr:22,busi:49,busiest:99,button:99,bypass:[0,44,75,134,135],byproduct:62,byte_0:0,byte_1:0,byte_2:0,byte_n:0,bytecod:[6,10],byteswap:52,byval:[6,13,75],byvalu:0,bz2:60,bzip2:60,c11:[3,44,88,91,109],c11bytes:[88,91],c11lineinfo:91,c11size:91,c13:[36,88,91],c13bytes:[88,91],c13lineinfo:91,c13size:91,c1x:75,c99:75,c_ctor_bas:16,c_str:[43,84,100,136,137,138,139,140,141,142,143,144],cach:[0,1,2,3,12,13,62,65,66,75,79,98,100,107,109,111,125,144],caico:0,calcul:[0,2,7,13,59,75,76,98,100,109,120,121,124,125,140,150],call2:16,call32m:116,call32r:116,call64pcrel32:80,call:[0,1,3,5,6,7,8,9,10,11,12,16,20,22,23,25,28,37,43,44,45,46,47,48,50,51,52,53,55,56,58,60,62,71,74,76,77,78,79,81,82,83,84,85,93,97,99,101,102,103,104,108,109,111,112,113,114,116,117,118,120,121,122,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],call_branch_weight:8,call_site_num:51,callabl:[15,75,84,138,148],callahan:103,callback:[2,13,46,58,77,100,111,124,131,133,135,154],callbackvh:100,callcount:100,calle:[5,13,44,54,77,83,98,111,112,116,122,124,125,137,138,139,140,141,142,143,144,148,149,150,151,152],calledcount:9,calleef:[138,139,140,141,142,143,144],caller:[5,9,13,44,46,51,54,58,75,77,83,98,100,108,124,125,140,141,148,150,151],caller_pc:77,callexprast:[137,138,139,140,141,142,143,144],callgraphscc:[85,125],callgraphsccpass:85,callingconv:[6,124],callinst:100,callloweringinfo:127,callon:100,callpcrel32:116,callq:[108,111,112],callseq_end:112,callseq_start:112,callsit:[8,75,111,112],calltmp1:[138,140,148,150],calltmp2:[139,149],calltmp6:[142,152],calltmp:[138,139,140,141,142,143,144,148,149,150,151,152],calltwo:100,callvoidvoid:135,calm:[142,152],came:[1,35,51,140,145,150,153],camel:15,caml:[146,147],camlp4:[146,147],camlp4of:[147,148,149,150,151,152],can:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,20,21,22,23,25,26,27,28,29,30,31,33,36,37,39,40,41,42,43,44,46,47,48,49,50,51,52,53,55,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,92,93,96,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],canadian:60,canari:75,cancel:51,canconstantfoldcallto:52,candid:[49,50,55,75,80,103,105],canfoldasload:118,canlosslesslybitcastto:83,cannot:[0,2,3,5,8,9,11,12,13,14,15,16,17,28,37,43,44,46,49,51,53,58,59,61,62,73,75,79,92,93,98,99,100,104,106,113,120,123,124,125,126,131,138,145,153],canon:[5,56,75,98,100,102,109,134,135],canonic:[13,16,100,125],canonicalis:5,canreserveresourc:13,cantfail:[131,132,133,134,135,139,140,141,142],cantfil:100,capabl:[2,13,43,44,45,52,60,75,78,82,84,93,100,124,125,138,139,141,142,145,148,149,151,152,153],capit:[15,49],capston:77,captur:[6,9,13,16,43,52,62,75,103,109,111,121,124,126,128,132,134,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],card:[65,112],care:[2,3,13,14,15,16,44,57,60,68,75,77,80,81,82,100,102,113,116,118,120,124,125,132,142,145,152,153],carefulli:[49,56,58,75,109,142,152],careless:15,caret:28,carri:[23,59,75,81,100,102,132],carrizo:0,case_branch_weight:8,cassert:[15,84,134,135,139,140,141,142,143],cast210:75,cast:[5,10,15,43,69,75,83,103,112,116,117,118,139,140,141,142,144,145,149,153],cast_or_nul:100,castinst:100,casual:49,cat:[40,43,58,60,77,121],catagor:98,catapult:126,catch3:51,catchpad:51,catchret:51,catchswitch:51,categor:[43,98,114,124],categori:[15,36,70,75,98,100,109,114,120,121,124,128],cater:114,caught:[15,51,75],caus:[0,2,3,5,9,11,13,15,16,17,18,20,22,23,25,28,29,33,41,43,49,52,53,54,58,60,62,63,70,75,77,79,85,98,100,101,102,104,112,113,121,122,123,125,129,137,138,140,141,142,144,147,152],caution:[3,60],caveat:[44,102,144],cayman:0,cbe:70,cbpf:13,cbtw:13,cbw:13,cc1:48,cc_sparc32:124,ccassigntoreg:124,ccassigntoregwithshadow:124,ccassigntostack:124,ccc:[6,75],ccdelegateto:124,ccif:124,ccifcc:124,ccifinreg:124,ccifnest:124,ccifnotvararg:124,cciftyp:124,ccinfo:[134,135],cclib:[151,152],ccmake:11,ccmgrorerr:135,cconv:75,ccpassbyv:124,ccpromotetotyp:124,cctype:[137,138,139,140,141,142,143,144],cdbg_user:0,cdecl:75,cedar:0,cee:100,ceil:[92,123],cell:124,center:[100,144],central:[51,109,113],centric:75,cerr:[84,127],certain:[0,2,5,13,16,20,23,43,46,47,52,53,58,60,75,77,80,92,93,97,100,111,112,116,125,127,139,141,142,143,149,152],certainli:[3,56,58,98,102,145,153],certifi:54,cfe:[49,60,68,99,102,103],cfg:[13,20,51,61,73,75,83,85,100,103,121,124,125,140,150],cfgsimplifi:100,cfi:[10,51,76,80],cfi_instruct:80,cfi_offset:80,cflag:[77,101],cfrac:120,cgft_objectfil:143,cgo:[44,103],cgroup:50,ch9:144,chain:[1,8,11,13,20,31,46,62,75,76,78,82,83,98,109,113,114,124,125,142,152],challeng:[15,62,112,141,151],chanc:[8,46,49,56,75,79,118,126,129,136,146],chandlerc:99,chang:[0,2,5,6,8,9,11,13,14,15,16,17,20,24,26,27,29,43,44,46,52,54,56,57,58,59,60,61,62,64,68,69,71,73,74,75,76,78,79,83,84,85,93,97,98,105,111,112,116,119,120,123,124,125,128,129,130,132,133,134,135,139,140,141,142,143,144,149,150,151,152],changebit:77,changebyt:77,changelog:77,channel:[0,14,104,130,135],chao:1,chapter:[83,130,136,145,146,153],chapuni:130,char6:6,charact:[0,13,20,23,28,35,43,47,75,80,81,100,109,114,116,117,121,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],character:75,characterist:[13,52,75,88,100,103,124,132,133,155],charg:13,charscalarti:75,chart:123,chase:70,chat:14,cheap:[3,15,49,100],cheaper:[55,62,100],cheapest:62,cheapli:82,cheat:133,check:[0,1,3,10,11,12,13,15,17,18,20,23,43,46,47,49,50,51,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,77,78,80,83,84,85,99,102,103,104,105,107,108,109,110,111,112,116,120,121,122,124,125,127,129,130,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],checkcudaerror:84,checkdebugifi:104,checker:[59,70,114],checkformat:100,checkout:[11,50,97,99,105,121],checkpoint:51,checksum:[75,77,107],checksumkind:75,chees:15,cheri:102,child:[51,69,75,100,141,151],childorerr:100,children:[31,69,100],chines:60,chip:[13,21,22,65,67,84,121,124],chmod:60,choic:[15,21,30,52,60,62,65,75,77,99,100,111,112,132,136,140,145,150,153],choos:[5,11,13,14,17,22,43,44,49,58,64,67,70,72,75,82,99,100,106,109,124,125,126,127,131,136,137,139,140,146,147,148,149,150],chop:109,chose:[46,105,149],chosen:[5,13,15,20,58,62,75,126],chri:[13,15,44,49,102,125,145,153],chrome:[126,127],chromium:68,chronolog:102,chunk:[5,6,13,15,36,77,98,108,109,148],cie:76,cimag:[141,151],cin:54,cindex:124,circl:69,circuit:[141,151],circular:126,circumst:[16,51,75,100,124,125,139,142,149,152],circumv:43,cis501:4,cis:4,citizen:100,claim:[3,128],clamp:0,clang:[0,3,8,10,11,15,16,20,21,28,47,48,49,50,51,54,56,59,61,63,66,69,70,74,75,76,77,78,84,85,96,99,100,101,102,104,105,107,109,118,121,122,123,126,127,130,131,132,133,134,135,137,138,139,140,141,142,143,144,149,152,153],clang_attr_arg_context_list:114,clang_attr_identifier_arg_list:114,clang_bootstrap_cmake_arg:1,clang_cc1:[16,121],clang_cl:121,clang_cpp:121,clang_enable_bootstrap:1,clangxx:121,clarif:[15,45,49,128],clarifi:109,clariti:[75,104,106,140,150],clase:100,clash:[15,75,134,135],classic:[13,100,104],classid:117,classif:[75,113],classifi:2,classnam:[42,88],classof:114,claus:[0,13,49,51,75,100],clean:[13,17,49,51,60,62,68,70,78,84,98,99,100,125,131],cleaner:[15,43,100],cleanli:[15,49,75,125],cleanup:[46,49,75,76,98,109,139,140,149,150],cleanuppad:[46,51],cleanupret:[46,51],clear:[15,16,41,49,58,59,73,74,75,88,92,100,102,112,137,138,139,140,141,142,143,144,147,148,149,150,151,152],clearer:15,cleargraphattr:100,clearli:[15,49,82,109,111],clearresourc:13,clenumv:43,clenumvaln:43,clever:[69,145,153],cleverli:5,click:[61,99],client:[6,11,13,15,26,43,49,58,69,74,79,81,100,102,109,111,122,124,125,130,131,132,135,139,142,149,152],clientaddr:135,clientaddrlen:135,clip:48,clobber:[2,80,116],clock:[75,125],clone:[20,60,63,100,103,114,125,142,152],close:[13,15,26,46,59,60,68,75,76,77,99,100,102,105,125,130,137,147],close_fd_mask:77,closer:[59,76],closest:[75,144],closur:[74,145,153],clr:[88,112],clrb:13,clrl:13,clrq:13,clrw:13,clutter:[15,49],cmake:[1,4,26,49,50,57,60,61,63,64,65,66,74,100,102,107,110,124,127,130],cmake_:12,cmake_build_typ:[11,12,60],cmake_c_compil:60,cmake_c_flag:[11,66],cmake_cflag:66,cmake_cxx_compil:60,cmake_cxx_flag:11,cmake_cxx_flags_releas:60,cmake_cxx_flags_relwithdebinfo:60,cmake_instal:11,cmake_install_prefix:[11,60,61,67],cmake_minimum_requir:[11,12],cmake_module_path:11,cmake_parse_argu:12,cmake_toolchain_fil:[11,60],cmake_try_compile_target:66,cmakecach:[11,12,127],cmakefil:[60,120],cmakelist:[11,12,26,60,66,124,125],cmakeparseargu:12,cmd:[4,99],cmp32ri8:13,cmp:[13,75,98,100],cmpb:53,cmpflag:83,cmpinst:[80,100],cmpnumber:83,cmpq:[53,108],cmptmp:[138,139,140,141,142,143,144,148,149,150,151,152],cmpxchg:3,co_await:46,coalesc:[13,22,29,62,100],coars:20,cocoa:75,code:[1,2,3,5,6,8,10,11,12,16,17,19,20,21,23,28,35,36,43,46,52,53,55,56,57,59,61,62,63,65,67,68,69,71,73,74,76,78,83,84,85,88,96,97,102,103,104,105,108,110,111,112,114,117,118,120,121,122,123,127,129,130,136,145,146,153,154],code_own:[49,99],codebas:[15,99],codeblock:58,codeemittergen:114,codegen:[0,13,16,17,44,46,52,55,56,58,60,62,75,78,80,84,104,114,121,124,125,130,134,135,138,139,140,141,142,143,144,148,149,150,151,152],codegen_expr:[148,149,150,151,152],codegen_func:[148,149,150,151,152],codegen_proto:[148,149,150,151,152],codegener:70,codegenopt:85,codegenschedmodel:124,codepath:[3,100],codeprop:0,coder:102,codes:[104,118],codeview:[36,88,93,104],codeviewdebug:109,codgen:148,codlay:133,coerc:83,coerce_offset0:16,coff:[6,13,45,61,75,88,93],cohen:113,coher:[0,74,75],coheren:0,col:144,cold:[6,7,56,75],coldcc:[6,75,112],colder:7,colfield:72,collabor:102,collaps:75,colleagu:14,collect2:63,collect:[2,7,8,11,15,28,31,56,71,76,77,78,79,98,100,102,103,111,116,120,123,127,130,136,146],collector:[6,54,76,112,145,153],collis:[15,75,100,102,109],colloqui:75,colombet:62,colon:[0,11,12,16,74,107,116,121,129],color:[13,28,36,46,100,103,127],colour:14,column:[0,15,16,47,60,72,75,109,120,123,129,144],columnend:47,columnstart:47,com:[4,15,33,49,60,68,77,99,100,102,107,126,154],com_fir:13,combin:[0,3,6,9,11,25,26,28,43,44,46,49,52,53,58,59,60,62,75,77,80,83,85,100,102,103,104,112,123,124,125,126,127,129,137,138,145,147,148,153],combine1:13,combine2:13,combinedalloc:107,comdat:[6,53],come:[0,6,11,12,13,14,15,17,23,28,46,49,52,58,59,60,72,73,75,80,82,83,84,88,96,100,101,109,116,121,125,126,129,131,133,136,138,139,140,142,145,146,148,149,150,152,153],comfort:[83,106],comma:[0,16,43,75,81,100,116,121,129,140,150],command:[0,1,2,4,9,11,13,15,16,17,20,21,22,23,24,25,30,31,32,33,34,35,36,38,40,41,42,44,48,50,57,60,61,62,63,64,68,70,71,74,75,77,78,85,100,102,105,111,112,114,118,120,121,124,125,127,130,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],commandlin:[20,130,135],commandlinepars:127,commasepar:43,comment:[0,13,16,26,49,58,69,74,75,82,83,98,99,100,104,114,117,118,121,129,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],commentstr:124,commerci:[49,112],commit:[15,56,60,64,68,76,92,110,112,121,130],committ:49,committe:[14,100],common:[1,2,3,5,6,12,13,15,23,35,43,44,46,49,51,52,54,56,57,58,59,62,69,74,75,76,77,79,82,83,88,98,101,102,103,104,107,109,110,111,112,113,115,116,118,124,125,128,129,130,131,137,139,140,141,142,145,147,149,150,151,152,153],commonli:[6,15,58,75,100,124],commun:[2,15,44,46,48,49,54,56,75,76,79,84,100,102,106,111,113,125,135],commut:[2,13,98,124],compact:[13,25,46,51,58,100,111,144,145,153],compactli:[46,116],compani:49,compar:[1,2,3,7,8,13,16,29,31,36,51,62,72,75,77,98,100,101,103,105,109,116,120,121,123,129,137,140,141,142,143,144,147,150,151,152],comparefp:116,comparison:[3,8,53,56,59,62,69,75,98,100,104,105,112,123,133,137,141,147,151],compat:[0,3,5,6,11,12,13,19,22,23,28,36,43,44,46,51,52,53,57,58,60,61,68,71,73,75,84,98,100,109,111,112,121,122,130,145,153],compatible_class:13,compet:0,compil:[0,1,2,3,5,6,9,10,12,13,16,17,19,22,28,31,35,36,37,43,46,47,49,50,51,52,56,57,58,59,61,62,64,65,68,74,76,77,78,82,83,84,85,88,96,98,100,101,102,103,105,107,109,111,112,113,114,118,120,121,123,124,125,126,127,128,130,131,132,135,136,137,138,140,141,142,145,146,147,148,150,151,152,153,154],compiland:[36,88,91,96],compile_tim:120,compilecallback:[134,135],compilecallbackmanag:[133,134],compilecallbackmgr:[134,135],compilelay:[131,132,133,134,135],compilemodul:127,compileondemand:[133,134],compileondemandlay:133,compiler_rt:49,compiler_rt_test_compiler_cflag:66,compileutil:[131,132,133,134,135],complain:[60,61,63],complaint:[145,153],complement:[59,75,100],complet:[0,2,6,7,11,12,13,15,17,19,20,28,31,41,43,46,49,51,58,61,62,64,66,68,75,76,77,78,79,82,83,84,98,100,102,103,104,106,109,112,113,116,121,124,125,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],complex:[12,13,15,52,58,62,68,77,83,85,98,109,113,115,118,123,124,125,132,137,139,141,142,144,145,147,149,151,152,153],complexpattern:[13,124],complextyp:155,compliant:[0,44],complic:[1,3,11,12,15,51,52,58,60,61,66,69,73,75,102,103,121,122,123,124],compon:[11,12,26,28,39,48,49,50,57,58,60,61,68,70,75,76,79,84,98,100,101,111,120,124,126,128,130,131],component_0:74,component_1:74,compos:[23,47,61,75,80,128,131,132],composit:[75,100,103],compound:47,comprehens:[60,98,121],compress:[6,11,25,60,77,100],compris:[0,103],compriz:25,compromis:[75,100],compuat:76,comput:[0,2,7,9,13,15,25,44,47,54,56,64,75,76,77,88,98,100,103,104,107,111,112,124,125,136,138,139,140,141,142,143,144,145,146,148,149,150,151,152,153],computation:76,compute_20:84,compute_factori:48,compute_pgm_rsrc1_sgpr:0,compute_pgm_rsrc1_vgpr:0,compute_pgm_rsrc2_user_sgpr:0,compute_xx:[44,84],computearea:69,computeknownbit:62,computepgmrsrc1:0,computepgmrsrc2:0,con:[5,117],concaten:[5,6,60,62,75,116,117,121],concentr:66,concept:[5,6,13,15,56,59,62,69,75,83,84,100,104,109,112,113,115,130,131,132,138,140,148,150],conceptu:[5,13,15,16,43,51,59,75,100],concern:[49,58,59,74,75,112,132],concis:[13,15,43,49,59],conclud:[75,140,141,150,151],conclus:[83,133,136,144,146,152,154],concret:[6,13,43,68,75,82,100,109,112,116,118,124,125,139,149],concurr:[0,11,58,100,104,130],cond:[7,46,54,75,82,124,140,141,142,143,144,150,151,152],cond_fals:[142,152],cond_next:[142,152],cond_tru:[142,152],cond_val:[150,151,152],condbr:62,condbranch:124,condit:[3,8,10,11,12,13,15,28,43,46,51,54,56,59,60,62,75,76,78,83,84,85,100,112,113,124,125,136,137,138,140,141,142,143,144,146,147,148,150,151,152],condition:[12,20,58],condmovfp:116,conduct:[49,130],condv:[140,141,142,143,144],confer:[13,58],confid:49,confidenti:[49,106],config:[1,11,19,20,26,49,57,60,61,64,66,74,100,101,102,113,121,124,131,132,133,134,135,138,139,140,141,142,143,144,148],configmaxtest:100,configur:[0,11,13,15,16,49,61,62,63,66,68,74,75,77,84,97,99,100,101,102,105,107,112,113,121,123,124,125,127,128,129,130,131,132],confirm:[15,77],conflict:[0,13,49,60,75,82,100,102,116,118,121,148,149,150,151,152],conform:[0,10,15,20,21,49,54,58,60,68,75,100,129,132,133],confront:[56,59],confus:[15,23,49,51,59,75,83,100,103,124],confusingli:3,congruenc:76,conjunct:[11,16,26,36,37,75,105,113,116],connect:[64,76,98,99,100,103,131,135],consecut:[0,5,16,75,103,107,109,117,122,123,125],consensu:49,consequ:[2,3,9,14,44,51,60,75,77,100,111,121],conserv:[0,2,3,7,15,58,68,75,78,111,112,125],consid:[0,2,5,6,7,13,14,15,16,17,35,43,44,46,47,48,49,51,54,55,58,59,62,65,69,72,73,75,76,82,83,98,100,105,106,109,111,112,113,116,117,118,121,122,123,125,132,136,137,140,142,144,145,146,147,150,152,153],consider:[13,14,60,77,112,113,115,118,129],consist:[0,2,3,6,12,13,16,20,25,35,43,47,49,51,56,57,58,59,62,68,71,74,75,77,80,83,85,100,102,109,112,116,117,118,120,122,124,125,126,132,138,139,140,141,142,143,144,148,149,150,151,152],consol:[13,77,110,126,130,139,149],const0:6,const_arg_iter:100,const_float:[148,149,150,151,152],const_global_iter:100,const_iter:100,const_nul:[150,151,152],const_op_iter:100,const_use_iter:100,constant:[0,2,3,6,13,15,25,36,43,44,46,47,52,54,56,58,60,76,83,84,85,103,111,112,122,124,125,127,128,134,135,138,140,141,142,143,144,148],constant_tsc:128,constantarrai:100,constantfold:52,constantfoldcal:52,constantfp:[100,138,139,140,141,142,143,144,148],constantindex:111,constantint:[15,75,80,100],constantli:60,constantpoolsect:124,constantstruct:100,constdata:80,constexpr:44,constindex:111,constitu:[51,140,150],constitut:[5,6,62,100,106,121],constprop:[43,100],constrain:[0,51,54,60,62,97,116,138,148],constraint:[13,41,49,51,52,82,98,100,102,103,104,109,112,118,124,125],constrast:2,construct:[0,2,3,6,10,12,14,15,23,43,46,51,52,58,62,72,73,75,80,100,103,109,110,112,114,116,117,122,124,125,127,129,131,133,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],constructor:[3,13,43,44,46,54,69,71,73,75,79,124,125,129,131,132,133,140],constval:100,consult:[11,23,60,61,76,82,88,125,130],consum:[25,26,36,43,46,51,59,61,65,75,77,81,88,91,92,96,111,114,137,138,139,140,141,142,143,144,147,148,149,150,151,152],consumeerror:100,consumpt:[13,77,125],cont6:51,cont:[46,51,73,75],contact:[14,49,64,68,77,104,106,125],contain:[0,1,2,3,5,6,7,8,9,11,12,13,15,16,18,20,21,23,24,28,33,35,37,40,42,43,44,46,47,48,49,50,51,53,56,58,59,60,61,62,63,64,65,66,67,68,69,70,72,74,75,76,78,79,80,82,83,84,85,88,91,92,98,101,102,103,104,105,107,109,111,112,114,116,117,118,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,137,138,139,140,141,142,144,147,148,149,150],containingtyp:75,containsfoo:15,content:[0,2,5,11,15,16,17,23,25,26,28,31,43,49,53,55,74,75,78,83,88,96,98,100,103,107,110,117,118,120,121,124,125,127,130,146,147,148,149,150,151,152],content_disposition_typ:49,contenti:[15,49],context:[2,3,15,43,51,54,56,59,64,69,75,76,81,83,84,99,100,106,114,116,117,118,121,125,128,131,137,142,144,147,148,149,150,151,152],contextu:128,contigu:[62,75,92,96,100,109,128],continu:[0,2,6,10,13,16,17,36,43,46,48,49,51,68,69,75,77,78,99,100,102,108,120,121,128,134,135,137,145,147,153],contract:[44,56,75,100,111,114],contradict:49,contrari:[13,75],contrast:[13,51,69,100,102,103,125,132,138,148],contrib:[36,60],contribut:[13,36,49,56,66,75,91,96,98,100,102,112,125,126,130,154],contributor:[1,11,12,49,102],contriv:[54,116],control:[0,3,9,11,13,15,20,21,22,29,46,49,50,51,52,55,56,60,61,62,73,75,76,77,78,79,84,98,100,102,103,104,108,109,111,112,121,122,123,124,125,126,130,131,136,137,138,139,141,142,143,144,145,146,147,148,149,151,152,153,154],conv:54,convei:[49,51,56,58,62,75],conveni:[13,15,20,43,46,47,49,62,69,75,82,84,98,100,101,102,104,116,121,126,131,139,140,141,145,150,151,153],convent:[6,12,15,45,46,51,62,69,83,100,109,110,111,112,114,138,144,148],converg:[6,75,151],convers:[13,15,43,55,56,100,104,116,127,129],convert:[0,3,5,13,19,20,28,30,43,52,55,56,59,71,83,84,98,100,114,116,117,124,125,126,127,129,136,138,139,140,141,142,143,144,145,146,148,149,150,151,152,153,155],converttoerrorcod:100,converv:0,cooki:[75,100],cool:[43,49,125,138,139,140,141,142,143,144,148,149,150,151,152],cooper:[58,63],coordin:[58,75,112,129],cope:[43,100],copi:[0,2,3,6,9,11,13,16,22,27,28,43,46,49,50,51,57,58,60,62,63,67,68,75,76,79,80,82,84,88,98,99,100,102,107,108,109,110,112,121,123,124,125,126],coprocessor:104,copyabl:100,copycost:[62,124],copyleft:49,copypart:77,copyphysreg:124,copyright:[54,125],core2:121,core:[2,4,11,12,49,51,52,60,64,65,67,74,75,77,85,102,112,114,118,121,125,131,132,133,134,135,138,139,140,141,142,144],corei7:[121,123],corner:111,cornerston:59,coroaddr:46,corollari:91,corospit:46,coroutin:130,corp:77,corpora:77,corpu:57,corpus1:77,corpus2:77,corpus_dir:77,correct:[0,2,3,5,11,13,15,43,44,46,49,52,56,60,63,64,67,68,70,75,76,85,93,98,100,104,105,108,109,112,113,120,121,123,125,126,139,149],correctli:[0,3,11,13,15,43,49,51,54,59,75,83,100,101,108,109,112,121,125,129,137,140,147,150],correl:[58,75],correspond:[0,3,5,6,9,11,13,15,16,21,27,28,29,40,43,46,47,49,51,52,53,54,58,59,60,61,69,70,72,75,76,80,82,83,84,88,91,93,98,99,100,109,112,117,118,121,122,124,125,128,129,137,138,140,144,147,148,150],corrupt:[23,51,77,107,145,153],cortex:[65,67,71],cortexa53model:124,cortexa57model:124,cos:[2,123,129,136,137,138,139,146,147,148,149],cosin:[75,124],cost:[13,15,62,72,75,76,78,83,97,100,102,103,123,124,145,153],costli:128,could:[0,2,3,9,11,12,13,15,16,20,43,46,49,50,54,55,56,57,58,59,60,62,63,64,67,69,71,72,73,75,82,85,92,98,99,100,102,107,109,110,111,112,113,115,116,121,124,128,129,131,132,133,137,138,139,140,142,143,145,147,149,150,152,153],couldn:[2,83,134,135,143],counsel:49,count:[0,9,16,23,28,37,43,47,51,52,58,71,77,88,100,102,103,109,111,120,124,127,128,137,147],counter:[0,1,3,8,9,37,75,77,85,128],counterpart:75,coupl:[3,49,56,75,78,99,100,112,116,125,126,140,141,144,145,150,151,153],cours:[2,11,43,52,62,77,83,85,100,125,132,136,137,145,146,147,153],courtesi:49,cout:[15,54,84,129,143],cov:[19,47,77],cover:[13,16,28,43,45,47,49,56,58,59,60,61,62,64,68,75,77,83,100,109,110,111,121,124,125,126,136,141,146,151],coverag:[10,11,19,49,57,62,104,127,130],coveragemappingdataforfunctionrecord0:47,coveragemappingdataforfunctionrecord1:47,cpi:80,cpp:[11,12,13,15,16,27,43,48,52,54,58,60,83,84,102,107,109,112,113,114,121,123,124,125,127,131,132,133,134,135,137,138,139,140,141,142,143,144],cppflag:101,cpprefer:100,cptmp0:124,cptmp1:124,cpu0:154,cpu1:129,cpu2:129,cpu:[0,3,4,6,13,18,20,21,22,31,44,62,65,66,67,71,75,77,83,104,124,125,127,128,129,132,134,135,143],cpu_id:128,cpu_powerpc:129,cpu_x86:129,cpu_x86_64:129,cpufreq:[4,65],cpufrequtil:65,cpuinfo:65,cpun:4,cpunam:[21,22],cpuset:4,cputyp:6,cpux:4,cr0:75,cr7:75,craft:100,crash:[15,17,22,58,60,77,98,100,102,104,111,145,153],crawl:58,crawler:58,crazi:[43,136,145,146,153],crazier:[140,150],crc32:107,crc:77,creal:[141,151],creat:[0,5,6,11,12,13,14,15,18,20,21,23,27,28,33,36,41,43,44,46,47,49,50,51,53,54,58,59,60,61,62,64,67,71,73,75,76,77,78,79,80,81,82,83,84,98,99,102,103,105,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,126,127,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],create_add:148,create_argument_alloca:152,create_entry_block_alloca:152,create_funct:[149,150,151,152],create_modul:[148,149,150,151,152],createalloca:[142,143,144],createasmstream:13,createbasicaliasanalysispass:144,createbasictyp:144,createbr:[140,141,142,143,144],createcal:[100,138,139,140,141,142,143,144],createcfgsimplificationpass:[132,133,134,135,139,140,141,142,144],createcompileunit:144,createcondbr:[140,141,142,143,144],createdatalayout:[131,132,133,134,135,139,140,141,142,143,144],createdefaultmypass:125,createentryblockalloca:[142,143,144],createexpress:144,createfadd:[138,139,140,141,142,143,144],createfcmpon:[140,141,142,143,144],createfcmpult:[138,139,140,141,142,143,144],createfil:144,createfmul:[138,139,140,141,142,143,144],createfsub:[138,139,140,141,142,143,144],createfunct:144,createfunctiontyp:144,creategvnpass:[132,133,134,135,139,140,141,142,144],createindirectstubsmanag:135,createinstructioncombiningpass:[132,133,134,135,139,140,141,142],createjit:79,createlambdaresolv:[131,132,133,134,135],createload:[142,143,144],createlocalcompilecallbackmanag:[133,134],createlocalindirectstubsmanagerbuild:[133,134],createmul:100,createmyregisteralloc:125,createparametervari:144,createphi:[140,141,142,143,144],createpromotememorytoregisterpass:[142,144],createreassociatepass:[132,133,134,135,139,140,141,142],createremotememorymanag:135,createret:[138,139,140,141,142,143,144],createstor:[142,143,144],createstub:[134,135],createsubroutinetyp:144,createtargetasminfo:124,createtargetmachin:143,createuitofp:[138,139,140,141,142,143,144],createvirtualregist:13,creation:[46,58,68,71,75,100,124],creator:[11,125],creatur:[136,141,146,151],credit:49,critedge1:84,criterion:107,critic:[2,12,15,22,56,58,68,105,125,137,147],cross:[1,17,36,62,65,75,83,96,100,102,103,104,130,143],crosscompil:[13,67],crucial:[75,99],cruel:110,crypt:49,crypto:77,cs1:[2,75],cs2:[2,75],cse:[3,52,76,85,139,149],cset:4,csk_md5:75,csk_none:75,csk_sha1:75,csr_64:80,cst:75,cst_code_integ:6,cst_code_wide_integ:6,cstdint:[135,139,140,141,142],cstdio:[135,137,138,139,140,141,142,143,144],cstdlib:[134,135,137,138,139,140,141,142,143],cstptr:75,cstring:135,csv:[120,126,127],cta:84,ctaid:84,ctfe:104,ctor:[15,54,73,75],ctpop:124,ctrl:[138,143],ctxt:129,ctype:88,cubic:77,cucontext:84,cuctxcreat:84,cuctxdestroi:84,cuda:[13,45,50,84,130],cuda_success:84,cudamodul:84,cudevic:84,cudevicecomputecap:84,cudeviceget:84,cudevicegetcount:84,cudevicegetnam:84,cudeviceptr:84,cufunct:84,cuinit:84,culaunchkernel:84,culinkst:84,cull:15,cultur:14,cumbersom:102,cumemalloc:84,cumemcpydtoh:84,cumemcpyhtod:84,cumemfre:84,cumodul:84,cumodulegetfunct:84,cumoduleloaddata:84,cumoduleloaddataex:84,cumoduleunload:84,cumul:[13,127],cuobjdump:44,cur_var:152,curesult:84,curiou:83,curli:[15,75,100,116,121],curloc:144,curop:124,curr:146,currenc:[13,49,139,149],current:[0,2,3,5,6,8,10,11,12,13,14,15,16,17,20,21,22,23,28,35,43,44,46,47,49,50,51,52,53,54,55,56,58,59,60,61,62,63,64,67,68,72,73,74,75,77,79,80,83,84,88,92,97,98,99,100,101,104,105,106,107,108,109,111,112,113,114,116,117,118,121,122,124,125,126,127,129,130,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],current_corpus_dir:77,current_valu:46,curs:[17,20],curtok:[137,138,139,140,141,142,143,144],curvar:[142,143,144,152],custom:[11,13,15,16,17,51,52,54,56,74,75,77,80,98,112,114,115,118,121,128,130,131,134],customalloc:46,customari:[43,49,75],customev:128,customeventunstructuredmemori:128,customfre:46,customis:[11,126],cut:[7,43,124,131],cute:[145,153],cv_cpu_type_:88,cv_signature_xx:91,cvdebugrecord:93,cvdump:36,cve:77,cvinfo:91,cvt:84,cxa_demangl:109,cxx0x:15,cxx:[60,63,67,105],cxx_fast_tl:75,cxx_fast_tlscc:[6,75],cxx_flag:65,cxx_statu:15,cxxflag:[27,131,132,133,134,135,138,139,140,141,142,143,144],cycl:[51,75,78,109,127],cycle_frequ:128,cyclic:60,cyclonemodel:124,cygwin:[13,60,61],cypress:0,cywritev3:124,d02:122,d10:124,d11:124,d12:[122,124],d13:124,d14:124,d15:124,d31:75,d_ctor_bas:16,dag:[42,76,100,102,112,114,116,117,118,121,124],dagarg:117,dagarglist:117,dagcombin:52,dagtodag:52,dagtodagisel:52,dai:[11,49,60,68,100,130,145,153],dan:129,danger:[16,75,100,106],dangl:[100,150],daniel:[62,109],darwin9:16,darwin:[13,40,55,75,111,144],dash:[43,57,129],data16bitsdirect:124,data32bitsdirect:124,data64bitsdirect:124,data:[0,1,2,3,4,5,9,12,15,19,26,28,35,36,38,43,46,51,52,53,55,56,57,58,59,76,77,78,79,80,88,92,96,102,103,104,109,111,112,116,118,124,125,127,132,138,139,142,143,144,149,150,151,152],databas:[75,96,129,130,145,153],datacrc:88,dataflow:[75,142,152],datalayout:[6,58,75,84,122,124,131,132,133,134,135,149,150,151,152],datalayoutpass:144,datastructur:[100,102],datatyp:[13,43,100,104,136,146],date:[2,9,10,23,60,61,67,68,82,88,99,104,105,116,140,150],daunt:11,david:103,dbaremetal_armv6m_sysroot:66,dbaremetal_armv7em_sysroot:66,dbaremetal_armv7m_sysroot:66,dbg:[9,75,100,124,144],dbgopt:109,dbgstreamarrai:88,dbi:[91,96],dbi_head:88,dbi_mfc_type_server_substream:88,dbistreamhead:88,dbistreamvers:88,dblty:144,dbn:60,dbootstrap_cmake_build_typ:50,dbuild_shared_lib:60,dbuilder:144,dbx:109,dce:[17,43,46,52],dced:100,dclang_bootstrap_target:50,dclang_enable_bootstrap:[1,50],dclang_enable_proto_fuzz:57,dclang_tablegen:67,dcmake_ar:66,dcmake_asm_flag:66,dcmake_build_typ:[50,60,65,127],dcmake_c_compil:66,dcmake_c_compiler_target:66,dcmake_c_flag:[65,66],dcmake_c_flags_releas:127,dcmake_crosscompil:67,dcmake_cxx_flag:[67,127],dcmake_cxx_link_flag:60,dcmake_exe_linker_flag:66,dcmake_install_prefix:[11,60,65,67],dcmake_nm:66,dcmake_osx_architectur:60,dcmake_ranlib:66,dcmake_toolchain_fil:60,dcmake_try_compile_target_typ:66,dcommit:[60,99,102],dcompiler_rt_baremetal_build:66,dcompiler_rt_build_builtin:66,dcompiler_rt_build_libfuzz:66,dcompiler_rt_build_profil:66,dcompiler_rt_build_sanit:66,dcompiler_rt_build_xrai:66,dcompiler_rt_default_target_onli:66,dcompiler_rt_emul:66,dcompiler_rt_include_test:66,dcompiler_rt_os_dir:66,dcompiler_rt_test_compil:66,dcompiler_rt_test_compiler_cflag:66,ddd:23,dead:[2,13,43,54,56,60,62,75,76,78,80,84,85,100,109,112],deadli:77,deadlin:49,deadtypeelim:100,deal:[3,5,6,14,15,49,51,55,62,69,98,100,102,103,109,114,126,132,142,152],dealloc:[58,75,100,107],deallocationtypemismatch:107,dealt:62,death:[57,77],deb:67,debat:15,debian8:50,debian:[60,66,67,97],debug:[0,9,11,13,15,17,20,21,27,28,29,32,35,36,40,41,43,47,49,51,53,58,60,61,68,70,75,76,78,80,83,91,93,96,97,101,104,111,112,118,124,125,130,136,142,143,145,146,152,153,154],debug_:0,debug_count:100,debug_info:[31,109],debug_level:43,debug_metadata_vers:144,debug_mod:0,debug_nam:109,debug_pubnam:109,debug_pubtyp:109,debug_s_crossscopeexport:36,debug_s_crossscopeimport:36,debug_s_inlineelin:36,debug_s_lin:36,debug_str:[16,109],debug_symbol:97,debug_with_typ:100,debugcount:100,debugflag:[43,100],debugg:[0,13,15,35,36,48,51,79,93,96,121,125,130,136,140,144,150,153],debugifi:104,debuginfo:[93,109,121,144],debuginfoforprofil:75,debuglev:43,debuglevel:43,debugloc:[13,144],debugtrap:0,decad:118,decent:[52,65,68,100,125,136,144],decid:[5,11,43,44,51,52,62,70,75,99,100,102,109,112,123,125,129,137,141,142,147,149,151,152],decim:[23,35,37,43,53,75,116,129],decimalinteg:117,decis:[5,9,13,14,15,49,51,56,62,77,100,103,106,112,123,132,139,149],decl:[69,118,138],declar:[2,6,13,15,16,43,44,46,52,54,69,73,74,75,83,84,100,111,112,113,114,116,118,122,124,125,132,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],declare_funct:[148,149,150,151,152],declcontext:69,declet:75,decltyp:[15,75,131,132,133,134,135],decod:[6,75,100,109,114,116,120],decompos:[49,52],decor:109,decoupl:116,decreas:[22,68,75,107],decrement:51,dedic:[13,62,68,102,124,131],deduc:[0,56,75,85,100,116,117],dedupl:88,deem:[52,68,70,75],deep:[15,69,98],deepcheck:100,deeper:[12,36,57,110,131],def:[13,35,46,52,62,72,76,80,82,103,104,116,118,124,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],default_branch_weight:8,defaultconfig:100,defaultdest:75,defaultlib:61,defens:49,defer:[79,83,131,132,133,139,149],deferrederr:100,defi:75,defici:[58,136,146],defin:[0,2,3,5,6,7,8,11,12,13,16,17,23,25,26,35,43,44,46,47,49,50,51,52,53,54,57,58,59,60,62,67,68,69,70,72,73,74,75,77,78,80,82,83,84,85,88,91,93,96,97,98,100,101,107,109,110,111,112,113,114,116,117,118,120,121,122,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,143,144,145,146,147,148,149,150,153,154],defini:72,definingaccess:82,definit:[0,3,5,6,8,12,13,16,18,29,35,36,42,43,46,52,58,62,68,70,72,74,75,78,80,82,83,98,100,104,107,109,112,114,117,118,122,124,125,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],defm:[116,118,124],degen:75,degener:[98,142,152],degrad:[49,58],degre:[3,50,56,64,123],delai:[83,100,104,106],deleg:[3,15,51,75],delet:[2,9,13,15,16,23,50,54,60,62,63,75,82,83,84,107,109,125,131,133,138,139,140,141,142,144,148,149,150,151,152],delete_funct:[148,149,150,151,152],deleteaninstruct:100,deletesizemismatch:107,deliber:[15,82,111],delimit:[12,51,60,75,81,117],delin:20,delta:[70,128],deltalinestart:47,delv:[49,139,149],demand:[0,6,13,60,102,131,142,152],demangl:[28,40,77,109],demo:[43,131,135,138,148],demonstr:[47,49,69,75,100,102,124,138,139,148,149],denomin:15,denorm:[44,75,129],denot:[6,13,58,60,75,129],dens:[0,6,75,100],densemapinfo:100,denser:[141,151],densiti:[15,141,151],deopt:[75,112],deoptim:112,dep:[149,150,151,152],depart:[15,23],departur:102,depend:[0,1,3,4,6,8,11,13,14,15,17,20,21,23,25,27,36,37,41,43,44,46,49,50,51,54,56,57,58,59,60,62,64,66,67,71,72,74,75,77,79,82,83,84,85,92,100,101,102,105,107,109,111,112,113,120,121,123,124,125,128,131,137,138,142,147,148,152],deplib:6,deploi:[50,99],deprec:[0,6,11,49,65,100,104,109,121,124,126],depriv:100,depth:[13,31,36,43,63,75,83,98,118,132,140,150],deref_bytes_nod:75,derefer:[12,59,75,100,109],dereferenc:[6,55,56,75,98,100],dereferenceable_byt:75,dereferenceable_or_nul:[6,75],deregisterehfram:135,deregisterehframesinprocess:135,deriv:[0,13,15,23,49,58,69,72,74,75,76,79,98,99,109,116,117,118,125,136,146],derivedtyp:[52,100,138,139,140,141,142,143],desc:[0,43,124,125,135],descend:[51,75],descent:[136,137,141,146,147,151],describ:[0,3,5,6,7,12,13,15,16,19,20,21,23,26,36,43,44,46,47,49,51,52,53,55,57,58,59,60,62,68,69,70,72,74,75,76,78,79,80,82,83,84,85,88,91,92,93,96,98,99,100,101,102,103,104,106,109,111,112,116,118,120,122,124,125,126,128,129,130,131,133,134,135,136,137,138,139,140,141,143,144,146,147,148,149,150,151,153],descript:[0,2,3,6,12,15,19,43,47,51,58,60,62,64,69,70,74,75,76,83,84,98,99,100,107,109,111,114,118,124,126,128,130,131,132,143,144,155],descriptor:[6,75,88,109,111,124,144],descritor:0,deseri:114,deserv:[56,75],design:[2,3,15,16,17,20,26,38,43,46,47,48,49,51,54,56,58,62,64,71,74,75,76,77,80,92,98,101,102,104,109,111,112,113,115,116,118,120,122,124,125,129,131,136,142,145,146,152,153],desir:[3,9,11,15,16,18,20,31,43,53,56,58,72,75,77,79,85,98,100,104,106,109,111,112,118,121,124,125,145,153],desktop:[97,121],despit:[3,13,43,75,102,109,112,115,116,118,125,128],dest1:75,dest2:75,dest:[75,143],destarglist:75,destin:[0,8,13,23,51,56,75,121,124,142,143,144,152],destreg:13,destroi:[13,51,54,62,73,75,100,124,129],destruct:[46,73,100,111,131,145,153],destructor:[15,44,46,51,54,75,100,125],detail:[2,3,7,9,11,12,13,14,20,23,31,36,37,43,44,46,49,50,51,54,57,58,59,60,61,64,70,74,75,76,77,78,83,84,85,88,92,98,100,101,106,107,112,113,114,124,125,126,127,129,130,131,132,133,134,135,136,138,141,142,145,146,148,151,152,153],detect:[0,11,16,20,28,29,37,67,75,77,83,99,100,103,107,109,121,123,128,139,149],detect_leak:77,detector:83,determin:[0,2,6,11,13,20,21,23,41,46,47,51,62,68,69,70,72,75,77,79,83,84,85,88,98,100,101,103,104,106,107,109,111,112,113,120,121,122,124,125,128,129,137,138,140,141,147,148,150,151],determinist:[1,2,9,13,15,77,100,114],detriment:15,dev:[3,15,21,22,49,52,56,58,67,99,100,102,103,109,112,116,117,121,125,127,130,143,145,153],devbuffera:84,devbufferb:84,devbufferc:84,devcount:84,devel:105,develop:[0,12,13,14,15,43,44,45,50,51,56,58,59,61,64,65,68,70,74,78,97,99,101,103,104,106,109,112,113,118,120,121,126,127,132,133,134,135,142,152,154],deviat:[13,15,53],devic:[0,4,24,30,32,34,41,65,84],device_fn:44,device_onli:44,devirtu:[75,122],devis:[101,132],devmajor:84,devminor:84,devmtg:102,devoid:13,dexonsmith:109,dext:104,dfa:[13,42,114],dfapacket:13,dform_1:13,dfpreg:124,dfpregsclass:124,dfpregsregclass:124,dfpregsregisterclass:124,dgpu:0,dia:[11,36],diagnos:[29,123,125],diagnost:[16,19,20,29,77,100,114,118],dialect:[75,81],diana:62,dibasictyp:109,dibuild:[109,144],dice:100,dicompileunit:[109,144],dict:77,dictat:[15,100,108],dictionari:[20,75],dictionary_fil:77,did:[2,15,46,51,57,62,69,75,83,100,125,132,139,141,142,145,149,151,152,153],didescriptor:109,didn:[13,15,44,56,57,75,83,100,109,125,138,142,147,148,152],die:[31,109,144],die_offset_bas:109,diexpress:109,dif:98,diff:[15,19,31,49,50,60,98,99,100,102,121],differ:[0,1,5,6,7,8,9,11,12,13,14,15,16,17,21,22,25,28,29,31,36,39,43,45,46,47,49,50,51,52,53,54,56,58,60,61,62,68,69,71,72,75,77,78,79,80,83,84,85,88,98,99,100,102,105,106,107,109,111,112,113,114,116,117,118,121,123,124,125,126,127,128,129,130,132,133,135,138,139,140,142,143,144,145,148,149,150,151,152,153],differenti:[53,74,99,113],difficult:[2,3,15,43,49,51,66,75,78,85,100,102,110,144,151],difil:[109,144],diflagartifici:75,diflagfwddecl:75,diflagprototyp:[75,109],diflagvector:75,difwddecl:75,dig:[116,136,146],digit:[35,43,75,100],diglobalvari:109,digress:[141,151],dil:[53,118],dilexicalblock:109,diloc:[16,104,109],dilocalvari:[109,144],dimens:[0,75],dimension:[59,84,141,151],dindex:124,dinkumwar:100,dinod:144,diploma:103,dir1:77,dir2:77,dir:[1,11,20,28,57,60,66,67,75,77,101,105,109,120],dir_to_mount:4,direct:[10,11,12,14,15,17,20,42,43,46,56,57,76,83,100,102,104,105,109,112,113,116,118,124,125,129,142,152],directli:[0,3,6,11,13,15,19,23,25,27,43,49,51,56,57,58,59,60,61,62,64,73,75,82,84,85,88,98,100,101,102,103,106,107,109,111,112,113,114,118,124,125,126,127,128,131,132,133,134,135,138,139,140,141,142,149,150,151,152],director:49,directori:[0,1,10,11,12,13,15,20,27,28,42,44,49,56,61,63,64,66,67,68,74,75,77,80,88,93,96,100,101,102,104,105,109,113,118,119,120,121,124,125,126,130,144],dirti:[15,88],dis:[19,24,25,35,60,61,121,142,152],disabl:[0,2,4,5,9,11,15,16,17,20,21,22,28,41,43,58,60,63,67,68,70,77,82,85,97,100,104,105,112,121,123,126,140,144,150],disable_assert:97,disableencod:118,disablelazycompil:100,disadvantag:[43,71,78,100,102],disagr:[14,62],disagre:[14,75],disallow:[43,59,74,75,111,112],disambigu:[2,56,82],disappear:[54,60,65],disassembl:[10,19,25,31,42,60,61,74,75,77,100,104,130],disassembleremitt:114,discard:[13,43,46,53,60,75,100,103],discharg:56,disclaim:[12,102],disclos:106,disclosur:[49,106],discontigu:92,discop:144,discourag:[15,43,100,106,113],discov:[13,20,46,58,68,77,109,113,140,142,150,152],discover:50,discoveri:0,discrimin:[13,15,69,75,128],discriminatori:14,discuss:[12,14,15,43,47,49,57,60,61,69,75,85,88,92,99,100,102,106,109,111,112,118,124,125,126,130,132,133,135,137,147],disjoint:[0,2,75,82,123],disk:[15,20,60,74,75,77,78,92,102,109,113,126,131],dislik:49,disp32:13,dispatch1:75,dispatch2:[51,75],dispatch:[51,75,100,111,137,147],dispel:59,displac:[13,75],displai:[12,13,14,15,18,20,25,28,31,35,36,37,38,43,47,49,64,69,81,98,120,124,136,146],disposit:49,disrupt:110,dist:100,distanc:[75,100,107,129,134,154],distil:121,distinct:[2,6,13,16,31,51,59,62,74,75,98,100,102,103,107,109,121,124,138,148],distinguish:[5,6,46,47,58,62,75,100,112,113,145,153],distract:49,distribut:[1,7,12,15,17,20,48,49,50,54,60,61,66,67,84,102,118,120,121,125,126,130,131,132,133,134,135],distro:67,disubprogram:[109,144],disubroutinetyp:[109,144],dityp:144,div:[13,100],divari:104,dive:[69,136,146],diverg:[59,75,85,141,151],divid:[0,7,13,16,20,25,44,52,75,96,98,113,120,121],dividend:[13,44,75],divis:[0,13,75,141,151],divisionbyzero:75,divisor:[44,75],django:[14,106],dlibfuzzer_en:77,dlibfuzzer_enable_test:77,dll:[6,51,88,121],dllc:121,dllexport:[6,75,139,140,141,142,143,144],dllimport:[6,75],dllstorageclass:[6,75],dllvm_binutils_incdir:63,dllvm_build_runtim:[57,60],dllvm_build_stat:4,dllvm_config_path:66,dllvm_default_target_tripl:67,dllvm_dir:11,dllvm_enable_assert:[60,65],dllvm_enable_backtrac:60,dllvm_enable_doxygen:11,dllvm_enable_doxygen_qt_help:11,dllvm_enable_p:67,dllvm_enable_project:[60,102],dllvm_enable_sphinx:60,dllvm_experimental_targets_to_build:124,dllvm_external_bar_source_dir:11,dllvm_external_foo_source_dir:11,dllvm_external_project:11,dllvm_include_exampl:60,dllvm_include_test:60,dllvm_libdir_suffix:11,dllvm_tablegen:67,dllvm_target_arch:67,dllvm_targets_to_build:[11,49,50,65,67],dllvm_use_link:11,dllvm_use_sanit:57,dllvm_use_sanitize_coverag:57,dloc:16,dlsym:[139,149],dmb:3,dmpqrtx:23,dname:43,do_on:46,do_safepoint:112,do_something_with_t:55,do_two:46,doc:[11,52,60,67,68,75,77,102,104,110,129,130,143],dockerfil:130,doclist:129,document:[2,3,5,6,7,11,12,13,14,19,43,44,47,49,50,51,52,53,58,59,60,61,62,64,65,66,67,69,70,72,74,75,76,77,78,79,80,82,84,97,98,100,102,104,105,106,109,110,111,112,113,114,116,117,118,119,120,121,122,124,125,126,127,128,138,139,144,149],documentlist:129,documentlisttrait:129,doe:[0,1,2,3,4,6,9,10,11,12,13,15,16,20,23,24,28,29,35,43,44,46,48,49,50,51,52,53,55,56,58,60,61,62,63,66,68,69,70,71,73,75,78,79,81,82,83,84,88,93,98,100,101,102,106,108,109,111,112,113,116,117,120,121,124,126,127,129,131,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],doesn:[2,3,5,8,9,12,13,14,15,16,20,23,43,44,47,49,50,51,54,56,58,59,62,63,68,69,70,75,80,82,100,102,111,112,113,115,116,121,125,127,129,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],dofin:124,dog:43,doing:[1,2,11,15,22,23,34,41,43,49,52,55,58,60,62,66,69,75,78,82,100,109,112,113,125,126,127,132,133,136,138,141,144,145,146,148,153],doiniti:[77,124,132,133,134,135,139,140,141,142,144],dollar:65,domain:[13,58,62,75,115,118,124,145,153],domin:[15,44,58,75,82,100,125,142,152],dominatorset:125,dominatortre:125,dominatortreebas:100,don:[2,11,12,13,14,16,18,20,22,36,43,44,47,49,50,56,58,60,62,65,68,69,70,75,77,82,83,84,97,98,99,100,102,105,106,109,110,112,120,121,123,125,128,131,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],done:[0,3,4,9,11,13,15,23,41,43,48,49,51,52,58,62,65,68,69,72,75,77,78,79,82,83,98,99,100,102,105,108,109,112,113,116,117,120,121,122,125,128,129,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],dooneiter:9,door:69,doorbel:0,dootherth:15,dopartialredundancyelimin:43,dorit:[103,123],dosometh:15,dosomethinginterestingwithmyapi:77,dot:[68,99,100,109,126,127],doubl:[0,6,13,16,43,44,45,61,62,69,75,80,83,98,100,104,107,116,124,129,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],double_typ:[148,149,150,151,152],doublescalarti:75,doubletyp:100,doubleword:75,doubli:[12,100,108],doubt:[69,110],dovetail:[142,152],down:[2,5,8,9,13,14,17,21,22,43,47,49,51,59,60,62,69,70,75,77,82,83,85,97,98,99,100,102,103,109,118,124,125,126,130,131,132,133,136,137,140,141,143,144,145,147,150,151,153],downcast:69,download:[11,50,61,63,64,67,68,100,104,105,121,124],download_prerequisit:60,downsid:[77,100,102],downstream:[7,29],downward:75,dox:14,doxgyen:11,doxygen:[11,60,61,100,130],dozen:[56,65,100],dpp:0,dpython_execut:65,draft:[3,14,60,106,109],drag:99,dragonegg:[13,49,130],dramat:[15,21,43,60,75,100,139,149],drastic:113,draw:102,drawback:[12,43,49,100,134],drive:[65,74,103,112],driven:[13,16,43,46,98,121,124,139,142,145,146,149,152,153],driver:[0,28,44,45,66,67,77,78,84,85,101,121,136,139,140,141,142,143,144,146,149,150,151,152],drop:[15,49,75,80,99,100],dropdown:99,drown:120,ds_add_u32:0,ds_atom:0,ds_cmpst_f32:0,ds_load:0,ds_min_rtn_f64:0,ds_store:0,ds_write_src2_b64:0,dsa:76,dsc:127,dse:[3,76],dsl:[115,118],dso:[3,10],dso_loc:[6,75],dso_path:21,dso_preempt:[6,75],dsp:104,dst:[13,72,116,118,124],dst_sel:0,dst_unus:0,dstindex:124,dsym:[18,31,40],dsymutil:[19,31],dtor:[54,75],dual:49,dubiou:23,duck:100,due:[0,2,8,10,13,16,44,46,48,50,51,55,56,58,60,65,70,75,76,78,83,93,100,102,104,105,112,117,122,128,133],dumb:[145,153],dummi:[13,54,80,98,116,121,124],dummy_main:57,dummytargetmachin:124,dump:[6,9,13,18,19,25,37,88,100,109,114,125,129,138,139,140,144,148,149,150],dump_modul:[148,149,150,151,152],dump_valu:[148,149,150,151,152],dumpabl:125,dumpattr:114,dumper:[37,109],dumpmymapdoc:129,duo:0,duplic:[2,12,13,15,23,43,46,49,53,56,75,76,78,83,96,100,109,112,114,118,131,137,147],durat:[2,13,125,126,128],dure:[0,7,8,11,12,13,37,43,44,46,49,50,51,52,55,56,58,60,62,68,72,75,77,78,83,85,88,100,102,103,104,105,109,111,112,120,121,124,129,130,138,148],dvariabl:11,dw_apple_property_assign:109,dw_apple_property_atom:109,dw_apple_property_class:109,dw_apple_property_copi:109,dw_apple_property_gett:109,dw_apple_property_nonatom:109,dw_apple_property_nul:109,dw_apple_property_null_resett:109,dw_apple_property_readonli:109,dw_apple_property_readwrit:109,dw_apple_property_retain:109,dw_apple_property_sett:109,dw_apple_property_strong:109,dw_apple_property_unsafe_unretain:109,dw_apple_property_weak:109,dw_at_align:109,dw_at_apple_properti:109,dw_at_apple_property_attribut:109,dw_at_apple_property_gett:109,dw_at_apple_property_sett:109,dw_at_artifici:109,dw_at_declar:109,dw_at_entry_pc:109,dw_at_high_pc:109,dw_at_loc:16,dw_at_low_pc:109,dw_at_mips_linkage_nam:109,dw_at_nam:[16,31,109],dw_at_rang:109,dw_ate_address:75,dw_ate_boolean:75,dw_ate_float:[75,144],dw_ate_sign:[75,109],dw_ate_signed_char:75,dw_ate_unsign:75,dw_ate_unsigned_char:75,dw_form_:109,dw_form_data1:109,dw_form_data2:109,dw_form_data4:109,dw_form_ref1:109,dw_form_ref2:109,dw_form_ref4:109,dw_form_ref8:109,dw_form_ref_udata:109,dw_form_sec_offset:16,dw_form_strp:[16,109],dw_form_xxx:109,dw_lang_c99:[75,109],dw_lang_c:144,dw_macinfo_defin:75,dw_macinfo_start_fil:75,dw_macinfo_undef:75,dw_op_addr:109,dw_op_bit_piec:75,dw_op_constu:75,dw_op_deref:75,dw_op_llvm_frag:75,dw_op_minu:75,dw_op_plu:[75,109],dw_op_plus_uconst:75,dw_op_stack_valu:75,dw_op_swap:75,dw_op_xderef:75,dw_tag:109,dw_tag_apple_properti:109,dw_tag_array_typ:[75,109],dw_tag_atomic_typ:[75,109],dw_tag_base_typ:[75,109],dw_tag_class_typ:[75,109],dw_tag_const_typ:[75,109],dw_tag_enumeration_typ:[75,109],dw_tag_file_typ:109,dw_tag_friend:75,dw_tag_gnu_template_param_pack:75,dw_tag_gnu_template_template_param:75,dw_tag_imported_modul:75,dw_tag_inherit:75,dw_tag_inlined_subroutin:109,dw_tag_interface_typ:109,dw_tag_label:109,dw_tag_memb:[75,109],dw_tag_namelist:109,dw_tag_namespac:109,dw_tag_packed_typ:109,dw_tag_pointer_typ:[75,109],dw_tag_ptr_to_member_typ:[75,109],dw_tag_reference_typ:[75,109],dw_tag_restrict_typ:[75,109],dw_tag_set_typ:109,dw_tag_shared_typ:109,dw_tag_string_typ:109,dw_tag_structure_typ:[75,109],dw_tag_subprogram:109,dw_tag_subrange_typ:109,dw_tag_subroutine_typ:109,dw_tag_template_value_paramet:75,dw_tag_typedef:[75,109],dw_tag_union_typ:[75,109],dw_tag_unspecified_typ:[75,109],dw_tag_vari:109,dw_tag_volatile_typ:[75,109],dw_tag_xxx:109,dw_virtuality_pure_virtu:75,dwarf2:144,dwarf:[13,19,47,48,51,58,75,76,78,100,111,124,153],dwarfdebug:109,dwarfdump:[16,18,19,109],dwarfnumb:124,dwarfregnum:124,dwell:138,dwoid:75,dword:0,dx10:0,dx10_clamp:0,dyld:79,dylib:[97,121,131,132,133,134,135],dyn:[0,38,46],dyn_cast:[15,69,114,124,130],dyn_cast_or_nul:100,dyn_switch:15,dynam:[0,4,6,9,17,21,22,35,38,41,46,48,53,54,56,58,59,69,79,88,98,100,101,107,108,109,111,112,126,129,131,139,141,149,151],dynamic_cast:[15,69,100,142,143,144],dynamiclibrari:[131,132,133,134,135],dynamicsharedpoint:0,dynstr:0,dynsym:0,e_entri:0,e_id:0,e_machin:0,e_typ:0,ea_r:13,eabi:[21,66],each:[0,1,2,3,5,6,7,9,11,12,13,14,15,16,18,20,21,22,23,27,28,31,34,35,36,37,38,41,43,44,47,49,50,51,52,54,56,57,58,59,60,62,68,69,70,71,72,74,75,76,77,78,79,80,82,83,84,85,88,91,92,96,97,100,101,102,103,105,106,109,111,112,113,114,116,117,118,120,121,122,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],eager:[100,132],eagerli:132,eao:100,earli:[44,46,62,75,77,80,84,85,88,124,125,132,142,152],earlier:[0,3,6,15,46,47,56,74,75,92,124,131,132,138,139],earlyclobb:80,earlycs:56,earn:102,eas:65,easi:[6,9,11,13,15,20,49,58,60,63,67,69,74,75,77,83,100,102,105,109,110,114,120,121,125,129,131,132,133,136,137,138,139,140,141,142,145,146,147,148,149,150,152,153],easier:[0,2,3,13,14,15,16,27,46,48,49,50,52,54,58,67,70,74,75,82,84,98,99,100,102,105,114,118,121,125,131,137,138,142,144,147,148,152],easiest:[3,60,62,66,68,110,124,125,126,139,145,153],easili:[13,15,26,43,56,58,60,70,74,82,83,98,100,102,109,111,112,113,125,129,131,143],eat:[43,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],eatomtypecuoffset:109,eatomtypedieoffset:109,eatomtypedietag:109,eatomtypenameflag:109,eatomtypenul:109,eatomtypetag:109,eatomtypetypeflag:109,eax:[13,16,53,75,80,116,118,124],ebenders_test:48,ebnf:128,ebp:[13,51,118],ebx:[13,53,118],echo:[4,20,60,102,110],eckel:100,ecma:88,econom:14,ecosystem:[74,96,100],ecsubstreams:88,ecx:[13,53,116,118],edg:[7,9,13,16,44,51,58,75,77,103,104,125,126,127,130],edi:[13,16,80,118],edit:[0,11,23,36,60,100],editor:[15,49,60,110],edu:4,educ:[0,14],edx:[13,75,116,118],ef_amdgpu_mach_amdgcn_gfx600:0,ef_amdgpu_mach_amdgcn_gfx601:0,ef_amdgpu_mach_amdgcn_gfx700:0,ef_amdgpu_mach_amdgcn_gfx701:0,ef_amdgpu_mach_amdgcn_gfx702:0,ef_amdgpu_mach_amdgcn_gfx703:0,ef_amdgpu_mach_amdgcn_gfx704:0,ef_amdgpu_mach_amdgcn_gfx801:0,ef_amdgpu_mach_amdgcn_gfx802:0,ef_amdgpu_mach_amdgcn_gfx803:0,ef_amdgpu_mach_amdgcn_gfx810:0,ef_amdgpu_mach_amdgcn_gfx900:0,ef_amdgpu_mach_amdgcn_gfx902:0,ef_amdgpu_mach_non:0,ef_amdgpu_mach_r600_bart:0,ef_amdgpu_mach_r600_caico:0,ef_amdgpu_mach_r600_cayman:0,ef_amdgpu_mach_r600_cedar:0,ef_amdgpu_mach_r600_cypress:0,ef_amdgpu_mach_r600_junip:0,ef_amdgpu_mach_r600_r600:0,ef_amdgpu_mach_r600_r630:0,ef_amdgpu_mach_r600_redwood:0,ef_amdgpu_mach_r600_rs880:0,ef_amdgpu_mach_r600_rv670:0,ef_amdgpu_mach_r600_rv710:0,ef_amdgpu_mach_r600_rv730:0,ef_amdgpu_mach_r600_rv770:0,ef_amdgpu_mach_r600_sumo:0,ef_amdgpu_mach_r600_turk:0,ef_amdgpu_mach_xxx:0,ef_amdgpu_xnack:0,effect:[2,6,11,13,15,16,43,44,58,62,65,75,81,98,100,102,103,107,109,112,113,117,120,121,124,125,126,130,133,140,141,150,151],effici:[6,13,15,49,54,58,60,62,69,75,77,81,98,100,103,104,109,113,114,116,121,122,125,130,137,139,147,149],effort:[15,49,52,54,56,62,79,98,104,109,111,113,126,138,148],eflag:[80,116,118],egg:120,egg_info:120,egregi:[14,49],egrep:60,eh_fram:51,eh_label:80,ehashfunctiondjb:109,ehcleanup:46,ehobj:51,ehptr:51,ehselector:46,ei_abivers:0,ei_class:0,ei_data:0,ei_osabi:0,eieio:75,eight:[13,23,75],eip:118,either:[0,2,3,5,6,9,11,13,15,20,21,23,27,40,41,43,49,51,52,56,58,59,60,63,70,75,76,77,79,80,82,83,84,85,88,98,100,102,106,111,112,116,118,120,121,122,124,126,127,128,131,132,136,137,138,140,144,145,146,147,149,150,153],elabor:[88,100],elect:49,eleg:[137,139,140,145,147,149,150,153],element:[0,2,5,6,12,13,15,52,58,62,76,83,84,98,100,103,104,109,110,112,114,116,117,122,123,124,128,129,131],element_s:75,element_typ:[148,149,150,151,152],elementtyp:75,elf64:127,elf64_rela:0,elf:[6,13,38,44,45,75,79,104,109,111,121,126],elfabiversion_amdgpu_hsa:0,elfabiversion_amdgpu_mesa3d:0,elfabiversion_amdgpu_p:0,elfclass32:0,elfclass64:0,elfdata2lsb:0,elfosabi_amdgpu_hsa:0,elfosabi_amdgpu_mesa3d:0,elfosabi_amdgpu_p:0,elfosabi_non:0,eli:44,elid:[46,58,73,116],elig:[46,98],elim:[21,109],elimin:[0,2,9,13,15,21,43,49,54,56,58,60,62,63,75,76,84,85,100,109,112,124,133,137,139,140,141,142,147,149,150,151,152],eliminatecallframepseudoinstr:124,eliminateframeindex:124,elis:46,els:[13,14,16,22,31,43,44,46,47,49,50,52,61,75,77,80,82,83,84,98,100,102,112,113,118,120,121,123,124,129,135,136,137,138,139,141,142,143,144,145,146,147,148,149,151,152,153],else_:[150,151,152],else_bb:[150,151,152],else_v:[150,151,152],elsebb:[140,141,142,143,144],elsev:[140,141,142,143,144],elsewher:[100,112,124],elt:75,eltsizeparam:[6,75],eltti:[6,144],em_amdgpu:0,emac:[15,60,118],email:[3,14,49,60,64,68,76,99,106,130,145,153],emb:[6,11,75,145,153],embed:[6,45,47,49,57,58,66,75,88,98,100,103,109,140,141,150,151],embrac:49,emerg:[48,49],emiss:[58,75,111,124,142,152],emissionkind:[75,109],emit:[0,3,5,6,9,16,18,19,21,22,36,37,42,43,44,46,47,48,51,53,54,56,59,60,61,62,70,72,75,76,79,80,84,93,98,100,104,109,111,112,114,124,125,127,137,138,140,141,142,144,145,147,148,150,151,152,153],emit_22:124,emitalign:58,emitandfin:132,emitbyt:124,emitconst:124,emitconstantpool:124,emitconstpooladdress:124,emitepilogu:124,emitexternalsymboladdress:124,emitfnstart:13,emitfunctionstub:124,emitglobaladdress:124,emitinstruct:[13,124],emitint32:58,emitjumptableaddress:124,emitjumptableinfo:124,emitlabel:13,emitlabelplusoffset:58,emitleadingf:3,emitloadlink:3,emitloc:144,emitobject:79,emitprologu:124,emitpseudoexpansionlow:114,emitstacksizesect:13,emitstorecondit:3,emitsymbolattribut:13,emitt:[42,48,75,114,116,140,150],emittrailingf:3,emitvalu:13,emmc:65,emphas:[15,110],emploi:[75,100,103],employ:49,empti:[0,11,12,15,20,40,43,49,51,58,75,77,80,83,100,107,109,112,116,117,121,124,129,137,138,140,144,147,148,150],empty_subregsset:124,emul:[13,15,22,52,56,66,75,100,102],enabl:[0,5,11,12,13,15,16,17,20,21,22,24,28,30,32,34,41,43,44,46,47,48,49,54,55,56,57,58,60,61,62,66,77,78,81,82,85,97,100,102,103,104,108,109,118,121,123,124,125,126,127,129,131,132,133,135,139,143],enable_dx10_clamp:0,enable_exception_address_watch:0,enable_exception_fp_denorm:0,enable_exception_ieee_754_fp:0,enable_exception_int_divide_bi:0,enable_exception_memori:0,enable_ieee_mod:0,enable_if:69,enable_optim:97,enable_sgpr_:0,enable_sgpr_dispatch_id:0,enable_sgpr_dispatch_ptr:0,enable_sgpr_flat_scratch:0,enable_sgpr_grid:0,enable_sgpr_kernarg:0,enable_sgpr_kernarg_segment_ptr:0,enable_sgpr_priv:0,enable_sgpr_private_seg:0,enable_sgpr_queue_ptr:0,enable_sgpr_workgroup:0,enable_sgpr_workgroup_id:0,enable_sgpr_workgroup_id_i:0,enable_sgpr_workgroup_id_x:0,enable_sgpr_workgroup_id_z:0,enable_sgpr_workgroup_info:0,enable_trap_handl:0,enable_vgpr:0,enable_vgpr_workitem_id:0,enablecompilecallback:135,enablesgprdispatchid:0,enablesgprdispatchptr:0,enablesgprflatscratchinit:0,enablesgprgridworkgroupcounti:0,enablesgprgridworkgroupcountx:0,enablesgprgridworkgroupcountz:0,enablesgprkernargsegmentptr:0,enablesgprprivatesegmentbuff:0,enablesgprprivatesegments:0,enablesgprqueueptr:0,encapsul:[15,69,71,100,103],enclos:[6,15,16,40,46,100,111,116,121,144],encod:[0,3,5,21,22,23,25,37,46,51,58,60,62,75,83,96,100,103,104,109,111,112,114,118,120,122,124,128,129,130,142,144,152],encodecompactunwindregisterswithoutfram:13,encompass:[65,71],encount:[6,13,16,35,46,51,56,62,66,75,100,102,124,126,127,132],encourag:[14,15,49,60,70,98,100,102,145,153],encrypt:49,end:[1,2,5,6,9,11,13,14,16,23,24,29,36,43,44,47,49,51,53,55,56,58,60,61,62,65,67,68,69,76,77,78,82,83,85,88,92,98,99,101,102,105,106,110,111,113,115,116,117,118,120,121,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],end_:[150,151,152],end_amd_kernel_code_t:0,end_cond:[150,151,152],endcod:15,endcond:[140,141,142,143,144,152],endexpr:[140,141,142,143,144,152],endforeach:12,endfunct:12,endia:128,endian:[0,6,13,75,96,109,124,128,130],endif:[12,15,43,44,47,77,113,131,132,133,134,135,139,140,141,142,143,144,145,153],endl:143,endloop:[140,141,142,143,144,152],endmacro:12,endur:49,enforc:[3,13,15,16,43,49,58,62,75,100,102,106,111,116],engag:49,engin:[27,54,59,60,76,77,83,98,102,130,136,138,140,145,146,149,150,153],enginebuild:[79,131,132,133,134,135],english:[15,60],enhanc:[15,42,49,125,130,138,139,140,141,142,144,145,148,149,150,151,152,153],enjoi:64,enough:[3,11,13,15,36,43,49,56,59,75,81,83,100,101,102,108,109,111,113,121,124,125,137,140,144,147,148,150],enqueu:0,enrich:103,ensu:[1,124],ensur:[0,2,3,6,8,10,11,13,14,15,16,25,27,36,41,43,49,51,53,54,55,56,58,60,62,68,75,98,100,102,109,111,112,121,123,124,125,127,141,142,144,148,152],enter:[6,9,11,13,20,46,51,56,60,68,75,82,99,100,109,127,128,131,137,138,139,147,149],entir:[2,3,5,6,13,15,16,20,23,25,28,31,36,43,44,46,49,56,58,59,60,62,70,74,75,77,82,84,85,88,91,92,96,98,100,109,112,120,121,123,124,125,129,138,139,145,148,149,153],entireti:112,entiti:[6,15,75,93,100,111],entranc:75,entri:[0,2,6,7,11,13,16,28,29,31,37,38,46,51,52,55,56,58,59,60,62,69,73,74,75,76,77,79,80,82,83,84,91,100,102,103,109,110,112,113,116,118,122,124,125,126,128,129,132,133,134,135,137,138,139,140,141,142,143,144,148,149,150,151,152],entry_arg:128,entry_block:152,entrypoint:[75,77],entrytoken:13,enumcas:129,enumer:[6,13,36,42,43,58,75,83,88,100,109,114,116,124,128,129],env:[105,120],environ:[3,11,13,15,20,28,43,50,53,58,60,63,75,97,98,100,107,113,126,127,139],envp:48,eof:[77,128,136,137,138,139,140,141,142,143,144],eor:75,eph:102,epilog:124,epilogu:[58,75,124],episod:[140,150],epoch:[23,129],eptr:75,equal:[0,2,6,7,8,13,15,20,36,43,44,51,54,56,69,75,83,88,91,92,100,116,124,137,140,141,142,143,144,147,150,151,152],equal_rang:100,equival:[0,3,5,6,11,12,13,15,16,22,28,37,43,44,51,53,58,59,60,62,66,76,80,83,84,98,100,104,107,109,112,116,117,132,145,153],eras:[3,43,100,109,140,141,142,143,144],erasefrompar:[100,124,138,139,140,141,142,143,144],erasur:100,ericsson:75,erlang:75,err2:100,err:[14,84,100,125,134,135,138,139,140,141,142,143,144],errata:45,errc:100,erred:75,errno:[2,75],erron:[43,60],error:[0,2,11,12,13,16,17,18,20,21,22,23,24,25,27,28,30,32,34,40,41,42,43,44,49,51,53,57,58,60,63,67,68,70,75,77,78,84,98,101,105,107,114,116,118,121,124,125,126,130,131,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],error_cod:143,error_exitcod:77,errorasoutparamet:100,errorcodetoerror:100,errorinfo:100,errorlist:100,errorortoexpect:100,errortoerrorcod:100,escap:[2,16,51,58,60,75,78,80,81,117,121,141,151],escudo:107,esi:[13,80,118],esoter:116,esp:[13,16,118],especi:[3,8,11,14,15,20,37,43,44,49,50,56,60,65,75,76,83,98,100,101,102,103,109,113,124,131],espresso:120,essenc:49,essenti:[3,6,41,58,62,83,100,117,124],establish:[13,46,49,51,56,58,75,102,112,124,149],estim:[7,83,103,123],et_dyn:0,et_rel:0,etc:[0,1,2,3,6,11,13,15,16,17,36,46,49,58,59,60,61,62,67,68,71,75,76,77,78,80,82,83,85,88,91,97,98,99,102,105,106,107,109,113,114,116,118,120,124,125,126,127,130,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],ethnic:14,eurollvm:57,european:103,evalu:[11,12,47,52,58,59,73,75,77,83,84,103,104,124,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],evalut:15,even:[0,2,4,6,7,13,14,15,16,20,22,23,35,36,44,49,55,56,58,60,62,65,69,75,77,78,81,83,92,93,96,99,100,102,104,110,112,113,114,115,116,118,120,121,123,125,126,129,132,133,135,136,139,140,141,142,145,146,149,151,152,153],event:[11,14,77,100,106,111,112,126,127,128,130],event_s:128,eventu:[16,51,62,69,73,75,77,82,98,112,120,131,140,150],ever:[2,15,49,74,75,91,100,126,131,133,145,153],evergreen:0,everi:[0,2,3,5,6,7,8,9,12,13,16,20,28,37,41,43,46,47,49,51,54,56,58,60,62,64,65,68,69,74,75,76,77,82,83,84,98,100,102,105,107,108,109,111,112,113,116,118,120,121,125,128,130,132,137,139,140,142,144,145,149,150,152,153],everybodi:[49,83],everyon:[15,49,50,106,145,153],everyth:[3,9,12,13,43,44,59,60,61,62,63,65,67,68,75,84,102,121,125,130,132,136,137,138,140,141,146,147,148,150,151],everywher:[82,83,121,129,139,149],evex:[104,114],evidenc:59,evil:[5,100,118],evok:75,evolut:125,evolutionari:77,evolv:[14,47,49,78],evt:62,ex2:84,exact:[0,3,15,26,31,43,51,58,60,74,75,77,78,80,85,93,98,100,102,109,120,124,125],exact_artifact_path:77,exactli:[0,2,5,6,11,15,16,20,37,43,46,51,53,58,69,74,75,83,88,92,98,99,100,102,106,109,112,113,116,125,127,129,132,139,149],exactmatch:75,examin:[9,13,28,36,43,46,68,75,79,100,112,121,124,131,132],exampl:[1,2,3,4,6,7,8,9,11,12,13,15,16,17,29,36,41,43,44,47,49,50,51,52,53,54,55,56,57,59,62,64,65,66,67,68,69,70,71,73,74,76,80,81,82,83,84,88,92,97,98,99,101,102,103,105,107,109,111,112,113,114,116,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],exampletest:20,exce:[0,15,75,109],excel:[2,12,60,100,124],except:[0,2,3,5,6,11,13,14,16,20,22,23,24,25,43,44,46,49,53,56,59,74,80,83,84,85,88,100,102,104,109,111,112,113,114,116,117,121,124,125,129,130,131,133,136,138,139,141,142,145,146,147,148,149,150,151,152,153],excerpt:84,excess:[21,22,77],exchang:[60,100],excis:75,excit:[68,145,153],exclam:75,exclud:[4,13,16,17,36,49,60,72,75],exclus:[3,13,43,75,112,122],exclusionari:14,excp_en:0,excp_en_msb:0,exctyp:51,exctype1:51,exctypen:51,excus:14,exe:[19,40,61,64,88,121,144],exec:[0,4,17,77],exec_hi:0,exec_lo:0,exec_tim:120,execpt:0,execut:[2,3,7,8,9,10,12,13,15,17,18,19,21,28,35,37,41,43,44,45,46,47,48,50,51,53,55,56,58,60,61,62,70,75,76,77,79,85,88,98,101,103,104,108,109,111,112,113,114,120,123,124,125,128,130,131,132,133,134,135,136,137,138,139,140,141,142,144,145,147,148,149,150,152],executable_format_error:100,executeandwait:104,executenowait:104,executeprogramandwait:113,executeremoteexpr:135,executionengin:[13,48,60,100,131,132,133,134,135,149,150,151,152],execv:113,exedepsfix:62,exeext:121,exempt:15,exercis:[57,107,121,131,145,153],exhaust:[13,14,56,58,60,100],exhibit:[3,9,75],exig:100,exist:[3,6,11,12,13,15,16,20,21,23,26,28,30,36,44,46,49,51,52,53,54,56,58,59,61,62,63,64,70,73,74,75,77,80,82,93,96,98,99,100,101,102,103,104,106,107,109,110,111,112,113,115,116,118,121,124,129,130,138,139,140,141,143,144,145,148,150,151,153],exit5:84,exit:[7,13,48,51,54,56,58,60,75,77,83,84,100,102,103,120,125,126,127,128,134,135,140,142,143,144,145,150,153],exitcod:20,exitcond:75,exitonerr:[100,135],exitonerror:135,exn:[46,75],exp2:123,exp:[8,123],expand:[3,13,15,16,25,28,38,42,47,49,52,54,62,71,75,83,116,118,121,126,129],expandatomicrmwinir:3,expandinlineasm:124,expandop:52,expans:[3,12,13,28,47,56,71,75,77,80,117,124],expansionregiontag:47,expcnt:0,expect:[2,3,4,5,6,7,12,13,15,16,20,26,28,43,46,49,55,56,58,59,60,61,62,71,74,77,82,83,91,98,100,102,108,109,111,112,113,114,116,117,120,121,125,128,129,131,132,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],expected_v:75,expectedtoerroror:100,expens:[3,11,15,43,44,51,55,62,75,77,83,98,100,124,125],experi:[11,14,65,82,83,109,110,112,131,132,139,149],experienc:9,experiment:[10,49,50,52,64,104,130],explain:[2,5,11,13,15,23,50,54,83,99,100,108,125,128,130,136,142,146,152],explan:[11,50,54,69,75,83,106],explanatori:[49,88,120],explicit:[3,13,14,15,37,43,49,53,54,55,58,59,60,62,69,74,75,76,83,84,100,103,106,112,125,131,140,141,142,143,144,145,149,150,151,152,153],explicitli:[0,1,2,11,13,15,16,43,44,46,54,56,58,59,62,73,75,77,79,80,98,99,100,104,112,116,120,123,138,145,148,153],exploit:[55,103,139],explor:[46,99,100,112,126],exponenti:[43,75,98],exportedsymbolsonli:132,expos:[2,3,9,13,15,20,36,43,58,60,62,75,78,98,100,104,112,114,125,131,142,152],exposesreturnstwic:80,exposit:[136,146],expr0lh:47,expr0rh:47,expr1lh:47,expr1rh:47,expr:[32,42,137,140,141,142,143,144,147,148,149,150,151,152],expr_prec:[147,148,149,150,151,152],expraddr:135,exprast:[134,135,137,138,139,140,141,142,143,144,147],express:[0,2,13,14,15,20,28,31,32,36,43,46,52,54,56,58,59,60,76,77,80,100,109,111,118,121,124,125,128,129,131,132,135,136,139,141,142,143,144,145,146,149,151,152,153],exprprec:[137,138,139,140,141,142,143,144],exprsymbol:[139,140,141,142],ext:[5,75],extend:[3,10,15,16,20,43,53,56,58,60,62,69,75,96,100,103,112,115,116,118,124,130,131,132,136,137,139,145,146,147,149,153,154],extens:[0,10,11,13,15,18,21,28,33,45,49,51,52,54,56,58,62,74,75,83,98,100,104,111,112,113,114,123,124,130,137,141,142,147,151,152,155],extensioan:105,extent:[26,49,58,59,75],exterior:112,extern:[0,5,6,10,11,13,15,22,23,35,36,44,49,56,63,65,66,75,77,78,79,83,84,97,100,105,107,112,121,122,124,125,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],extern_weak:[6,75],externallinkag:[138,139,140,141,142,143,144,148],externally_initi:[6,75],externallyiniti:75,externalstorag:43,extra:[0,6,8,11,12,15,36,43,51,56,57,60,66,67,70,75,77,83,92,98,100,102,105,106,108,112,116],extra_operand0:0,extra_sourc:12,extract:[16,19,23,47,51,61,62,75,100,104,109,112,114,116,118,124,126,131],extract_subreg:80,extractel:5,extractloop:98,extrem:[2,3,6,9,13,49,55,60,72,75,77,98,100,109,116,117,124,125,133,142,152,154],exynosm1model:124,f107:84,f108:84,f110:84,f128:[75,124],f16:[0,75],f1f2:83,f2_1:124,f2_2:124,f31:[75,124],f32:[0,13,44,62,75,84,124],f3_12:124,f3_1:124,f3_2:124,f3_3:124,f4rc:13,f64:[0,13,75,84,124],f80:75,f88:84,f89:84,f90:84,f91:84,f92:84,f934:124,f93:84,f94:84,f95:84,f96:84,f97:84,f98:84,f99:84,f_inlined_into_main:40,f_none:143,fab:123,face:[15,56,108,113,114,125],facil:[2,15,20,43,54,58,61,101,102,109,113],facilit:[10,15,49,75,100,101,103,104,109,129],fact0:83,fact1:83,fact:[2,13,15,23,43,44,46,49,51,54,56,59,60,69,74,75,76,82,100,106,116,117,125,133,139,141,142,145,149,151,152,153],factor:[13,15,75,100,103,116,118,123],factori:[15,98,100],fadd:[13,52,62,84,124,138,139,140,142,148,149,150,152],fail:[3,11,15,16,17,20,22,43,49,51,55,60,61,65,70,75,100,102,105,109,113,120,121,123,131,138],failtkind:55,failur:[9,16,17,20,49,60,61,62,64,65,68,70,75,77,85,100,102,105,109,120,121,123,125,129,130,131,146,147],failure_ord:3,fairli:[2,3,54,56,74,100,124,136,137,140,141,146,147,150,151,153],faith:51,fake:22,falkormodel:124,falkorwr_1vxvy_2cyc:124,falkorwr_2vxvy_2cyc:124,fall:[7,15,16,43,58,75,98,100,112,124,131,139,140,141,142,143,144,149,150,151,152],fallback:[6,62,107],fallthrough:10,fals:[0,2,8,9,15,17,20,22,28,37,40,43,46,54,60,67,69,72,75,78,80,83,85,88,98,100,107,109,114,124,125,126,131,132,133,134,135,138,139,140,141,142,143,144,150],false_branch_weight:8,falsedest:75,famili:[0,14,75,100,109,112,145,153],familiar:[0,13,36,44,51,56,60,69,83,84,125,131,136,140,144,146,150],fanci:120,fancier:[110,125],fancyaa:125,faq:[75,130,145,153],far:[2,12,43,52,74,75,88,100,109,125,127,133,137,138,141,142,145,147,148,151,152,153],farm:20,fashion:[52,53,75,124],fast:[13,15,21,42,44,56,62,65,77,83,96,100,104,109,110,114,124,125,131,142,152],fastcal:[13,75],fastcc:[6,13,46,54,75],fastemit:114,faster:[9,15,23,44,51,57,60,64,65,75,82,83,100,107,109],fastest:64,fastisel:75,fastmath:84,fat:44,fatbin:44,fault:[0,5,17,49,51,130],faultingload:55,faultingloadstor:55,faultingpcoffset:55,faultingstor:55,faultkind:55,faultmap:[75,130],favor:[49,93,120],favorit:[76,140,150],favour:[115,118],fbb:124,fca:76,fcc_g:124,fcc_u:124,fcc_ug:124,fcc_val:124,fcmp:[138,140,142,148,149,150,151,152],fcmpinst:100,fco:124,fcomi:13,fcontext:144,fcoverag:[28,47],fcuda:44,fcur:83,fde:[13,76],fdr:126,fdrpcchannel:135,feasibl:[75,109,127],featur:[10,11,12,20,43,47,49,57,60,62,68,72,73,75,78,83,85,98,99,100,101,102,104,105,107,109,112,113,114,118,120,124,125,127,128,129,130,131,137,139,140,141,142,143,145,147,150,151,152,153],featurea:129,featureb:129,featurec:129,featurefparmv8:118,featurev8deprec:124,featurev9:124,featurevi:124,februari:126,fed:[13,103,104],fedora:50,feed:[1,2,77,109,140,150],feedback:[49,64,68,106,125,132,133,134,135],feel:[9,14,15,49,56,75,104,106,127,136,138,145,146,148,153],femul:75,fenc:[0,3,15,56,82],fermi:13,fetch:[0,8,13,60,75,102,107],few:[1,3,6,9,11,12,13,14,15,23,41,44,49,50,51,57,58,60,66,68,74,75,84,98,100,101,102,109,113,121,123,124,125,127,128,133,137,138,139,141,144,145,147,148,149,151,153],fewer:[0,58,66,98,112],fexist:83,ffast:[44,123],ffi:[11,54],ffi_include_dir:11,ffi_library_dir:11,ffmpeg:77,ffp:44,fib:[98,136,140,142,144,146,150,152],fibi:[142,152],fibonacci:[61,136,146],fiddl:[67,100,110],field:[0,2,6,12,13,20,23,35,36,47,56,58,59,68,72,75,82,88,92,93,96,99,100,107,109,111,112,114,116,117,124,128,129,137,145,147,153],fifth:[75,84,124],figur:[5,9,13,15,43,70,75,82,100,121,124,125,132],fiji:0,file:[1,8,9,11,12,17,19,21,22,24,25,26,27,28,29,30,31,32,33,34,37,38,40,41,42,44,45,48,49,50,52,54,57,61,63,64,66,67,68,70,72,74,75,76,77,79,81,82,83,84,91,93,99,100,101,102,104,105,110,112,113,114,115,117,118,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,149,152,155],filecheck:[17,19,36,38,80,109,121],fileinfosubstream:88,fileit:43,filemag:92,filenam:[11,15,16,17,18,21,22,24,25,27,30,31,32,34,35,37,38,39,41,42,43,44,47,109,116,118,126,143,144],filename0:47,filename1:47,filenameindex0:47,filenameindex1:47,filenameoffset:88,filenotfound:100,fileorerr:100,filepo:43,files:39,filesizepars:43,filesystem:[20,50,67,143],filetyp:[21,61,109,143],fill:[0,2,15,43,44,50,64,68,70,75,100,104,109,125,127,128,129,136,137,138,139,140,141,142,143,144],filler:104,filt:28,filter:[11,20,28,49,72,75,121,127],filterclass:72,finalize_statu:126,finalizememori:79,finalizeobject:[79,144],financi:102,find:[1,2,9,11,13,15,17,20,28,29,31,36,42,43,47,49,50,51,52,59,60,61,63,65,66,67,68,70,74,75,77,78,82,83,99,101,102,104,105,106,109,110,111,112,113,116,117,118,120,124,125,126,127,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],find_a:100,find_packag:11,find_program:11,findanalysispass:127,finder:130,findings_dir:77,findlead:100,findstub:[134,135],findsymbol:[131,132,133,134,135,139,140,141,142],findsymbolin:132,findsymbolinlogicaldylib:131,fine:[5,15,36,43,56,59,61,62,69,113,128,136,142,146,152],finer:[2,62],finish:[0,1,9,11,13,46,48,50,51,75,79,83,99,105,110,123,125,127,138,139,140,141,142,143,144,147,148,149,150,151,152],finishassembl:58,finit:[13,75,114],fire:[9,15],firefox:68,firepro:0,first:[0,2,3,5,6,8,9,11,12,13,15,16,20,22,23,28,30,41,43,46,47,49,50,51,54,58,60,61,62,64,68,69,70,72,73,76,77,78,79,80,81,82,83,84,92,98,99,100,101,102,103,106,107,109,110,111,112,113,116,117,118,120,121,124,125,126,127,128,129,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],first_wav:0,firstcondit:100,firstlett:48,firstli:75,fit:[5,13,15,43,44,49,59,66,75,92,98,99,100,107,109,128,132,140,150],five:[13,43,51,77,100,132],fix:[0,3,7,15,16,20,43,49,59,60,68,70,75,76,88,96,102,104,105,107,108,110,111,116,117,118,120,124,125,126,129,133,136,137,138,139,142,145,146,147,148,152,153],fixabl:56,fixedt:109,fixedworkgroups:0,fixm:[50,60,106,124],fixup:88,flag1:[77,83],flag2:[77,83],flag:[0,10,11,12,13,15,16,17,27,28,40,48,50,53,56,57,58,60,61,62,63,65,66,67,72,77,83,84,88,100,102,104,105,107,109,111,112,121,124,126,127,129,148,149,150,151,152],flagflat:129,flaghollow:129,flagpointi:129,flagprototyp:144,flaground:129,flagscpu1:129,flagscpu2:129,flagscpumask:129,flagsfeaturea:129,flagsfeatureb:129,flagsfeaturec:129,flagsflat:129,flagshollow:129,flagspointi:129,flagsround:129,flame:126,flamegraph:127,flat:[18,129],flat_atom:0,flat_atomic_cmpswap:0,flat_atomic_fmax_x2:0,flat_atomic_swap:0,flat_load:0,flat_load_dword:0,flat_scratch:0,flat_scratch_hi:0,flat_scratch_lo:0,flat_stor:0,flat_store_dword:0,flat_store_dwordx3:0,flat_stot:0,flatten:[13,50,75,123],flavor:[75,100,109,116],flaw:62,fldcw:13,fldcww:13,fleet:50,flexibl:[13,19,20,31,43,58,69,74,75,82,100,104,116,118,121,125,141,151],flight:[51,75],flip:15,float_denorm_mode_16_64:0,float_denorm_mode_32:0,float_mod:0,float_of_str:[146,147,148,149,150,151,152],float_round_mode_16_64:0,float_round_mode_32:0,floatscalarti:75,floattyp:100,floor:123,floorf:123,flow:[2,9,13,15,29,44,46,49,51,55,56,62,75,76,78,79,82,84,98,100,103,110,112,122,123,124,125,130,136,137,138,139,141,142,144,145,146,147,148,149,151,152,153,154],flto:[11,63,78,85],fluctuat:2,flush:[0,15,44,65,75,79,84,126,128,143,147,148,149,150,151,152],flush_statu:126,fly:[13,131,137,139,147,149],fma:[13,44,84,123],fmadd:13,fmag:23,fmf:104,fmod:75,fmt_align:100,fmt_pad:100,fmt_repeat:100,fmul:[13,84,138,139,148,149],fmuladd:123,fnaddr:46,fnast:[134,135,138,139,140,141,142,143,144],fneg:75,fnentri:6,fnf:100,fnir:[138,139,140,141,142,143,144],fnloc:144,fnname:[137,138,139,140,141,142,143,144],fno:123,fnptrval:75,fnstart:13,fntree:83,fnty:75,focu:[13,14,62,78,110,123,131],focus:[13,29,58,100,112,121,124],fold:[2,3,52,55,56,62,75,98,100,104,111,125,130,138],foldabl:62,folder:[11,50,60,75,139],foldingsetnod:100,foldingsetnodeid:100,foldmemoryoperand:[13,124],folk:[77,99],follow:[0,1,2,3,5,6,9,11,12,13,15,16,17,19,20,23,24,25,28,33,35,36,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,63,64,66,67,68,69,70,72,74,75,77,78,80,81,84,85,88,91,92,93,96,97,98,99,100,101,102,103,105,106,107,109,110,111,112,113,116,117,118,120,121,122,123,124,125,126,127,128,129,131,133,136,137,140,141,142,144,146,147,150,151,152],fom:98,fomit:13,foo1:[63,78],foo2:[63,78],foo3:[63,78],foo4:[63,78],foo:[2,5,7,8,11,12,13,15,16,37,40,43,44,46,47,51,53,54,58,59,69,70,73,75,77,82,84,100,109,112,116,117,121,122,123,129,137,138,139,140,147,148,149,150],foo_ctor:73,foo_dtor:73,foo_in_a_cc:8,foo_test:121,foo_var:12,foobar:[15,80,129],foobaz:15,foof:44,foolproof:125,footprint:62,forbidden:[113,125],forc:[0,11,12,15,22,36,43,44,47,51,60,65,67,73,75,100,102,109,111,112,123,125,129,131,132],force_off:11,force_on:11,forcefulli:59,forcibl:75,foreach:[12,102,116,118],foreign:[11,54,131],forens:19,forese:49,forexpr:[140,141,142,143,144,150,151,152],forexprast:[140,141,142,143,144],forget:[14,15,58,69,99,100,144],forgiv:83,forgotten:143,fork:[102,103,113],form:[1,2,6,10,11,12,15,16,17,23,26,31,37,43,49,51,53,56,57,58,59,60,68,69,70,72,75,76,77,78,79,82,83,84,88,99,100,102,103,106,109,111,112,116,117,118,120,121,124,125,126,128,129,130,132,136,137,138,139,140,142,143,145,146,147,148,149,150,152,153],formal:[44,75,83,100,106,116,118],format:[0,5,10,18,21,22,25,26,28,29,31,35,36,37,38,41,45,48,49,52,53,54,55,58,60,61,62,72,75,77,79,84,88,91,93,98,99,102,103,110,114,116,118,120,124,126,127,129,130,144],format_int_custom:100,format_provid:100,formatadapt:100,formatstr:0,formatt:75,formattedfil:100,formbit:118,former:[3,13,56,80,112,122,137,147],formerli:100,formmask:124,formul:113,forth:[3,5],fortun:[15,100,139,140,142,143,145,149,150,152,153],forum:[14,75,130],forward:[2,6,13,15,44,51,52,58,71,75,96,98,100,109,112,113,116,117,126,136,137,140,146,147,148],fosdem17:62,foster:[49,102,113],found:[2,4,9,11,13,16,17,18,20,23,25,31,34,43,44,49,50,51,57,58,60,61,67,68,70,72,75,77,78,82,84,85,88,96,98,100,101,102,105,107,109,112,113,121,123,124,125,126,129,130,131,132,138,139,140,141,142,143,144,148,151,152],foundat:[0,14,49,102,106,125,131],foundfoo:15,four:[2,3,5,6,13,15,20,43,58,59,62,75,84,124,131,138,139,148],fourinarow:120,fourth:[46,59,75,111,124,125,150],fp0:[116,118],fp128:[6,75,83],fp16:0,fp16_ovfl:0,fp1:[116,118],fp2:[116,118],fp3:[116,118],fp4:[116,118],fp5:[116,118],fp6:[116,118],fp_to_sint:124,fpcmp:120,fpexcept:75,fpform:118,fpformat:[116,118],fpformbit:118,fpga:13,fpic:[11,107],fpimmleaf:62,fpinst:118,fpm:[36,132,133,134,135],fpmad:109,fpo:[88,96],fpowi:104,fppassmanag:127,fpreg:124,fpregsclass:124,fpregsregclass:124,fpregsregisterclass:124,fprintf:[137,138,139,140,141,142,143,144],fprofil:[11,28,47],fptr:144,fpu:[67,75],fputc:[139,140,141,142,143,144],fra:13,fraction:[7,69,72,77],fragil:[16,62,102],fragment:[13,26,57,58,75,96,100,109,112,116,117,120],frame:[0,21,31,40,56,58,73,75,76,79,80,88,98,100,102,108,109,111,112,124,128],frameindex:124,frameinfo:[80,124],frameless:13,framemap:58,frameptr:46,frames:58,framework:[2,10,13,52,58,62,75,98,100,104,109,120,125,130,136,138,141,142,146,148,151,152],francesco:98,frb:13,frc:13,free:[0,2,3,13,14,15,36,45,49,56,58,62,68,76,77,92,99,100,102,104,106,107,112,121,125,127,128,131,133,136,138,139,140,141,142,145,146,148,149,153],freea:73,freebench:120,freeblockmapblock:92,freebsd5:13,freebsd:[4,13,60,104],freed:[0,2,46,100,108,131,132],freedom:[75,100],freeli:[3,49],freestand:75,freetyp:77,freez:68,frequenc:[4,8,75,127,128,130],frequent:[15,43,49,58,59,60,61,75,98,100,102,112,113,115,130,132,133,134,135,144],fresh:[60,102],frexp:75,friend:[54,75],friendli:[14,15,31,49,81,102,115,126,130,137,147],frighten:77,from:[0,1,2,3,5,6,8,9,10,11,12,14,15,16,17,19,20,21,23,24,25,26,27,28,29,30,31,33,35,36,37,38,40,41,42,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,62,63,64,66,68,69,70,72,73,74,76,77,78,79,80,82,83,84,85,88,91,93,96,97,99,101,102,103,104,105,106,107,108,109,111,112,113,114,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],front:[13,15,49,51,58,60,61,75,85,98,100,101,130,132,133,136,139,140,141,142,144,145,146,149,150,151,152,153],frontend:[3,29,46,47,51,54,55,73,74,75,104,109,112,121,130,143],frontier:[0,142,152],frown:49,frozen:48,frt:13,frustrat:14,fsanit:[10,77],fsave:123,fsin:[21,124],fslp:123,fstream:84,fstrict:75,fsub:[142,152],ftest:28,ftl:[75,111],ftoi:124,ftp:60,ftz:84,fucomip:13,fucompi:13,fudg:67,fulfil:[66,69,113],full:[0,2,3,11,12,13,15,16,27,35,36,40,42,44,48,49,54,60,67,68,73,74,77,80,83,84,88,98,99,100,101,102,109,110,112,121,122,127,129,136,145,146,153],full_corpus_dir:77,fulldebug:[75,109],fuller:128,fullest:15,fulli:[1,6,7,10,11,12,13,22,44,57,59,60,61,62,75,98,103,104,109,112,118,123,131,132,137,141,142,145,147,151,152,153],fun:[53,127,136,145,146,148,149,150,151,152,153],func:[32,36,47,75,80,100,125,127,147,148,149,150,151,152],func_typ:112,funcid:127,funclet:46,funcresolv:100,function_entry_arg:128,function_entry_count:8,function_id:128,function_old:6,function_other_typ:128,function_typ:[148,149,150,151,152],functionaddress:55,functionast:[134,135,137,138,139,140,141,142,143,144],functionfaultinfo:55,functionindex:71,functioninfo:55,functionlisttyp:100,functionnam:[58,75],functionnod:83,functionpass:[2,85,98,100,124],functionpassctor:125,functionpassmanag:[131,132,133,134,135,139,140,141,142],functionproto:[139,140,141,142,143,144],functiontyp:[100,138,139,140,141,142,143,144],functor:[15,132],fundament:[12,13,15,43,51,56,59,71,83,100,112,124,125],funni:[142,152],furi:0,further:[3,6,11,15,16,20,46,49,51,56,58,59,60,61,62,66,68,75,77,82,83,85,88,92,100,102,104,109,124,128,131,132,133,139],furthermor:[16,59,62,75,98,102,112],furyx:0,fuse:[11,22,44,66,75,98],fusion:75,futur:[0,6,10,11,15,48,49,57,58,59,60,71,73,75,77,80,100,102,104,105,109,111,112,123,128,136,138,139,140,146,148,150,152],fuzz:130,fuzz_target:77,fuzzer:130,fuzzercli:57,fuzzerinterfac:77,fuzzing_build_mode_unsafe_for_product:77,fuzzinglibc:77,fuzzmut:57,fxrai:[126,127],g0l6pw:60,g_add:62,g_constant:62,g_extract:62,g_fconstant:62,g_icmp:[62,80],g_inlined_into_f:40,g_load:62,g_merge_valu:62,g_store:62,g_unmerge_valu:62,gabi:45,gain:[43,49,104,106],galina:64,game:49,gap:[15,47,62,75],garbag:[6,54,76,111,130,136,146],gas:53,gather:[0,43,49,51,74,83,100,101,103,104,114,121,128],gaug:102,gave:83,gc_transit:112,gc_transition_end:112,gc_transition_start:112,gcc:[3,12,13,15,17,28,37,43,44,45,50,51,60,63,66,67,70,75,82,98,100,109,120,123,124,126,130],gcca:24,gcda:28,gcfunctioninfo:58,gcfunctionmetadata:[58,111],gcmetadaprint:58,gcmetadata:58,gcmetadataprinterregistri:58,gcn3:0,gcn:0,gcname:6,gcno:28,gcodeview:109,gcolumn:123,gcov:37,gcov_prefix:28,gcov_prefix_strip:28,gcregistri:58,gcroot:[58,111,112],gcse:[98,100],gcstrategi:58,gdb:[13,31,63,100,109,124,130,153],gdbinit:100,ge_missing_jmp_buf:15,ge_missing_sigjmp_buf:15,gear:11,geforc:84,gen:[42,62,124,132,144],gender:14,gendfapacket:13,gener:[0,1,2,3,5,6,8,10,11,12,14,15,16,17,19,21,25,28,33,36,37,41,43,44,46,47,48,49,52,55,56,59,60,61,64,66,68,69,73,74,76,77,78,81,82,83,84,85,88,93,96,99,101,102,103,104,105,106,108,109,110,111,112,113,114,115,117,118,121,122,123,124,125,126,129,130,131,132,136,137,139,141,142,143,144,145,146,147,149,151,152,153,154],generalcategori:43,generalis:[141,151],genericvalu:[149,150,151,152],genregisternam:13,gensubtargetinfo:124,genuin:100,geomean:123,geometr:[145,153],geordi:130,gep:[54,76,83,98,112,130],get:[0,1,2,3,5,9,11,12,13,14,15,16,19,43,44,46,47,48,49,50,52,54,56,58,59,62,64,66,67,68,69,70,71,76,78,79,82,83,84,98,99,100,102,105,106,109,110,112,113,114,116,117,118,120,121,124,125,126,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],get_instrinfo_named_op:124,get_instrinfo_operand_enum:124,get_instrinfo_operand_types_enum:124,get_matcher_implement:114,get_ptr:55,get_reginfo_target_desc:114,get_register_match:114,get_subtarget_feature_nam:114,getaddress:[131,132,134,135,139,140,141,142],getaddressingmod:124,getadjustedanalysispoint:2,getanalysisusag:2,getargumentlist:100,getattribut:83,getattributespellinglistindex:114,getbasicblock:13,getbasicblocklist:[100,140,141,142,143,144],getbinarycodeforinstr:124,getbinarypreced:[141,142,143,144],getbit:43,getbitwidth:100,getbuff:129,getcalledfunct:100,getcalleesavedreg:124,getchar:[136,137,138,139,140,141,142,143,144],getcol:144,getcompilecallback:[134,135],getdata:15,getdatalayout:[124,144],getdatasect:58,getdebugloc:109,getdefaulttargettripl:143,getdirectori:[109,144],getdoubleti:[138,139,140,141,142,143,144],getehframesect:79,getelementptr:[2,13,16,25,46,47,58,59,73,76,83,84,100,112,122,145,153],getelementptrinst:100,getelementtyp:100,getentryblock:[100,142,143,144],getenv:113,getfilenam:[109,144],getfoo:75,getframeinfo:[13,124],getframeinstruct:80,getframes:58,getfunct:[58,85,100,125,138,139,140,141,142,143,144],getfunctionlist:100,getfunctiontyp:100,getglob:124,getgloballist:100,getimm:124,getindex:124,getiniti:100,getinsertblock:[140,141,142,143,144],getinstlist:100,getinstralternativemap:62,getinstrinfo:[13,124],getinstrmap:62,getint32ti:15,getjitinfo:[13,124],getjmp_buftyp:15,getkei:100,getkind:[69,114],getlazyresolverfunct:124,getlin:[109,144],getllvmcontext:15,getloopanalysisusag:125,getloopinfo:125,getmbb:124,getmemb:100,getmodulematchqu:124,getnam:[54,100,125,134,135,137,138,139,140,141,142,143,144],getnamedoperandidx:124,getnamewithprefix:[131,132,133,134,135],getnexttoken:[137,138,139,140,141,142,143,144],getnod:[52,124],getnullvalu:[100,140,141,142,143,144],getnumel:100,getnumoperand:100,getnumparam:100,getnumsuccessor:15,getnumvirtreg:13,getobjfilelow:58,getoffset:124,getopcod:[100,124],getoperand:[13,15,100,124],getoperationnam:52,getoperatornam:[141,142,143,144],getopt:43,getorcreatefoo:100,getorcreatetypearrai:144,getorinsertfunct:100,getpar:[100,140,141,142,143,144],getparamtyp:100,getpoint:75,getpointers:58,getpointertofunct:[79,100,144],getpointertonamedfunct:79,getpredopcod:72,getprocaddress:139,getprocesstripl:144,getproto:[134,135],getrawpoint:71,getrawsubclassoptionaldata:83,getreg:[13,124],getregclass:13,getreginfo:13,getregisterinfo:[13,124],getreservedreg:124,getreturntyp:100,getschedclass:124,getsextvalu:100,getsigjmp_buftyp:15,getsourc:60,getsrc:60,getsubtarget:124,getsubtargetimpl:[124,127],getsymboladdress:[56,131,132,135],getsymboladdressinprocess:[131,132,133,134,135],getsymbolnam:124,getsymbolt:100,gettargetlow:124,gettargetmachin:[131,132,133,134,135,139,140,141,142,144],gettargettripl:[133,134,135],getter:[75,100,109,114],gettermin:100,getthesparctarget:124,gettok:[136,137,138,139,140,141,142,143,144],gettoknam:144,gettokpreced:[137,138,139,140,141,142,143,144],gettransform:132,gettyp:[15,100],gettypenam:100,getunqu:100,getvalu:[15,100],getvalueid:83,getvaluetyp:124,getvaluevt:62,getx86regnum:124,getzextvalu:100,gfni:104,gfx600:0,gfx601:0,gfx700:0,gfx701:0,gfx702:0,gfx703:0,gfx704:0,gfx7:0,gfx801:0,gfx802:0,gfx803:0,gfx810:0,gfx8:0,gfx900:0,gfx902:0,ghc:[13,75],ghostli:100,gicomplexoperandmatch:62,gicomplexpatternequiv:62,gid:23,gif:77,gil:103,ginodeequiv:62,gisel:57,git:[11,49,63,109,130],github:[0,4,60,96,99,100,107,126,127,130,154],gitlab:102,give:[2,6,9,13,43,44,47,49,56,60,64,67,75,81,82,83,84,88,98,100,104,109,110,112,117,124,125,126,127,129,132,133,136,138,139,141,143,144,145,146,148,151,153],given:[0,2,3,6,7,11,12,13,15,20,23,25,26,28,29,36,37,40,41,43,44,46,51,52,53,54,56,60,61,62,63,68,69,74,75,79,82,92,98,99,100,102,103,109,111,112,113,114,116,117,122,124,125,127,129,131,132,133,134,135,137,138,139,141,147,148,151],gladli:[60,61],glanc:[15,145,153],glasgow:75,glc:0,glibc:77,glibcxx_3:60,gline:123,glob:32,global:[0,2,3,6,13,15,16,20,23,25,29,32,35,36,43,44,46,47,48,51,54,56,57,58,59,60,76,77,78,84,85,88,91,96,100,101,107,112,114,122,124,125,130,136,138,139,140,141,142,143,144,145,146,148,149,152,153],global_begin:[15,100],global_context:[148,149,150,151,152],global_empti:100,global_end:100,global_iter:100,global_load:0,global_s:100,globalalia:125,globalbuff:0,globaldc:100,globalisel:[104,130],globallayoutbuild:122,globallisttyp:100,globalref:91,globalrefss:91,globalsaa:82,globalstreamindex:88,globalvalu:62,globalvar:6,globalvari:[59,125,145,153],globalvarnam:75,globl:[0,53,84,112],glue:[13,54],gmail:[60,99],gmake:[120,125],gmir:62,gninja:[60,127],gnu:[1,11,13,15,21,23,31,35,50,51,53,57,60,64,65,66,75,116,124,125,143],gnu_hash:109,gnueabi:66,gnueabihf:[66,67],gnuwin32:[11,61],goal:[13,15,47,49,51,59,62,74,78,83,110,111,113,114,123,128,131,136,142,146,152],goat:15,goe:[3,8,11,13,46,51,54,56,58,70,75,77,81,82,84,100,102,109,124,129,139,142,144,152],gofmt:15,going:[2,12,13,15,36,54,58,75,96,100,102,104,105,125,126,135,136,139,140,141,142,144,146,149,150,151,152],goingn:100,gold:[11,13,60,65,85,130],goldberg91:58,goldberg:58,golden:15,gone:132,good:[2,9,13,15,17,43,44,45,49,52,56,57,60,65,68,75,76,80,81,83,84,98,99,100,102,104,105,107,109,112,113,116,118,120,124,125,131,138,139,140,141,142,149,150,151,152],goodby:110,goodwil:49,googl:[44,50,99,107],googleblog:77,googlegroup:77,googletest:20,gori:49,got:[0,13,43,60,100,144,149],gotcha:15,gotten:126,govern:75,gpg:60,gpgpu:44,gpl:[49,54],gplv3:63,gpr64:80,gpr:[13,75,80,81,104,116],gprc:13,gpu:[0,13,44,50,75,84,114,124,130],gpucc:44,gr16:13,gr1:75,gr32:[13,116,118],gr64:[13,80],gr8:[13,124],grab:[68,100,105,114,150,151,152],gracefulli:[77,100],grain:[62,128],grammar:[12,52,137,141,147,151],grammat:[120,137,147],grant:[49,83,131],granular:[0,62,93,113],granulated_lds_s:0,granulated_wavefront_sgpr_count:0,granulated_workitem_vgpr_count:0,graph:[7,9,10,11,13,31,36,42,51,60,75,76,103,109,116,120,124,125,126,138,139,140,141,142,144,148,149,150,151,152],graphic:[0,77,141,145,151,153],graphviz:[98,100,127],gratitud:96,great:[1,13,15,49,56,58,100,125,136,141,146,151],greater:[5,6,8,13,15,25,28,36,58,59,75,77,83,84,88,98,124,135],greatli:[56,100,109,112],greedi:[13,21,43,62],greet:116,gregg:127,grei:105,grep:[11,13,16,43,60,65,102,107,120,121,143],grid:0,grid_siz:0,griddim:84,gridsizei:84,gridsizex:84,gridsizez:84,grok:[54,138,148],grokabl:15,grosser:103,ground:14,group:[0,6,13,15,16,23,38,47,49,74,83,88,98,102,103,106,113,114,116,118,120,121,124,130,137,145,147,153],group_segment_align:0,groupsegmentfixeds:0,grow:[13,14,43,73,75,77,81,100,131,140,150],grown:[141,145,151,153],growth:[13,75,100],grpc:77,grpid:6,grunt:43,gte:75,gtu:84,gtx:84,guarante:[2,3,6,13,43,46,49,51,54,56,58,59,60,75,76,82,85,93,98,100,106,109,111,112,114,122,125,126,142,152],guaranteedtailcallopt:75,guard:[15,53,56,77,100,114,125,131],guess:[11,77,139],gui:[11,15,61],guid:[1,8,9,11,13,14,20,44,45,47,49,59,60,61,65,68,75,93,99,100,101,104,105,109,124,137,143,147,154],guidanc:[15,56,88],guidelin:[15,49,67,100],gunzip:[60,61],gvn:[3,56,76,125,132,133,134,135,139,140,141,142],gvneedslazyptr:124,gvnhoist:82,gvreg:62,gzip:60,h_inlined_into_g:40,habit:[15,98],hack:[99,125,136,144,145,146,153],hackabl:[136,146],hacker:[49,130],had:[0,5,8,25,62,75,83,84,100,103,110,111,112,113,125,129,131,132],hainan:0,half:[0,6,13,15,28,36,77,100,110,124],halv:[52,62],han:68,hand:[3,13,15,58,59,69,71,80,82,83,98,100,105,106,113,114,118,124,129,136,137,138,139,141,146,147,148,149,151,153],handi:[100,110,132,138,148],handili:15,handl:[0,3,5,11,22,33,43,46,49,50,53,56,57,58,62,69,71,73,74,78,80,84,85,92,102,103,104,106,109,111,112,113,116,117,123,124,125,126,130,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153],handleallerror:100,handledefinit:[137,138,139,140,141,142,143,144],handleerror:100,handleextern:[137,138,139,140,141,142,143,144],handleon:135,handler0:75,handler1:75,handler2:75,handler:[3,13,51,55,75,126,128,131],handlerpcoffset:55,handletoplevelexpress:[137,138,139,140,141,142,143,144],hao:103,happen:[0,3,13,14,15,16,17,46,49,55,58,60,75,79,82,83,98,99,100,102,109,111,112,114,125,129,137,138,139,140,144,147,148,149,150],happi:[99,100,101,142,152],happili:139,har:[60,101],harass:14,hard:[9,13,15,23,49,51,54,56,65,66,67,75,83,97,99,101,102,109,113,115,118,129,136,141,143,146,151],hardcod:[72,124],hardcodedsmalls:100,harddriv:65,harden:130,harder:[15,54,75,77,98,112,113,137,147],hardwar:[0,3,13,22,44,49,56,75,76,84,107,124],harfbuzz:77,harm:13,harmless:98,has:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,20,24,33,36,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,91,93,96,98,99,100,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],has_asmpars:74,has_asmprint:74,has_disassembl:74,has_jit:74,hasadsizeprefix:118,hasard:58,hasconflictingtyp:88,hasctrldep:[116,118],hasdelayslot:118,hasexternallinkag:100,hasfp:124,hasfparmv8:118,hasgc:83,hash:[0,2,13,36,47,49,60,75,77,83,96,100,102,120,129,145,153],hash_data_count:109,hash_funct:109,hash_map:100,hash_set:100,hashdata:109,hashes_count:109,hashfunctiontyp:109,hashtbl:[147,148,149,150,151,152],hasiniti:100,hasinternallinkag:100,hasjit:124,haskel:[75,100,145,153],hasn:[59,100,125,131,132],hasnam:100,hasoneus:15,hasopsizeprefix:118,hasrex_wprefix:118,hassideeffect:118,hassse2:116,hassse3:116,haswel:104,hat:129,hatsiz:129,have:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20,23,25,28,29,31,35,36,41,43,44,46,47,49,50,51,52,53,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,79,80,81,82,83,84,85,88,93,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],haven:[15,61,75,120,124,125,126,127,131,134,135],hawaii:0,hazard:[76,104],hblcnsviw:43,hd2xxx:0,hd6xxx:0,hdl:46,head:[1,15,44,58,60,62,75,99,102,110,116,117],headach:105,header0:75,header:[3,6,11,23,27,33,36,38,40,43,44,50,54,55,56,60,61,67,69,74,75,79,98,100,101,104,111,114,120,124,127,130,131,133,140,141,142,143,144,150,151,152,155],header_data:109,header_data_len:109,headerblock:96,headerdata:109,headlight:15,heal:55,heap:[2,75,76,82,107,108,111,112,129,142,145,152,153],heard:[44,50],heart:[26,112],heartble:77,heartfelt:96,heavi:[100,112,132],heavier:102,heavili:[36,54,58,100,130,145,153],heavyweight:100,heffernan:44,held:[5,49,75,99],hello:[12,47,60,61,75,116,136,146],hello_world:0,helloworld:12,help:[0,2,3,5,9,11,14,15,16,17,19,20,21,22,24,25,26,27,28,30,31,32,34,35,37,38,41,42,46,49,50,52,56,58,60,64,65,68,70,71,74,75,77,78,81,82,83,99,102,104,105,106,107,109,112,113,116,118,120,121,125,127,128,129,130,131,136,143,144,145,146,153],helper:[2,15,20,43,57,60,75,79,83,85,100,109,114,121,124,131,137,138,139,140,141,142,143,144,146,147,148,151,152],henc:[0,15,43,60,75,78,111,117],henceforth:[91,108],henderson2002:58,henrik:113,here:[0,1,2,3,9,11,12,13,15,16,23,36,43,44,47,48,50,51,54,56,58,59,60,61,62,64,65,66,68,69,72,75,76,77,78,79,80,82,83,84,88,93,96,99,100,102,104,106,107,108,109,111,112,113,115,116,117,118,120,121,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153,155],herebi:15,hertz:128,heterogen:0,heurist:[13,75,98,126,128,142,152],hex16:129,hex32:129,hex64:129,hex8:129,hex:[36,75,77],hexadecim:[35,36,43,75,116,129],hexadecom:35,hexagon:[13,60,75,114],hexinteg:117,hfc:55,hh567368:15,hi16:13,hidden:[6,13,15,19,28,43,71,73,75,88,100,102,109,125,131],hiddencompletionact:0,hiddendefaultqueu:0,hiddenglobaloffseti:0,hiddenglobaloffsetx:0,hiddenglobaloffsetz:0,hiddennon:0,hiddenprintfbuff:0,hide:[15,46,102],hideaki:13,hierarch:[6,98,103],hierarchi:[20,52,60,70,75,103,122,130,138],high:[0,1,2,4,6,23,36,44,46,48,49,50,51,52,54,56,58,59,68,79,82,84,92,98,100,101,104,109,112,116,121,122,123,124,126,128,130,133,142,145,152,153],higher:[2,8,13,49,57,61,62,75,82,85,98,100,111,112,123,130,131,133,137,145,147,153],highest:[0,5,75,137,138,139,140,141,142,143,144,147,148,149,150,151,152],highli:[13,44,56,58,75,77,100,101,133,142,152],highlight:[12,13,47,56,60,100,110,114,127,144],hihihi:100,him:83,himitsu:60,hint:[9,15,40,56,59,75,138,148],hipe:[13,75],his:100,histor:[1,12,15,59,75,100,112,121],histori:[49,60,96,99,102],hit:[7,15,77,82,100,134,135],hoc:[13,98,100],hoist:[0,2,3,82,98,100,111,125],hold:[0,1,13,14,43,51,58,60,74,75,77,79,80,83,98,100,101,103,107,109,116,118,121,124,125,128,132,136,137,138,139,140,141,142,143,144,147,148,149,150,151,152],hole:[43,75,112],hollow:129,home:[48,56,60,65,100,109,120,121],homeless:100,homepag:[60,61],hood:[47,60,121],hook:[9,13,51,101,102,140],hope:[15,49,58,83,97],hopefulli:[2,6,15,43,44,98,125,132,139,149],horizont:[16,75,104],hork:116,horribl:15,host:[0,1,11,13,15,22,50,58,66,67,75,79,84,99,100,102,120,121,130,131,132,133,134,135,143],host_fn:44,host_install_dir:66,host_onli:44,hosta:84,hostb:84,hostc:84,hot:[7,56,75,112],hotter:7,hottest:[37,75],hour:[1,106],how:[0,2,3,4,5,6,7,8,9,11,12,15,16,19,20,23,26,36,43,44,46,47,48,49,50,51,52,56,58,60,61,62,74,75,76,80,82,84,85,88,96,98,99,101,102,103,104,106,109,110,111,112,115,116,117,118,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],howev:[0,2,3,5,6,9,12,13,15,23,43,44,46,49,51,53,54,55,58,59,60,62,63,67,68,72,73,74,75,77,79,80,97,99,100,102,103,108,109,110,111,112,113,118,120,121,123,125,126,127,131,132,133,138,139,140,141,142,145,149,150,151,152,153],howto:[67,110,114,154],howtosubmitabug:60,howtousejit:27,hrf:0,hsatext:0,ht206167:77,html:[11,15,28,52,60,67,68,77,84,102,105,114,120],hton:135,htpasswd:49,http:[4,11,15,33,49,60,61,64,66,67,68,77,99,102,105,107,109,120,121,126,130,154],huge:[15,49,60,77,114,118,121],human:[10,14,15,24,25,28,30,31,34,37,40,60,75,80,83,98,118,125,129],hundr:56,hundt:44,hung:100,hunger:[145,153],hurdl:54,hurt:15,hvx:104,hwaddresssanit:75,hydra:1,hypersparc:124,hyphen:124,hypothes:91,hypothet:[13,51,83,92,100,112,125],i16:[0,13,75,84,104,124],i17:62,i1942652:75,i20:75,i24:75,i256:75,i29:75,i32:[0,5,7,8,13,16,46,47,51,54,55,58,62,72,73,75,80,83,84,98,100,104,109,110,111,112,118,121,122,124,126,142,145,152,153],i32imm:[116,124],i32mem:116,i386:[13,40,75,107],i48:75,i64:[0,5,8,13,16,46,47,59,75,84,111,112,118,122,124],i64imm:124,i65:75,i686:[13,16,107,121],i8086:143,i8mem:13,iOS:[60,75],iaddroff:13,icc:[60,109,123],icc_:124,icc_g:124,icc_n:124,icc_val:124,icelak:104,iceland:0,icmp:[6,46,55,100],icmp_eq:80,icmpinst:100,icon:99,icu:77,idea:[1,6,7,15,43,46,49,51,52,56,65,75,83,98,105,109,116,120,127,131,137,138,139,140,142,145,147,148,149,150,152,153],ideal:[15,62,74,77,100,112,124],ident:[1,2,5,13,14,15,16,23,46,58,67,75,76,80,83,88,98,100,102,106,109,114,121,122,127,139,140,142,146,147,148,149,150,151,152],identif:[60,67,75,109],identifi:[6,9,10,11,13,14,15,16,20,23,43,46,51,53,59,76,80,81,84,88,93,98,100,102,103,105,111,112,114,117,122,123,124,125,132,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],identifierexpr:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],identifierstr:[136,137,138,139,140,141,142,143,144],identifycudaprefer:44,identityprop:100,idiom:[43,44,46,100,103,138,148],idiomat:[15,100,103,121],idiv:13,idl:132,idnam:[137,138,139,140,141,142,143,144],ids:[36,47,128],idx0:75,idx1:[59,75],idx2:59,idx3:59,idx:[15,59,75,80,127,138,139,140,141,142,143,144],idxen:0,idxmask:75,ieee754:75,ieee:[0,21,23,44,56,75],ieee_mod:0,ifcond:[140,141,142,143,144,150,151,152],ifcont:[140,141,142,143,144,150,151,152],ifconvers:124,ifconvert:124,ifdef:[43,44,47,62,77,113,139,140,141,142,143,144,145,153],ifequ:75,ifexpr:[140,141,142,143,144,150,151,152],ifexprast:[140,141,142,143,144,150],iff:75,iffals:75,ific:43,ifloc:144,ifndef:[44,131,132,133,134,135],ifstream:84,iftmp:[140,141,142,143,144,150,151,152],iftru:75,ifunc:6,ifuncti:75,ifunequ:75,ignor:[0,2,6,7,13,16,25,29,31,33,36,43,46,49,55,60,74,75,77,81,83,88,93,100,109,123,124,130,131,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],ignore_remaining_arg:57,ii32:116,ill:[23,75],illeg:[0,13,43,54,59,62,75,84,98,100,102,112,123],illinoi:[15,49,131,132,133,134,135],illustr:[5,43,46,75,78,100,102,109,125,136,137,138,142,146,147,148,149,152],ilp32:[145,153],ilp:123,imac:123,imag:[13,35,36,53,75,79,93,141,151],image_comdat_select_associ:75,image_comdat_select_largest:75,image_debug_directori:93,image_debug_type_codeview:93,image_debug_type_except:88,image_debug_type_fixup:88,image_debug_type_fpo:88,image_debug_type_omap_from_src:88,image_debug_type_omap_to_src:88,image_file_32bit_machin:155,image_file_aggressive_ws_trim:155,image_file_bytes_reversed_hi:155,image_file_bytes_reversed_lo:155,image_file_debug_strip:155,image_file_dl:155,image_file_executable_imag:155,image_file_large_address_awar:155,image_file_line_nums_strip:155,image_file_local_syms_strip:155,image_file_machine_am33:155,image_file_machine_amd64:155,image_file_machine_arm64:155,image_file_machine_arm:155,image_file_machine_armnt:155,image_file_machine_ebc:155,image_file_machine_i386:155,image_file_machine_ia64:155,image_file_machine_m32r:155,image_file_machine_mips16:155,image_file_machine_mipsfpu16:155,image_file_machine_mipsfpu:155,image_file_machine_powerpc:155,image_file_machine_powerpcfp:155,image_file_machine_r4000:155,image_file_machine_sh3:155,image_file_machine_sh3dsp:155,image_file_machine_sh4:155,image_file_machine_sh5:155,image_file_machine_thumb:155,image_file_machine_unknown:155,image_file_machine_wcemipsv2:155,image_file_net_run_from_swap:155,image_file_relocs_strip:155,image_file_removable_run_from_swap:155,image_file_system:155,image_file_up_system_onli:155,image_rel_amd64_addr32nb:53,image_rel_amd64_secrel:53,image_rel_amd64_sect:53,image_rel_i386_dir32nb:53,image_rel_i386_secrel:53,image_rel_i386_sect:53,image_scn_align_1024byt:155,image_scn_align_128byt:155,image_scn_align_16byt:155,image_scn_align_1byt:155,image_scn_align_2048byt:155,image_scn_align_256byt:155,image_scn_align_2byt:155,image_scn_align_32byt:155,image_scn_align_4096byt:155,image_scn_align_4byt:155,image_scn_align_512byt:155,image_scn_align_64byt:155,image_scn_align_8192byt:155,image_scn_align_8byt:155,image_scn_cnt_cod:155,image_scn_cnt_initialized_data:[53,155],image_scn_cnt_uninitialized_data:[53,155],image_scn_gprel:155,image_scn_lnk_comdat:155,image_scn_lnk_info:155,image_scn_lnk_nreloc_ovfl:155,image_scn_lnk_oth:155,image_scn_lnk_remov:[53,155],image_scn_mem_16bit:155,image_scn_mem_discard:[53,155],image_scn_mem_execut:155,image_scn_mem_lock:155,image_scn_mem_not_cach:155,image_scn_mem_not_pag:155,image_scn_mem_preload:155,image_scn_mem_purg:155,image_scn_mem_read:155,image_scn_mem_shar:155,image_scn_mem_writ:155,image_scn_type_no_pad:155,image_section_head:88,image_sym_class_argu:155,image_sym_class_automat:155,image_sym_class_bit_field:155,image_sym_class_block:155,image_sym_class_clr_token:155,image_sym_class_end_of_funct:155,image_sym_class_end_of_struct:155,image_sym_class_enum_tag:155,image_sym_class_extern:155,image_sym_class_external_def:155,image_sym_class_fil:155,image_sym_class_funct:155,image_sym_class_label:155,image_sym_class_member_of_enum:155,image_sym_class_member_of_struct:155,image_sym_class_member_of_union:155,image_sym_class_nul:155,image_sym_class_regist:155,image_sym_class_register_param:155,image_sym_class_sect:155,image_sym_class_stat:155,image_sym_class_struct_tag:155,image_sym_class_type_definit:155,image_sym_class_undefined_label:155,image_sym_class_undefined_stat:155,image_sym_class_union_tag:155,image_sym_class_weak_extern:155,image_sym_dtype_arrai:155,image_sym_dtype_funct:155,image_sym_dtype_nul:155,image_sym_dtype_point:155,image_sym_type_byt:155,image_sym_type_char:155,image_sym_type_doubl:155,image_sym_type_dword:155,image_sym_type_enum:155,image_sym_type_float:155,image_sym_type_int:155,image_sym_type_long:155,image_sym_type_mo:155,image_sym_type_nul:155,image_sym_type_short:155,image_sym_type_struct:155,image_sym_type_uint:155,image_sym_type_union:155,image_sym_type_void:155,image_sym_type_word:155,imagin:[62,83],imagmag:[141,151],imagstart:[141,151],imap:60,imgrel:53,imit:[110,117],imlpement:77,imm32:13,imm:[13,36,81,116,124],imm_eq0:118,immateri:83,immedi:[0,2,3,6,10,13,15,16,23,28,36,46,51,53,54,62,75,79,81,82,84,88,98,100,102,106,111,112,116,124,128,131,132,133,134,135,139,142,145,149,152,153],immediatepar:75,immigr:14,immin:68,immleaf:62,immsext16:13,immsubreg:124,immt:118,immtyp:118,immtypebit:118,immut:[71,75,100,125],immutablepass:2,impact:[0,10,12,15,56,58,75,100,102,103,109],imped:75,imper:[15,58,140,142,150,152],impl:[100,125,134,135],implement:[0,3,10,12,15,16,20,21,23,26,43,44,46,48,49,51,52,53,57,59,60,62,63,69,73,74,76,77,81,82,84,98,99,102,105,107,109,111,112,114,117,122,126,127,128,129,130,131,132,133,134,135,136,138,139,140,141,142,143,144,146,148,149,150,151,152],implementor:[118,139,140,149,150],impli:[0,2,13,20,36,40,44,49,51,58,59,75,82,100,102,111,113,117,124],implic:[10,13,49,88],implicit:[13,15,16,51,75,80,100,114,116,124,127,130,140,150],implicitdef:13,implicitdefin:80,implicitli:[6,12,13,15,43,49,53,75,100,102,111,116,117,123,125,129,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],implicitus:13,importantli:[2,15,49,140,150],impos:[13,49,75,80,100,106,111],imposs:[2,3,5,49,124,131,145,153],impract:[85,100],improv:[0,2,20,51,56,58,60,62,68,75,77,83,98,99,100,102,104,109,112,124,125,131,133,139,145,149,153],imul16rmi8:13,imul16rmi:13,imul:13,in0:75,in1:[13,75],in2:13,in32bitmod:13,in64bitmod:13,inaccessiblemem_or_argmemonli:75,inaccessiblememonli:[6,75],inaccessiblememonly_or_argmemonli:6,inaccur:12,inaccuraci:75,inaddr_ani:135,inadvert:[16,113],inadvis:59,inalloca:[6,46,75,130],inapplic:65,inappropri:106,inbound:[46,47,56,59,75],inc32r:80,inc4:16,inc:[13,40,46,60,72,80,114,124,125],incant:44,incap:[6,145,153],incarn:52,incid:106,includ:[0,1,2,3,5,8,9,10,11,12,13,14,16,17,20,21,23,25,27,28,33,34,36,41,42,43,44,45,46,47,49,50,51,52,56,57,58,59,61,62,63,65,66,67,68,69,72,73,74,75,76,77,78,79,81,82,84,85,88,93,96,98,99,100,101,102,103,104,106,107,109,111,112,114,116,117,118,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153],include_directori:11,includedir:27,inclus:[0,15,28,42,75,101,113,124,131],incom:[13,49,62,75,100,124,140,142,150,151,152],incompat:[51,75,97],incomplet:[15,50,54,100,104,132,133,134,135],inconsist:[15,59,104,109],inconveni:[77,142,152],inconvertibleerrorcod:100,incorpor:[13,69,100,102],incorrect:[0,8,62,75,85,104,138,139,140,141,142,143,144,148,149,150,151,152],incorrectli:[0,75,136,138,148],incq:16,increas:[0,15,22,46,49,56,62,70,78,98,102,107,115,118,123,138,148],incred:[15,49,102],increment:[9,12,13,15,58,60,75,92,93,98,100,108,140,142,143,144,150,152],ind1:75,ind4:75,ind:144,indefinit:77,indent:[100,110,129,144],independ:[0,3,15,16,22,43,49,56,59,60,62,67,71,73,74,75,78,81,100,102,111,113,118,123,124,125,127,128,130],index2virtreg:13,index:[0,2,5,6,13,23,31,36,37,43,46,47,51,53,56,58,60,68,71,75,88,91,92,96,100,109,111,112,114,124,129,130,144],indexedmap:13,indexloc:100,indexreg:13,indic:[0,2,5,6,7,8,11,13,15,20,23,25,43,46,47,49,51,53,58,67,69,71,74,75,76,77,84,85,88,96,98,99,100,102,103,104,109,111,112,116,117,118,120,123,124,125,127,128,132,137,138,140,144,147,148,150],indirect:[0,10,13,46,53,54,77,92,111,112,124,133,134,135],indirectionutil:[134,135],indirectli:[0,3,15,20,75,116],indirectstubmanag:[133,134],indirectstubsmanag:[134,135],indirectstubsmgr:[134,135],indirectstubsmgrbuild:134,individu:[0,5,6,9,15,16,20,23,25,28,36,49,52,56,60,61,62,68,74,75,77,81,82,85,88,96,98,102,106,116,120,121,130,131,144],indivis:73,indiviu:13,induc:[103,130],induct:[2,56,60,125,138,140,142,148,150,152],industri:130,indvar:[75,100,125],indx:129,ineffici:[6,13,56,77,100,123,142,152],ineg:13,inequ:13,inexact:[0,75],inf:[0,21,22,43,75,109],infeas:76,infecti:100,infer:[5,10,13,15,21,22,26,44,56,62,69,75,85,112,125,129],inferattr:125,inferenc:13,inferior:48,infin:[0,75],infinit:[2,13,75,77,98],influenc:[5,75,76,109,125],info:[0,6,11,13,20,31,36,40,42,48,49,51,58,60,62,67,75,76,77,78,80,85,91,96,102,104,106,114,120,123,125,128,129,136,141,142,144,145,146,149,150,151,152,153],inform:[0,2,6,8,10,11,14,16,17,18,19,20,25,26,34,35,36,37,38,41,42,43,44,46,47,48,51,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,72,74,75,76,77,78,79,80,81,83,84,88,92,93,96,99,101,102,103,105,106,107,110,111,112,113,114,116,118,120,123,124,125,126,127,128,129,130,136,138,139,141,142,143,145,148,149,151,152,153,154],informativemailnotifi:64,infrastructur:[9,11,13,15,36,49,52,58,60,65,75,85,100,101,102,103,104,109,123,125,130,131,132,133,134,135],infrequ:125,infring:49,ing:[15,98,138,142,148,149,152],ingredi:103,inher:[12,54,75,93,100],inherit:[2,13,15,43,69,97,100,113,114,116,117,118,122,125],inhibit:[37,75,112],ini:74,init:[0,43,60,77,102,125,135,142,143,144,152],init_v:152,initi:[6,7,11,20,22,25,36,43,46,51,52,54,60,62,69,75,79,83,84,98,99,102,103,104,106,107,108,114,116,117,124,125,126,129,131,132,133,134,135,138,139,140,142,143,144,148,149,150,151,152],initialexec:[6,75],initialis:[43,118,126,143],initialize_ag_pass:125,initialize_native_target:[149,150,151,152],initialize_pass_depend:125,initializealiasanalysi:2,initializeallasmpars:143,initializeallasmprint:143,initializealltarget:143,initializealltargetinfo:143,initializealltargetmc:143,initializemodul:144,initializemoduleandpassmanag:[139,140,141,142,143],initializenativetarget:[135,139,140,141,142,144],initializenativetargetasmpars:[135,139,140,141,142,144],initializenativetargetasmprint:[135,139,140,141,142,144],initializepass:2,initializerconst:75,initialse:39,initid:6,initsynclibcal:3,initv:[142,143,144],inject:[15,46,104],inlin:[0,3,8,10,28,40,41,43,44,46,49,51,54,56,60,80,84,85,91,99,100,104,109,111,112,125,129,132,136,139,140,145,149,150,153],inline:[36,75,109],inline_hd1:44,inline_hd2:44,inlineasm:83,inlinedat:[16,75],inlinehint:[6,75],inlni:40,inner:[12,15,17,51,73,75,77,100,103,129,130],inner_a:75,innerloop:103,innermost:[103,123],innerstructti:75,innoc:[140,150],innov:104,inoperandlist:[118,124],inpredsens:72,input:[0,2,4,9,12,13,15,16,17,20,21,22,24,25,28,29,30,31,32,35,36,38,40,41,42,43,44,54,60,62,68,72,76,77,78,80,84,98,100,103,112,114,116,118,121,123,124,125,127,131,132,136,137,138,139,140,141,142,143,144,145,146,148,149,150,152,153,155],inputcont:129,inputfilenam:43,inrang:75,inreg:[6,13,75,124],inresumepart:46,ins:[5,13,72,116,118,124],insan:15,insensit:2,insert:[0,2,3,5,9,15,16,23,43,46,58,62,75,83,98,104,109,113,124,125,126,138,139,140,141,142,143,144,148,149,150,151,152],insert_subreg:80,insertbefor:100,insertbranch:124,insertbyt:77,insertdeclar:144,insertel:[5,16],insertion_block:[150,151,152],insertvalu:46,insid:[6,11,12,13,15,20,26,47,48,50,51,58,62,67,69,75,77,82,83,88,98,100,103,105,109,112,114,116,117,120,121,122,125,129,130,131,132,134,135,139],insidebundl:13,insidi:15,insight:[47,75,127],insignific:[29,75,111],inspect:[6,10,13,56,59,75,102,109,125,137],inspir:[75,98,109,127],inst:[98,100,116,124],inst_begin:100,inst_cal:6,inst_end:100,inst_invok:6,inst_iter:100,instal:[0,1,11,12,27,44,50,52,57,60,61,63,64,65,66,68,74,77,84,97,100,101,102,105,118,120,125,126,137,138,139,140,141,142,143,144,147,148,149,150,151,152],instalia:13,instalias:13,install_prefix:11,installeddir:50,instanc:[0,11,13,15,16,20,43,46,50,58,62,69,73,75,79,80,83,85,99,100,102,105,109,111,114,121,124,125,126,129,130,131,132,137,138,145,147,148,153],instanti:[20,28,43,44,69,79,100,103,114,116,118,124,125,129],instantiatetemplateattribut:114,instantli:100,instcombin:[9,57,100],instead:[2,3,6,9,11,12,13,14,20,22,26,28,31,32,34,35,36,41,43,44,46,47,48,49,51,53,54,56,57,58,59,60,62,64,65,68,69,72,73,74,75,76,77,80,83,84,98,100,102,103,106,108,111,112,113,117,121,124,125,126,127,128,129,130,132,133,136,137,138,139,141,142,145,146,147,148,149,151,152,153],instinct:0,institer:100,instlisttyp:100,instnam:9,instprint:114,instr0:83,instr1:83,instr2:83,instr:[0,11,13,28,37,42,47,58,116],instr_begin:152,instr_iter:13,instr_map:127,instraspect:62,instrinfo:[13,80,124],instrins:75,instritinclass:118,instrmap:124,instrprof:75,instrprof_:75,instrprofvaluekind:75,instrsch:100,instrsdrm:116,instrssrr:116,instruct:[2,6,9,10,11,15,16,21,22,23,25,36,37,39,42,44,45,46,49,50,53,55,56,57,58,60,63,66,68,70,73,76,82,83,84,85,99,102,103,104,106,108,109,111,112,114,116,118,121,122,123,125,126,130,138,139,140,141,142,143,144,145,148,149,150,152,153],instructor:124,instrumen:47,instrument:[1,8,11,28,37,47,59,75,77,85,88,98,104,128,130],instrumentationmap:126,instsp:124,insttoreplac:100,instvisitor:[52,100],insuffici:[44,65,75,109,113,124],insult:14,int16_t:[124,129],int32:111,int32_t:[58,88,126,129],int32ti:100,int32x4_t:5,int64_t:[100,129],int8_t:129,int8ti:100,int_get_dynamic_area_offset:75,int_of_float:[151,152],intd:16,integ:[0,3,7,13,15,16,23,25,37,43,44,46,47,51,52,56,58,62,77,80,83,88,100,102,104,109,112,116,117,121,123,124,129,138,148],integertyp:100,integr:[10,11,19,26,43,44,58,62,77,78,85,100,102,109,112,122,126,130,154],intel:[3,11,22,45,67,75,103,104,121,123,143],intel_pst:4,inteldialect:75,intellig:[75,100],intend:[1,2,3,11,12,13,14,16,23,29,33,43,49,51,52,56,58,60,62,75,78,79,81,85,93,98,100,102,104,106,111,113,117,121,124,125,130],intendend:75,intens:[56,100,123],intent:[5,12,13,23,49,75,78,85,117,142,152],intention:[15,75,125,137,147],inter:[2,8,49,56,75,76,113],interact:[3,9,11,13,43,51,58,60,75,79,82,99,102,106,109,112,120,124,131,137,144,145,147,153],intercept:77,interchang:[13,15],interest:[0,2,3,5,13,15,16,17,19,20,25,43,49,51,54,56,57,58,60,61,62,64,69,75,77,79,80,93,98,100,102,109,112,120,121,125,127,129,130,132,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],interfac:[0,11,13,15,20,43,45,48,49,51,57,58,60,63,71,72,74,75,77,78,83,84,98,109,111,114,116,124,125,130,131,132,133,136,137,138,145,146,147,148,149,153],interfer:[51,56,59,75],interim:10,interior:[58,69,76,112],interleav:[0,103,123],interleave_count:123,intermedi:[6,11,32,34,41,44,51,54,58,62,71,73,75,80,100,105,112,124,130,137,147],intermediari:100,intermingl:75,intermitt:60,intermodular:[78,130],intern:[2,6,11,12,13,17,20,36,40,44,46,47,51,54,56,59,60,75,78,79,80,84,85,92,96,100,112,113,114,116,118,120,122,124,125,126,129,130,131,138,142,144,148,152],internallinkag:100,internalread:80,internet:102,interoper:[3,51,58,75,96,131,145,153],interpret:[5,6,11,13,17,20,22,27,29,36,37,43,44,47,57,60,62,74,75,97,100,109,111,112,117,118,121,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],interprocedur:[2,75,78,85,125],interproceedur:132,interrupt:[15,20,55,75,77,113],intersect:15,interspers:128,intertwin:76,interv:[92,100],interven:[0,6,111],intial:100,intim:15,intimmleaf:62,intpr:80,intptr_t:[123,139,140,141,142,144],intptrsiz:58,intra:2,intraprocedur:[9,82],intreg:[72,124],intregsclass:124,intregsregclass:124,intregsregclassid:124,intregsregisterclass:124,intregssubclass:124,intregssubregclass:124,intregssuperclass:124,intregssuperregclass:124,intregsvt:124,intrepid:[137,147],intric:50,intrin:104,intrins:[37,42,56,76,80,100,104,108,122,123,124,130],intrinsicsnvvm:84,intro:[45,130,142,152],introduc:[2,3,4,13,16,46,47,62,68,69,73,75,82,83,92,98,100,102,103,111,112,116,118,124,131,132,134,135,140,141,142,150,151,152],introduct:[42,60,61,130,154],introductori:130,introspect:[71,75,78,81,112],intrus:[75,100],intscalarti:75,intti:75,inttoptr:[56,111],intuit:[75,82],invalid:[0,2,3,15,20,37,41,43,51,59,60,75,76,77,79,98,100,104,109,111,112,124,125,129,137,138,139,140,141,142,143,144,147,148,149,150,151,152],invari:[2,56,60,62,76,100,112,125],invas:[49,129],invent:96,invers:[75,98],invert:[56,75,121],invest:52,investig:[36,50,62,104,120,131,145,153],invidu:106,invit:[132,133,134,135],invoc:[1,9,11,13,16,17,37,46,50,57,60,75,77,85,125,126,127,128],invok:[0,2,6,8,9,11,12,13,15,16,28,43,46,51,56,58,60,62,73,77,78,79,80,83,85,111,112,121,124,125,126,128,131,137,142,147,149,152],invoke:75,invokeinst:100,invol:51,involv:[0,2,3,7,11,13,52,56,58,59,62,68,72,75,98,100,103,106,107,112,113,124,127,129,137,140,142,144,147,150,152],iommu:0,iostream:[84,127,143],ipa:76,ipc:113,ipi:[36,96],ipo:[76,83],iptr:[62,75],irbuild:[100,138,139,140,141,142,143,144,148,149,150],irc:[14,49,56,99,106],ircompilelay:[131,132,133,134,135],irgen:[56,134,135],irgenandtakeownership:[134,135],irread:11,irreduc:[75,98,124],irrelev:[2,59,75],irrespect:11,irtest:11,irtransformlay:[133,134,135],is64bitmod:124,is_base_of:69,is_dynamic_callstack:0,is_nul:55,is_open:84,is_ptr64:0,is_zero_undef:75,isa:[0,3,13,15,45,49,56,58,69,104,124,130],isabsoluteaddress:88,isaddresstaken:80,isalnum:[136,137,138,139,140,141,142,143,144],isalpha:[136,137,138,139,140,141,142,143,144],isascii:[137,138,139,140,141,142,143,144],isatleastorstrongerthan:3,isbarri:[116,118],isbasewithconstantoffset:62,isbinaryop:[141,142,143,144],isbranch:118,iscal:[116,118],iscommut:118,isconst:[0,6,100],isconstantpoolindex:124,isconvertibletothreeaddress:118,iscxxclass:109,isd:[3,13,52,124],isdeclar:100,isdef:13,isdefinit:[75,109],isdigit:[136,137,138,139,140,141,142,143,144],isdopcod:[13,52],isdoubl:116,isectcoff:88,isel:[13,42,62,76,116,124],iseldagtodag:114,isellow:[3,114],isempti:100,isextern:109,isexternalsymbol:124,isfirstclasstyp:83,isfloatingpointti:100,isfoo:15,isfunct:109,isglobaladdress:124,isgroup:88,ish:[141,151],isimmedi:124,isimplicitdef:118,isindirectbranch:118,isinlin:109,isintegerti:100,isjumptableindex:124,island:0,islandingpad:80,islazi:124,isload:13,isloadfromstackslot:124,isloc:[75,109],isloopinvari:100,islvalu:15,ismod:116,isn:[1,3,12,13,14,15,37,40,44,49,54,59,62,66,75,80,82,98,100,102,104,106,113,125,136,137,138,139,140,143,144,146,147,148,149,150],isnotduplic:118,isnul:15,isnullvalu:83,isobjcclass:109,isobviouslysafetofold:62,isol:[4,7,9,11,13,15,50,75,102,112,116,121,131,134,142,152,154],isomorph:54,isoper:[141,142,143,144],isoperandimmequ:62,isopt:43,isoptim:[75,109],isosdarwin:144,ispack:6,isphysicalregist:13,isphysreg:100,ispic:124,ispip:0,ispoint:83,ispointertyp:15,ispredic:118,isprefix:43,isprint:77,isproto:6,isref:116,isregist:13,isrematerializ:118,isrestrict:0,isreturn:[116,118],issafetospecul:112,isselector:88,isset:43,issimpl:3,issiz:100,isspac:[77,136,137,138,139,140,141,142,143,144],isstor:13,isstoretostackslot:124,isstrongerthan:3,issu:[3,5,12,13,14,20,31,43,49,53,56,57,60,62,65,68,75,100,102,104,109,112,114,121,125,129,136,139,140,142,145,146,149,150,152,153],istargetspecif:80,istermin:[116,118],istreambuf_iter:84,istruncatingstor:124,isunaryop:[141,142,143,144],isunord:3,isunpredicatedtermin:124,isus:13,isv9:124,isvararg:100,isvi:124,isvolatil:[0,75],itanium:[53,57,122],itanium_abi_tripl:121,item:[5,6,12,23,25,31,43,56,74,75,77,83,100,109,112,116,129,142,152],iter:[2,7,9,11,12,13,15,43,46,49,58,75,76,77,78,79,83,98,103,116,117,124,129,137,140,141,142,147,150,151,152],iteri:[148,149,150,151,152],ith:100,itinerari:[13,118,124],its:[0,2,5,6,7,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,29,30,32,34,35,37,38,41,42,43,44,46,47,49,50,51,52,56,57,58,59,60,62,63,64,68,69,72,73,74,75,76,77,78,79,80,82,83,98,100,102,103,104,106,107,109,110,111,112,113,114,116,118,119,120,121,122,123,124,125,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],itself:[1,2,5,6,11,13,15,17,20,26,28,43,46,49,51,52,54,56,57,58,59,60,61,67,69,70,73,74,75,77,78,83,92,100,102,103,105,106,107,109,111,112,116,117,121,125,129,131,132,133,134,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],iuml:13,ivar:109,ivi:104,jacqu:44,jag:92,jaguar:104,jam:103,jan:[23,103],japanes:60,java:[3,55,58,75,98,100,112,145,153],javascript:[75,111,145,153],jazz:101,jeff:113,jenkin:102,jessi:67,jingl:103,jingyu:44,jit:[9,11,15,17,22,27,49,54,58,60,61,70,74,75,84,97,111,120,130,136,138,140,141,142,143,144,145,146,147,148,150,151,152,153],jit_serv:135,jitcompilecallbackmanag:[133,134,135],jitcompilerfn:124,jitcompilerfunct:124,jite:[48,130,131,133,134,154],jitsymbol:[131,132,133,134,135],jitsymbolflag:[131,132,133,134,135],jitsymbolresolv:[131,132],jittargetaddress:[131,133,134,135],jmp:75,jne:13,job:[11,69,77,82,102,113,125,132],joerg:102,john:[15,49],join:[0,22,75,77,100,125,127],joke:14,joker:102,jonathan2251:154,jone:103,journal:103,journei:[142,152],jpg:77,json:[28,31,120],jsonnrevnum:102,judgement:49,juggl:44,juli:[58,102],jump:[6,10,43,46,53,70,75,101,122,124,133,140,144,150],jumptabl:[6,75,80],junip:0,junk:[147,148,149,150,151,152],just:[1,2,3,4,5,6,7,9,12,13,15,16,20,22,23,25,28,29,31,35,36,43,44,46,47,49,50,53,54,59,60,61,62,63,65,66,67,68,69,70,74,75,77,80,82,83,84,96,98,99,100,101,102,105,108,109,110,111,112,113,114,116,118,120,121,124,125,127,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],justifi:[23,78],justin:62,jvm:[145,153],kabini:0,kaleidoscop:[83,100,131,132,133,134,135],kaleidoscopejit:[132,133,134,135,139,140,141,142,144,154],kaveri:0,kawahito:13,keep:[2,13,16,43,44,46,49,50,54,62,69,75,78,82,83,98,100,102,103,107,109,118,121,123,125,126,130,133,136,137,138,139,140,141,142,143,144,145,146,147,148,151,152,153],kei:[0,6,13,15,49,62,69,72,75,80,83,100,102,112,118,125,132],kept:[0,2,15,46,49,76,106,125],kernarg:0,kernarg_address:0,kernarg_segment_align:0,kernarg_segment_byte_s:0,kernargsegmentalign:0,kernargsegments:0,kernel:[3,4,13,22,44,50,65,75,77,123,124,130,145,153],kernel_code_entry_byte_offset:0,kernel_code_version_major:0,kernel_param_0:84,kernel_param_1:84,kernel_param_2:84,kernelcodeentrybyteoffset:0,kernelparam:84,kevin:13,keycol:72,keyr:60,keystrok:15,keyt:100,keytyp:109,keyword:[2,13,43,47,57,59,75,77,109,116,117,118,121,123,125,136,140,141,142,143,144,146,150,151,152],kib:43,kill:[9,13,17,76,77,80,125],killal:77,kind:[0,3,6,8,13,14,15,21,23,25,43,47,49,51,52,54,55,57,58,62,69,71,74,75,76,77,78,80,82,83,88,98,100,106,109,110,111,114,118,122,127,128,131,141,142,143,144,151,152],kistanova:64,klau:102,klimek:99,knock:15,know:[2,3,5,9,11,12,13,15,20,43,47,48,49,51,54,56,58,60,61,64,70,75,77,78,84,96,99,100,102,106,109,110,112,120,121,122,123,124,125,129,131,132,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],knowledg:[6,13,15,47,49,58,75,81,85,96,98,110,121,145,153],known:[2,3,6,13,15,17,44,51,56,58,59,60,61,68,69,75,84,98,100,101,105,108,112,116,120,121,122,124,125,129,130,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],knownsafevalu:100,koblenz:103,komatsu:13,kryomodel:124,kryowrite_2cyc_xy_norsv_67ln:124,kryowrite_2cyc_xy_xy_150ln:124,ksdbginfo:144,kw1:77,kw2:77,kw3:77,kwalifi:155,kwd:[146,147,148,149,150,151,152],l10:127,lab:[64,130],label0:75,label:[0,6,7,13,46,51,54,55,58,62,73,82,83,84,98,100,124,127,140,142,150,152],label_branch_weight:8,labeltyp:100,labf:43,labor:43,labori:100,lack:[10,13,14,58,59,75,97,102,115,116,117,118,149],lad:43,laden:[145,153],lai:[13,15,59,75,76,100,122,144,149,150,151,152],laid:[5,13,49,66,75,91,92,96,100,149],lako:15,lambda:[62,100,131,132,133,134,135],lambdaresolv:[131,132,133,134,135],land:[46,49,51,73,75,80,112],landingpad:[46,51,98],landscap:102,lane:[0,62,75],lang:43,langref:[3,52,56,84],languag:[3,11,12,13,14,16,21,24,30,32,34,41,43,44,45,46,49,50,51,55,57,58,59,60,76,77,80,84,98,100,103,111,112,115,118,121,123,124,128,129,130,131,132,137,138,139,143,144,147,148,149],languagevers:0,lapc:104,larg:[3,6,9,13,15,17,20,22,25,43,44,49,50,53,60,62,68,72,73,75,77,82,84,92,96,98,100,101,109,111,112,118,120,121,124,126,128,133,139,149],largeconst:111,larger:[0,6,13,15,25,32,49,50,52,53,62,75,88,100,109,112,124],largest:[13,53,56,75,88],last:[6,13,15,16,20,23,43,46,49,51,61,68,69,75,82,85,92,99,100,102,110,112,116,117,121,123,124,125,128,131,136,139,141,144,148,151],lastchar:[136,137,138,139,140,141,142,143,144],lastinst:124,lastli:[71,121,125,144],lastopc:124,latch:75,late:[46,56,124],latenc:[13,22,75,127],later:[0,1,8,10,11,12,13,15,16,28,46,47,49,51,56,60,61,62,75,77,79,80,83,92,98,100,101,102,103,109,110,111,112,120,121,124,125,126,131,137,138,139,140,141,142,144,147,148,149,150,151,152],latest:[11,16,50,60,61,62,99,104,105],latter:[3,13,46,62,75,83,100,112,124,137,147],lattner:[102,145,153],lattnerrevnum:102,launch:[0,44,84,133],law:[15,106],lawyer:49,layer:[2,50,57,80,92,102,131,133,134,145,153,154],layout:[0,5,11,12,36,44,47,56,58,59,67,88,92,93,112,124,128,130,139,143],lazi:[2,75,131,132,139,154],lazier:132,lazili:[6,78,100,104,131,132,133,134,135,149],lazyresolverfn:124,lbar:13,lbb0_2:108,lbd:154,lcpi0_0:121,lcssa:76,lcuda:84,lcudart:44,lcudart_stat:44,ld64:85,ld_preload:107,ldflag:[27,131,132,133,134,135,138,139,140,141,142,143,144],ldl:44,ldm:75,ldpxpost:80,ldr:[81,118],ldrd:3,ldrex:3,ldri:124,ldrr:124,lds:0,lds_size:0,ldststoreupd:13,lea:[13,118],lead:[3,12,13,15,16,43,46,49,59,62,63,75,77,98,100,129,133,137,144,147],leader:15,leaf:[51,109,127],leak:[20,58,73,108,121,146],leaki:77,leaksanit:77,leap:99,leaq:108,leari:44,learn:[14,15,60,75,77,83,96,99,100,110,132,142,145,152,153],least:[0,2,3,4,5,6,13,15,20,23,36,43,49,51,57,62,65,67,75,77,82,98,100,102,105,111,112,114,116,124,126,128,137,138,139,140,141,142,143,144,147,148,149,150,151,152],leav:[4,20,43,46,49,54,58,60,63,70,75,77,83,84,98,99,102,103,109,124,132],leb128:[13,21],leb:47,lebarcheri:102,left:[0,6,9,12,13,15,23,49,56,75,83,98,100,118,120,123,124,129,131,137,138,140,144,147,148,150],leftr:83,legaci:[6,11,75,127,131,132,133,134,135,139,140,141,142,143],legacypassmanag:[127,132,133,134,135,139,140,141,142,143,144],legal:[0,3,44,49,51,52,59,75,80,81,82,84,100,103,112,121],legalact:124,legalizeact:124,legalizedag:52,legalizeop:52,legitim:15,len:75,length128b:104,length64b:104,length:[5,6,20,23,28,43,47,59,75,77,88,91,92,98,100,104,109,110,112,116,121,123,148,149,150,151,152],less:[0,2,4,5,6,13,15,20,23,28,43,47,49,54,56,58,60,65,73,75,77,83,98,100,102,103,105,109,110,112,118,121,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],lesser:5,let:[1,13,16,43,44,46,47,59,62,64,69,70,72,75,78,82,83,84,92,97,99,100,102,106,109,110,112,118,120,124,125,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],letitem:117,letlist:117,letter:[6,15,43,75,124,141,142,143,144,151,152],level:[0,1,2,3,6,8,11,14,16,21,25,26,36,38,44,45,46,48,49,51,55,56,57,58,59,60,73,74,76,79,82,83,84,85,92,96,100,101,102,104,111,112,116,120,121,122,123,124,125,126,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],leverag:[58,60,100,128],lex:[117,136,144,146,147,148,149,150,151,152],lex_com:[146,147,148,149,150,151,152],lex_id:[146,147,148,149,150,151,152],lex_numb:[146,147,148,149,150,151,152],lexer:[57,127,137,138,139,141,142,143,144,145,147,148,149,151,152,153,154],lexic:[13,15,54,75,109,112,137,139,144,147,149],lexicalblock:144,lexicograph:[15,83],lexicon:130,lexidentifi:[52,127],lexloc:144,lf_typeserver2:109,lfoo:13,lfunc_end0:0,lgkmcnt:0,lgtm:[76,99],lhs:[147,148,149,150,151,152],lhs_val:[148,149,150,151,152],lhse:[142,143,144],lib64:[11,44,60],lib:[0,11,13,19,25,27,36,38,43,44,48,50,52,58,61,63,67,80,83,100,101,107,109,113,114,124,125,130,131,132,133,134,135,138,139,140,141,142,143,144],libc:[15,44,49,60,66,75,77,100,145,153],libcal:[62,120],libclang_rt:126,libclc:49,libcmt:61,libcuda:84,libcxx:[11,60,102,105],libcxxabi:[11,60],libdir:27,liber:49,libffi:[11,97],libfil:27,libfuzz:[57,104,130],libgcc1:67,libgcc:108,libit:43,libllvm:[11,60,97],libllvmcor:100,libllvmir:100,liblto:63,liblzma:67,libm:[138,139,148,149],libnam:[27,125],libomp:[60,105],libopag:97,libpath:33,libpo:43,librari:[2,3,4,6,11,12,17,19,22,23,25,26,27,28,34,36,38,41,42,45,48,49,50,54,56,58,59,61,62,66,67,70,74,78,84,85,91,98,109,121,123,124,127,129,130,131,136,137,138,139,140,141,142,143,144,145,146,147,148,151,153],library_nam:74,librarygroup:74,librarynam:[58,101],libsampl:101,libsfgcc1:67,libstdc:[15,44,50,60,67],libsupport:102,libsystem:15,libthread_db:48,libtinfo:67,libxml2:[67,77],libxml:77,libxxx:67,libz:75,lic:98,licens:[15,68,125,131,132,133,134,135],licm:[3,56,75,76,100,125],lie:[43,112],lies:[58,75,111],life:[15,44,49,56,77],lifelong:130,lifetim:[13,46,49,56,58,100,125,126,133],lift:[56,103,132],light:[15,75],lightli:[75,105],lightweight:[15,20,50,100],like:[0,1,2,3,6,8,9,11,13,16,22,23,29,36,43,44,46,47,49,50,51,52,55,56,57,58,59,60,61,62,65,66,67,69,74,75,77,78,79,80,81,82,83,84,85,92,96,97,98,99,102,103,104,105,107,108,109,110,111,112,113,116,117,118,120,121,122,124,125,126,127,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],likeli:[8,75],likewis:[60,75],limit:[0,3,9,13,14,15,17,26,36,43,49,53,56,58,59,60,71,75,77,82,88,98,100,102,106,108,109,111,112,125,129,130,139,140,141,144,149,150,151],linaro:[65,66],line:[0,1,3,9,11,12,13,15,16,17,20,21,22,23,24,25,28,30,31,32,34,35,36,37,38,40,41,42,44,47,48,49,51,57,58,60,61,63,70,71,74,75,76,77,80,82,85,88,91,96,97,100,101,102,105,109,110,116,118,120,121,124,125,127,129,130,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],linear:[2,13,21,22,59,60,88,100,102,103,125],linearscan:[13,22,125],lineno:144,linger:112,link:[0,2,3,4,9,11,13,15,17,18,19,23,27,28,33,35,41,43,44,47,49,53,57,58,66,67,68,70,74,75,76,77,82,83,85,88,93,97,98,99,100,101,102,105,106,107,108,109,110,119,120,121,122,124,125,126,127,130,131,133,136,138,139,141,143,146,148,149,150,151,152,153],link_compon:101,linkabl:0,linkag:[6,13,29,40,56,60,83,84,100,131,138,144,148],linkagenam:75,linkagetyp:100,linkallcodegencompon:125,linker:[0,9,10,11,13,19,21,27,43,53,58,60,63,66,67,74,84,85,88,93,100,107,109,121,124,130,131,141],linkinfo:96,linkonc:[6,60,75,84,100],linkonce_odr:[6,56,75,84],linkonceanylinkag:100,linkonceodrlinkag:100,linpack:123,linu:102,linux:[3,11,13,15,44,48,50,51,57,60,63,65,66,67,75,77,104,121,126,130,138,139,143],liquid:0,lisp:[58,145,153],list:[0,2,3,6,8,9,11,13,14,16,17,18,19,20,21,22,23,25,26,27,28,29,36,37,40,41,42,48,49,50,51,52,54,56,57,58,60,62,67,68,69,70,71,72,74,76,77,78,79,80,81,82,83,84,92,97,98,99,101,102,105,106,107,108,109,110,111,112,114,116,117,118,121,123,124,125,126,127,136,145,146,153],list_nam:12,list_of_list:12,list_property_nam:74,listconcat:[116,117],listen:135,lit:[1,11,19,61,101,102,109,120,121],lit_arg:121,lit_config:20,lit_filt:20,lit_num_shard:20,lit_run_shard:20,litconfig:20,liter:[6,12,15,23,43,55,75,80,81,100,116,117,129,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],literatur:13,litloc:144,litter:49,littl:[0,5,6,13,43,50,54,58,59,60,62,65,75,83,85,96,98,100,109,110,113,122,124,125,128,132,136,137,138,139,140,141,142,143,144,145,146,147,148,151,152,153],litvalu:6,live:[0,2,5,11,15,44,51,58,60,61,62,70,73,75,76,78,98,100,103,109,111,112,125,126,138,139,142,148,152],live_begin:58,live_end:58,live_iter:58,live_s:58,livecount:58,livein:80,liveinterv:[13,22],liveintervalanalysi:13,liveoffset:58,liveonentri:82,liveout:[111,112],llbuilder:152,llc:[9,13,16,17,19,22,55,57,58,60,61,70,75,80,84,85,109,112,121,124,125,127,143],lld:[0,11,15,33,60,66,85,102,104],lldb:[11,15,48,49,60,74,100,102,109],lli:[17,19,21,48,60,61,70,85,125],llibnam:43,lllexer:[52,127],llparser:[52,127],llt:62,lltok:52,llvalu:[148,149,150,151,152],llvm:[1,10,16,17,18,42,43,44,48,55,56,62,66,71,73,74,79,80,82,83,85,88,92,93,96,99,105,106,107,110,116,117,118,122,129,131,132,133,134,135,136,137,141,143,144,146,147,151],llvm_:12,llvm_abi_breaking_check:11,llvm_all_target:[60,124],llvm_analysi:[148,149,150,151,152],llvm_ani:52,llvm_append_vc_rev:11,llvm_build_32_bit:11,llvm_build_dir:60,llvm_build_doc:11,llvm_build_exampl:11,llvm_build_instrumented_coverag:11,llvm_build_llvm_dylib:[11,60],llvm_build_root:11,llvm_build_test:11,llvm_build_tool:11,llvm_cmake_dir:11,llvm_compiler_job:11,llvm_create_xcode_toolchain:11,llvm_definit:11,llvm_dir:[11,83],llvm_doxygen_qch_filenam:11,llvm_doxygen_qhelpgenerator_path:11,llvm_doxygen_qhp_cust_filter_nam:11,llvm_doxygen_qhp_namespac:11,llvm_doxygen_svg:11,llvm_dylib_compon:[11,60],llvm_enable_abi_breaking_check:100,llvm_enable_assert:[11,100],llvm_enable_cxx1i:11,llvm_enable_dia_sdk:11,llvm_enable_doxygen:[11,60],llvm_enable_doxygen_qt_help:11,llvm_enable_eh:11,llvm_enable_expensive_check:11,llvm_enable_ffi:11,llvm_enable_lld:11,llvm_enable_lto:11,llvm_enable_p:11,llvm_enable_pedant:11,llvm_enable_project:11,llvm_enable_rtti:11,llvm_enable_sphinx:[11,60],llvm_enable_thread:11,llvm_enable_warn:11,llvm_enable_werror:11,llvm_enable_zlib:11,llvm_executionengin:[149,150,151,152],llvm_executionengine_orc_kaleidoscopejit_h:[131,132,133,134,135],llvm_external_:11,llvm_external_project:11,llvm_gc_root_chain:58,llvm_gcc_dir:120,llvm_include_dir:11,llvm_include_exampl:11,llvm_include_test:11,llvm_include_tool:11,llvm_install_binutils_symlink:11,llvm_install_doxygen_html_dir:11,llvm_install_ocamldoc_html_dir:11,llvm_install_sphinx_html_dir:11,llvm_lib:11,llvm_libdir_suffix:11,llvm_library_vis:58,llvm_link_llvm_dylib:11,llvm_lit_arg:11,llvm_lit_tools_dir:[11,61],llvm_map_components_to_libnam:11,llvm_map_components_to_librari:11,llvm_obj_root:[101,120,121],llvm_on_unix:113,llvm_on_win32:[113,139,140,141,142,143,144],llvm_on_xyz:113,llvm_optimized_tablegen:[11,60],llvm_package_vers:11,llvm_parallel_compile_job:11,llvm_parallel_link_job:11,llvm_profdata_fil:[1,11],llvm_reverse_iter:11,llvm_revis:11,llvm_scalar_opt:[149,150,151,152],llvm_site_config:[61,121],llvm_src_dir:65,llvm_src_root:[101,120],llvm_svn_rw:48,llvm_tablegen:11,llvm_target:[149,150,151,152],llvm_target_arch:11,llvm_target_definit:124,llvm_targets_to_build:[11,50,60,61],llvm_tools_binary_dir:11,llvm_unreach:[15,83,100],llvm_use_intel_jitev:11,llvm_use_link:11,llvm_use_oprofil:11,llvm_use_sanit:11,llvm_yaml_is_document_list_vector:129,llvm_yaml_is_flow_sequence_vector:129,llvm_yaml_is_sequence_vector:129,llvm_yaml_strong_typedef:129,llvmanalysi:101,llvmasmpars:101,llvmbb:130,llvmbc:6,llvmbitcod:52,llvmbitread:101,llvmbuild:[26,130],llvmbuilder:149,llvmcfiverifi:10,llvmconfig:11,llvmcontext:[75,85,127,138,139,140,141,142,143,144],llvmcontextimpl:127,llvmcore:[68,101,105],llvmcreatedisasm:81,llvmcreatesimplemcjitmemorymanag:111,llvmdevmeet:62,llvmdisasminstruct:81,llvmdisassembler_option_usemarkup:81,llvmdummi:124,llvmdummyasmprint:124,llvmdummycodegen:124,llvmfoldingbuild:149,llvmfuzzeriniti:77,llvmfuzzertestoneinput:77,llvmgccdir:120,llvmgettypekind:52,llvmgold:63,llvmgrep:60,llvmhello:125,llvminitializesparcasmprint:124,llvminitializesparctargetinfo:124,llvmlab:102,llvmlib:101,llvmlibthin:33,llvmmemorymanagerallocatedatasectioncallback:111,llvmpassnam:11,llvmpush:102,llvmrock:15,llvmscalaropt:101,llvmsetdisasmopt:81,llvmsupport:[60,101],llvmtarget:101,llvmtargetmachin:124,llvmtop:125,llvmtransformutil:101,llvmtypekind:52,llvmtyperef:52,lma:127,lmalloc:43,lnt:[67,102,105,120,121],lo12:53,lo16:13,load:[0,2,3,4,5,6,9,11,15,16,17,20,21,22,26,29,36,41,43,46,48,49,51,53,55,58,59,62,70,74,76,77,78,80,81,82,83,84,98,100,102,103,104,107,109,111,112,121,122,124,126,127,131,135,142,143,144,152],loadabl:58,loadable_modul:58,loader:[0,60,80,139],loadinst:15,loadlal:75,loadlibraryperman:[131,132,133,134,135],loadobject:79,loadregfromaddr:124,loadregfromstackslot:[13,124],loadsdnod:100,loc0:111,loc1:111,loc:[31,109,112,124,144],local:[0,2,6,7,13,15,16,21,22,28,29,35,43,44,50,51,54,58,65,66,76,79,83,84,98,100,103,107,109,112,114,117,121,125,129,136,138,139,146,148,149],local_unnamed_addr:[6,75],localaddress:75,localdynam:[6,75],localescap:51,localexec:[6,75],localrecov:51,locat:[0,2,3,11,13,16,19,20,23,26,36,43,47,51,55,56,58,59,67,70,75,76,79,80,81,84,98,100,101,105,106,107,109,111,112,113,120,121,123,124,129,130,141,142,151,152],lock:[3,56,75,100,102,125],log10:123,log2:123,log:[2,9,20,49,60,77,98,99,100,102,120,123,126,127,128],logallunhandlederror:[134,135],logarithm:[6,75,100],logcount:88,logerror:[137,138,139,140,141,142,143,144],logerrorp:[137,138,139,140,141,142,143,144],logerrorv:[138,139,140,141,142,143,144],logfil:126,logger:106,logic:[13,15,16,20,49,59,62,69,74,75,83,88,98,100,103,131,132,133,134,135,137,140,141,142,148,150,151,152],longer:[3,13,15,23,37,44,49,54,56,58,71,75,77,98,100,101,102,110,125,132,139,142,152],longjmp:[75,145,153],look:[2,3,6,11,12,13,15,16,20,31,36,40,43,44,46,47,48,49,51,52,58,59,60,61,63,68,69,74,75,76,78,80,82,83,84,85,88,92,96,98,99,100,101,102,108,109,110,111,112,114,116,117,121,122,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152,153],lookup:[15,31,60,62,75,83,96,98,100,124,128,131,132,138,141,145,148,151,152,153],lookup_funct:[148,149,150,151,152],lookuptarget:143,loop:[0,2,3,13,44,46,56,58,60,76,77,83,85,100,103,112,124,130,136,137,138,139,141,142,143,144,145,146,147,148,149,151,152,153],loop_bb:[150,151,152],loop_end_bb:[150,151,152],loop_header_weight:75,loopbb:[140,141,142,143,144],loopcond:[140,141,142,143,144,150,151,152],loopend:[140,141,142,143,144,152],loopendbb:[140,141,142,143,144],loophead:[75,140,141],loopinfo:125,loopinfobas:100,loopinfowrapperpass:125,looppass:85,loopunswitch:98,loopunswith:56,looputil:125,loopvector:103,loopvectorizationplann:103,loos:118,lore:1,lose:[62,102,109,125,145,153],loss:[58,100,102],losslessli:83,lost:[51,54,75,104,145,153],lot:[1,9,12,13,15,43,49,52,54,58,59,60,65,69,71,75,80,97,98,100,102,109,118,120,124,125,126,129,133,136,137,138,139,141,142,144,145,146,147,148,149,151,152,153],love:100,low:[0,4,6,13,25,36,38,43,52,58,59,75,83,84,92,100,103,104,112,113,116,124,128,130,137,141,142,147,151,152],lower16:53,lower:[2,3,5,13,15,42,44,46,51,52,54,56,73,80,107,111,112,114,123,124,137,141,142,145,147,151,152,153],lower_bound:100,loweralloc:125,lowerbound:75,lowercal:127,lowercas:[124,139,149],lowerfp_to_sint:124,loweroper:124,lowerswitch:62,lowertypetest:122,lowest:[3,5,15,47,75,137,138,139,140,141,142,143,144,147,148,149,150,151,152],lpad:[46,51,75],lpae:3,lpc0:80,lpechacek:4,lpm:125,lrt:44,lsampl:101,lsb:[13,128],lsbit:100,lsda:76,lsl:53,ltmp1:[80,112],ltmp:53,lto:[6,46,76,78,85,122],lto_codegen_add_modul:78,lto_codegen_add_must_preserve_symbol:78,lto_codegen_compil:78,lto_codegen_cr:78,lto_codegen_set_debug_model:78,lto_codegen_set_pic_model:78,lto_module_cr:78,lto_module_create_from_memori:78,lto_module_dispos:78,lto_module_get_num_symbol:78,lto_module_get_symbol_attribut:78,lto_module_get_symbol_nam:78,lto_module_is_object_fil:78,lto_module_is_object_file_for_target:78,lto_module_is_object_file_in_memori:78,lto_module_is_object_file_in_memory_for_target:78,lua:58,luckili:58,lvalu:100,lvl:127,lvm:144,lying:76,m1writenmisc1:124,m35qpb:127,m64:50,m7170:0,m_func:100,mac:[23,48,60,100,125],mach:[6,40,45,75],mach_universal_binari:40,machin:[0,5,10,11,15,16,20,21,22,28,31,33,42,44,48,49,50,58,60,61,64,65,66,67,75,76,77,79,83,84,88,100,102,109,112,114,123,125,128,130,131,135,139,144,145,149,153,155],machine_kind:0,machine_version_major:0,machine_version_minor:0,machine_version_step:0,machinebasicblock:[80,100,124],machineblockfrequencyinfo:7,machinecodeemitt:124,machinecombin:62,machineconstantpool:[13,80],machineconstantpoolvalu:80,machinecs:62,machineframeinfo:13,machinefunct:[62,80,100],machinefunctioninfo:[13,80],machinefunctionpass:[85,124,127],machinefunctionproperti:62,machineinstr:[21,22,55,62,114,121,124],machineinstrbuild:62,machineirbuild:62,machinememoperand:3,machinemoduleinfo:80,machineoperand:[13,124],machinepassregistri:125,machinepassregistrynod:125,machineregisterinfo:[13,62],machineri:[69,120],macho:[6,13,79],machoobjectfil:100,macinfo:75,maco:[44,54,60,77,85,100],macosx10:75,macport:97,macro:[11,15,20,28,31,41,43,44,47,75,77,104,114,118,124,125,139,149],made:[2,5,6,10,13,15,44,49,51,54,55,56,59,68,69,75,82,83,98,100,101,102,107,108,109,110,112,114,115,118,125,129,130,131,139,140,142,145,150,152,153],mag:75,magic:[3,23,60,75,77,92,100,109,141,151],magnif:[136,141,146,151],magnitud:75,mai:[0,3,5,6,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,28,31,32,35,37,43,44,46,48,49,50,51,52,54,56,58,59,60,61,62,63,64,65,66,68,71,73,74,75,76,77,78,79,80,82,84,85,88,92,96,98,100,101,102,103,104,106,107,109,111,112,113,116,118,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,138,139,140,141,142,143,144,145,146,148,150,151,152,153],mail:[14,15,49,57,60,64,68,99,101,104,105,106,110,112,126,127,145,153],mailer:49,main:[5,7,11,13,15,28,40,43,46,47,48,49,51,57,60,61,62,63,64,66,68,73,74,75,77,78,84,98,100,102,104,109,110,116,118,121,122,124,125,126,127,130,131,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],main_loop:[147,148,149,150,151,152],mainfun:135,mainli:[44,62,75,83,101,114],mainlin:[49,68,102],mainloop:[137,138,139,140,141,142,143,144],maintain:[0,2,3,6,12,13,15,43,49,50,52,58,68,75,83,100,102,107,109,111,113,118,125,128],mainten:[49,72,78],maj:105,major:[2,13,15,16,47,51,54,56,60,61,62,68,75,83,85,88,97,98,100,102,103,104,109,118,121,124,142,152],majorvers:88,make:[0,1,2,3,5,6,9,10,11,12,13,14,16,17,20,21,23,26,27,28,42,43,44,46,47,48,50,51,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,73,74,75,76,77,78,82,83,84,85,88,97,98,99,101,102,103,104,105,106,107,109,110,111,112,113,115,116,118,120,121,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],make_error:100,make_error_cod:100,make_pair:[83,142,143,144],make_rang:100,make_shar:[131,132,133,134],make_uniqu:[132,133,134,135,137,138,139,140,141,142,143,144],makefil:[11,13,26,27,54,58,60,70,78,130,138,148],makelight:15,makellvm:60,maken:135,makestruct:44,maketir:15,makeup:100,makevehicl:15,malform:[9,44,77,98,100],malloc:[46,58,77,100,107,125,130,145,153],malloc_limit_mb:77,mallocbench:120,man:[11,43,60,121,130],manag:[0,2,9,14,17,44,54,55,57,58,59,61,64,68,75,76,79,84,85,100,105,111,112,124,125,131,132,133,134,135,139,140,141,142,145,152,153],mandat:[13,102],mandatori:[56,61,75,100,124],mandel:[141,151],mandelbrot:[136,141,146,151],mandelconverg:[141,151],mandelhelp:[141,151],mangl:[15,49,75,109,131,134,135],manglednam:[131,132,133,134,135],manglednamestream:[131,132,133,134,135],mangler:[124,131,132,133,134,135],mani:[1,2,3,4,5,6,7,8,9,12,13,15,16,29,43,44,51,52,54,55,58,59,60,61,66,67,69,70,73,74,75,77,82,84,88,98,99,100,102,104,105,109,111,112,113,120,121,123,124,125,126,128,129,131,136,137,138,139,140,141,142,145,146,147,148,149,150,151,152,153],manipul:[13,15,19,26,36,54,60,71,100,103,122,142,152],manner:[0,3,13,14,47,49,51,59,75,85,100,112,124],manpag:12,mantissa:75,manual:[0,9,10,11,13,15,41,49,56,58,59,60,62,64,66,68,69,96,99,109,112,118,121,123,124,125,126,130,153],map:[2,6,15,18,20,28,36,43,52,53,62,76,79,82,83,84,91,96,102,109,114,122,123,126,127,128,130,137,138,139,140,141,142,143,144,148,149,150,151,152,155],mapopt:129,mappingnorm:129,mappingnormalizationheap:129,mappingtrait:129,maprequir:129,mapsectionaddress:79,maptag:129,mapvector:15,march:[16,21,22,66,67,70,103,109,143],mark:[0,1,3,6,10,13,15,20,44,46,47,48,51,55,56,58,60,68,75,81,83,98,100,104,111,112,118,121,124,128],marker:[13,15,20,43,49,100,112,128],markup:[0,15,77,110],marshal:111,mask:[0,13,15,16,56,58,71,103,114,124,128,129],maskedbitset:129,maskedbitsetcas:129,massag:15,massiv:[29,77,114,130],master:[60,64,99,101,102,130],match:[0,3,6,8,9,12,15,17,19,20,28,29,31,32,36,43,44,46,47,51,52,57,58,59,60,62,66,69,74,75,77,78,80,88,96,98,100,102,109,112,114,116,120,121,124,125,127,128,129,136,138,139,146,147,148,149,150,151,152],matcher:[13,16,42,77,114],matchinstructionimpl:13,materi:[14,62,83,103],math:[12,15,21,22,43,56,84,104,109,123,136,139,141,146,151],mathemat:[54,75,83,84,137,147],mathlib:104,matrix:58,matter:[3,15,49,52,75,111,125,149],matthew:102,matthewsrevnum:102,mattr:[16,21,22,124,143],matur:[43,56,58],max:[20,43,44,47,75,104,127],max_dx10:0,max_fp16:0,max_int_bit:100,max_len:[57,77],max_sgpg:0,max_sgpr:0,max_total_tim:77,max_vgpg:0,max_vgpr:0,maxatomicsizeinbitssupport:3,maxflatworkgroups:0,maxim:[6,22,77,136,146],maximum:[0,2,3,7,11,13,18,25,31,43,62,75,77,83,100],maxsiz:15,may_throw:51,mayalia:[2,75],mayb:[52,77,114,126,145,153],maybe_instru:126,maybeoverridden:83,mayfail2:100,mayfail:100,mayload:118,mayreadfrommemori:3,maystor:118,maytrap:75,maywritetomemori:[3,100],mbb:[13,124],mbbi:13,mcasmpars:13,mcasmstream:13,mccfiinstruct:80,mccodeemitt:[13,114],mcdesc:124,mcdisassembl:13,mce:124,mcexpr:13,mcinst:114,mcinstlow:13,mcinstrdesc:62,mcjit:[56,60,130,131,139,140,141,142,144],mclabel:13,mcobjectstream:13,mcode:53,mcoperand:13,mcpu:[0,21,22,65,67,84,121,124],mcregaliasiter:13,mcsectioncoff:13,mcsectionelf:13,mcsectionmacho:13,mcstreamer:58,mcsymbol:58,mctargetdesc:114,mctargetstream:13,md5:[47,49],md_prof:8,mdnode:[8,75],mdstring:[8,75],mdtupl:75,meabi:21,mean:[0,2,4,5,6,11,12,13,14,15,16,20,23,35,37,43,49,51,53,56,58,59,60,63,66,67,68,69,73,75,77,78,80,82,83,85,88,91,92,93,98,99,100,101,102,106,107,109,112,113,115,116,117,118,124,125,129,131,132,136,138,139,140,142,144,145,146,148,149,150,152,153],meaning:[0,22,41,44,58,59,75,100,110,112,114,128],meaningless:100,meant:[41,47,60,61,75,82,83,100,105,106,110,116,117,130],measur:[4,23,100,128],meat:149,mechan:[0,6,10,13,20,51,56,58,63,74,75,76,79,84,100,106,109,112,113,117,120,122,123,125,130,131,148],med:127,mediat:[2,106],medium:[22,75],meet:[0,13,14,49,60,83,102,103,106,125],megabyt:17,mem2ref:112,mem2reg:[56,58,100,142,152],mem:[46,81,98,147,148,149,150,151,152],mem_address:13,mem_not_nul:46,memalign:107,memarg:73,member:[12,13,14,15,23,33,36,44,69,75,78,79,98,109,116,120,121,122,123,124,128,129,131,133],memberlist:124,membership:[51,100],memcheck:[20,121],memcpi:[2,3],memcpyopt:3,memdep:2,memfenc:0,memop:37,memor:15,memori:[3,5,11,13,15,17,18,20,29,37,44,46,48,51,52,54,55,58,59,62,65,70,73,76,77,78,79,80,81,82,84,85,104,107,108,109,111,112,114,122,123,124,125,126,128,129,131,132,133,134,135,137,138,139,140,141,143,144,145,146,153],memory_order_acq_rel:[3,75],memory_order_acquir:[3,75],memory_order_consum:3,memory_order_relax:[3,75],memory_order_releas:[3,75],memory_order_seq_cst:[3,75],memoryaccess:82,memorybuff:15,memorydef:82,memorydependenceanalysi:82,memorydependencyanalysi:3,memorymanag:131,memoryphi:82,memorysanit:[75,77],memoryssa:[2,130],memoryssawalk:82,memoryus:82,memorywithorigin:11,memri:[13,124],memrr:124,memset:[3,98,135],mental:[14,46,100],mention:[0,5,6,11,13,15,43,69,74,75,83,91,100,102,106,108,109,112,116,130],mere:[59,61,75,98,99,112,138,148],merg:[1,2,11,13,16,28,44,47,49,58,62,75,78,82,99,100,105,109,123,130,137,138,139,140,141,142,143,144,147,148,149,150,151,152],mergabl:98,merge_bb:[150,151,152],merge_control_fil:77,mergebb:[140,141,142,143,144],mergefunct:130,merger:83,merit:15,mesa3d:0,mesa:0,mess:[60,98],messag:[9,11,12,15,16,20,23,34,43,51,60,70,76,77,85,99,100,102,114,118,120,125,129,130,143],messi:13,met:[13,58,75,83,107],meta:[13,58,68,75,100,104,109,111,118],metadata:[6,7,13,21,49,56,58,59,60,62,76,80,83,98,102,104,109,121,130,136,144,146],metadatarecord:128,metal:[66,75],metarenam:9,metasyntact:9,metatada:8,method:[9,10,12,13,16,43,52,58,59,62,66,68,69,70,71,73,75,76,79,83,99,109,111,112,114,120,124,129,131,132,133,137,138,139,140,142,148,149,150,152],methodbodi:124,methodolog:51,methodproto:124,metric:[7,31,68,77,125,127],meyer:15,mfctypeserverindex:88,mfenc:3,mfloat:[66,67],mflop:123,mfpu:66,mft:96,mhvx:104,mi25:0,mi6:0,mi8:0,mib:53,micro:[0,15],microcod:0,microcontrol:45,micromip:104,micromips32r6:104,micromips64r6:104,microprocessor:[13,75,124],microsecond:128,microsoft:[13,15,33,36,43,45,53,64,73,75,88,92,96,109,130],mid:[56,73,75],middl:[12,15,58,73,75,92,112],might:[2,3,4,8,9,11,13,14,15,16,23,43,49,50,54,56,57,58,60,61,62,67,68,69,74,75,76,77,81,83,92,99,100,101,107,109,110,112,113,114,115,123,124,129,140,143,145,150,151,152,153],migrat:[0,2,49,58],mileston:83,mill:43,million:[75,100],millisecond:127,mime:61,mimic:[15,102],min:[36,44,75,77,104,105,127],min_dx10:0,min_int_bit:100,mind:[15,49,100,137,142,147,152],mingw32:[13,64,121],mingw32msvc:13,mingw64:60,mingw:[11,13,61],miniatur:96,minim:[0,1,3,13,15,22,23,47,59,62,75,77,78,100,101,102,109,111,122,128,137,141,147,151],minimize_crash:77,minimum:[0,11,15,17,49,52,60,68,70,75,109,111,124,127,133,137,147],minor:[13,15,49,68,83,88,97,102,131,145,153],minorvers:88,minsiz:[6,75],minsizerel:[11,60],minu:[0,75,108],minut:60,mioperandinfo:124,mip:[3,13,56,60,67,75,124,126],mips16:3,mips32:3,mips64:[104,126],mips64el:126,mipsel:126,mipsr6:104,mir:130,mirror:[57,58,140,141,150,151],mis:[0,17,70,102],misbehav:105,miscellan:[23,75,120],miscommun:49,miscompil:[17,49,60,75],misinterpret:[9,15],mislead:15,mismatch:[0,5,37,66,75,81,107,138,139,140,141,142,143,144,148,149,150,151,152],misnam:13,misoptim:8,misread:15,miss:[3,9,15,56,63,67,75,100,109,112,120,123,137,141,142,147,151,152],mistak:[14,15,56,102],mistaken:[139,149],mistyp:15,misunderstood:[54,130],mit:49,mitig:[58,104,107],mix:[3,12,13,15,16,59,63,74,78,100,103,109],mixtur:116,mkdir:[11,60,63,77,102,120,127],mli:149,mlimit:17,mllvm:[85,123],mm0:[13,116,118],mm1:[116,118],mm2:[116,118],mm3:[116,118],mm4:[116,118],mm5:[116,118],mm6:[116,118],mm7:[116,118],mmap:107,mmi:80,mmx:[13,75,124],mnemon:[124,126],mnemonicalia:13,mno:0,mo1:124,mo_cimmedi:80,mo_registermask:13,mobil:0,mock:100,mod:[2,36,75,100,116,124],mode:[4,6,8,11,16,20,23,27,28,34,36,37,43,44,49,57,65,66,75,100,105,107,118,124,127,128,130,142,143,152],model:[3,6,12,13,15,20,22,43,46,50,51,53,54,58,59,70,72,73,78,100,103,104,109,112,114,123,124,129,130,137,138,142,143,147,148,152],moder:[15,99,100,106],modern:[12,15,44,45,48,54,65,91,93,100,121,123,136,145,146,153],modest:15,modfilecount:88,modfilecountarrai:88,modi:[36,91],modif:[0,9,10,23,37,43,50,75,83,100,109,124,125,131,135,144],modifi:[0,2,3,9,11,12,13,15,46,49,51,52,58,60,61,62,69,72,74,77,81,82,84,85,92,98,99,100,103,109,112,120,124,125,127,131,135,139,142,152],modindic:88,modinfo:88,modinfos:88,modistream:91,modr:13,modref:[2,3,116],modrefresult:2,modrefv:116,modul:[2,6,9,11,13,19,20,25,29,41,54,56,58,60,68,76,77,78,79,83,84,85,96,104,109,111,112,120,121,122,124,127,131,133,134,135,138,139,140,141,142,144,148,149,150,151,152],modular:[2,15,41,62,74,125],modulehandl:[131,132,133,134,135],modulehandlet:[131,132,133,134,135],moduleid:[121,138,148],moduleindex:88,modulelevelpass:125,modulenam:88,modulepass:[2,85],modulesymstream:88,modulo:[13,75,109],molest:75,moment:[46,58,62,75,80,112,133,148],monitor:[2,75,102],monolith:[49,62,102,108],monospac:110,monoton:[0,68,75,102],month:[49,68,77,130],more:[0,2,3,6,8,9,11,12,13,14,16,17,20,23,25,28,31,36,37,38,41,43,44,46,47,49,50,51,52,54,55,56,57,58,59,60,61,62,64,65,66,67,68,69,70,71,73,74,75,76,78,80,81,82,83,84,88,92,96,97,98,99,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,118,120,121,122,123,124,125,127,128,129,130,131,132,133,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],moreov:[13,62,75,98],most:[1,2,3,5,11,12,13,15,16,20,25,27,36,41,42,43,44,46,48,49,51,52,54,56,57,58,59,60,62,65,66,67,68,69,70,71,74,75,77,79,81,82,83,84,88,97,99,100,101,102,105,109,110,111,112,113,117,118,120,121,124,125,127,128,130,131,137,138,139,140,141,142,144,145,147,148,150,151,152,153],mostli:[3,13,43,44,60,62,76,82,83,98,109,112,124,128,140,144,145,150,153],motion:[2,60,75,76,82,125],motiv:[72,75,132,140,142,150,152],motohiro:13,mount:[4,50,60],mous:127,mov32mr:80,mov32ri:[13,80],mov32rm:80,mov64ri:[80,124],mov64rm:80,mov:[3,13,16,53,75,84],movabsq:[108,111],movapd:16,move:[0,2,3,4,11,13,15,23,46,49,57,58,60,62,68,75,98,100,103,111,112,115,118,125,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,150,153],movep:104,movhpd:16,movi:15,movl:[16,75,111,112],movnt:75,movq:[111,112],movsd:16,movslq:111,movsq:13,movsx16rm8w:13,movsx16rr8w:13,movsx32rm16:13,movsx32rr16:13,movsx32rr8:13,movsx64rr16:13,movsx64rr32:13,movsx64rr8:13,movsx:13,movt:53,movw:[53,75],movz:[5,75],mppassmanag:127,mri:[13,62],mrm0m:124,mrm0r:124,mrm1m:124,mrm1r:124,mrm2m:[116,124],mrm2r:[116,124],mrm3m:124,mrm3r:124,mrm4m:124,mrm4r:124,mrm5m:124,mrm5r:124,mrm6m:124,mrm6r:124,mrm7m:124,mrm7r:124,mrmdestmem:124,mrmdestreg:[118,124],mrminitreg:124,mrmsrcmem:124,mrmsrcreg:124,ms_abi_tripl:121,msa:[75,104],msan:[77,104],msb:[13,128],msbuild:[11,61],msdn:[15,33],msec:123,msf:88,msg:75,msg_interrupt:0,msp430:[13,60,75],mspdb:88,mspdbsrv:88,mspdbxxxx:88,msse4:107,msvc:[11,13,15,51,53,75,88,100,109],mthumb:66,mtripl:[16,21,22,57,75,80],mtype:0,much:[2,3,4,9,13,15,23,25,33,36,43,44,49,50,52,54,56,60,62,63,64,67,69,70,73,75,78,82,84,85,96,97,98,99,100,101,102,104,105,106,109,110,111,112,113,117,118,121,124,125,126,127,129,132,137,138,139,142,145,147,148,149,152,153],mul:[16,59,84,98,116,138,148],mul_ri:116,mul_rr:116,mullin:0,multhread:100,multi:[0,15,38,43,62,77,96,100,116,130],multi_v:43,multiarch:[66,67],multiclass:[118,124],multiclassid:117,multiclassobject:117,multicor:3,multidef:116,multidimension:75,multilib:[50,67],multilin:[20,116,117],multimap:100,multipl:[0,2,3,4,6,7,12,13,15,16,18,23,28,31,32,35,40,43,44,47,49,53,56,59,60,62,64,69,73,74,75,77,79,80,82,83,88,96,98,99,101,103,104,109,111,112,113,114,116,117,118,120,121,122,123,124,125,126,129,137,138,139,140,141,144,147,148,149,150,151],multipli:[0,7,13,37,44,52,75,76,98,100,104],multiplicand:75,multiprocessor:[58,125],multiset:100,multisourc:[49,70,109,120,121],multithread:[58,100,127],multmp1:[138,148],multmp2:[138,148],multmp3:[138,148],multmp4:[139,149],multmp:[138,139,140,141,142,143,144,148,149,150,151,152],mung:[59,98],munger_struct:59,musl:77,must:[0,1,3,5,6,11,13,15,16,20,23,28,44,46,49,51,52,53,54,57,58,59,60,62,66,67,68,69,70,73,74,75,76,77,78,79,80,82,83,84,85,92,93,98,99,100,101,102,103,107,109,110,111,112,113,116,117,118,120,121,122,124,125,126,128,129,131,132,138,139,140,141,142,143,144,148,150,151,152],mustalia:[2,75],mustquot:129,musttail:75,mutabl:[75,136,140,141,143,144,146,150,151,154],mutat:[15,58,62,98,100,132,141,143,144,151],mutex:3,mutual:[43,112,136,146,148],mvt:[13,62,124],mxnack:0,my86_64flag:129,my86flag:129,my_addit:109,my_fil:85,my_fmad:84,my_funct:84,my_function_fast:84,my_function_precis:84,my_fuzz:77,my_kei:15,my_kernel:84,my_list:12,my_list_of_numb:12,my_other_fil:85,my_str:12,my_valu:15,myalloc:46,myawesomeproject:75,mybarflag:129,mybison:120,myblock:80,mybranch:[60,102],mybuilddir:11,mycustomtyp:129,mydoclist:129,mydoclisttyp:129,mydoctyp:129,myflag:129,myfoobar:100,myfooflag:129,myfunct:84,mygc:58,mygcprint:58,myglob:109,myinitprng:77,mylist:129,mylistel:129,mymachinefunctionpass:85,mymaptyp:129,mynewpass:17,myocamlbuild:[148,149,150,151,152],myownp3sett:109,mypass:[100,125],mypassnam:100,mypassopt:125,mypatch:99,myregalloc:125,myregisteralloc:125,myremot:135,myseq:129,myseqel:129,myservert:135,myset:15,mysteri:59,mystic:[145,153],mystringtyp:129,mystruct:59,mytarget:77,mytyp:75,mytype1:129,mytype2:129,myvar:59,n16:84,n1720:15,n1737:15,n1757:15,n1984:15,n1986:15,n1987:15,n2118:15,n2242:15,n2343:15,n2346:15,n2347:15,n2429:15,n2431:15,n2437:15,n2439:15,n2541:15,n2627:15,n2657:15,n2756:15,n2764:15,n2927:15,n2928:15,n2930:15,n3206:15,n3272:15,n32:75,n_bucket:109,n_hash:109,nabbl:102,naddit:43,nail:[140,150],naiv:[98,126],nakatani:13,nake:[6,75],name:[1,3,6,8,9,11,12,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,40,42,44,46,47,48,49,51,52,53,54,55,57,58,59,60,61,64,67,68,69,72,74,76,77,78,80,81,83,84,85,88,96,99,100,101,102,104,105,106,107,110,111,112,113,114,116,117,118,120,121,122,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155],named_valu:[148,149,150,151,152],namedindex:124,namedvalu:[138,139,140,141,142,143,144],namedvar:144,nameflag:109,namesbuff:88,namespac:[6,11,31,43,44,50,58,75,100,109,118,124,125,127,131,132,133,134,135,137,138,139,140,141,142,143,144],nan:[0,21,22,75,109],nand:75,nandakumar:62,nano:0,narrow:[2,3,9,15,17,52,59,60,62,70,77,100],narrowaddr:75,nation:14,nativ:[3,9,11,12,17,21,23,27,50,51,52,54,56,59,60,61,63,67,70,74,75,78,84,100,102,104,109,111,120,124,129,131,132,133,134,135,138,139,140,141,142,143,144,145,148,149,150,151,152,153],nativeptrt:135,natur:[3,15,16,37,43,49,51,56,58,59,60,69,75,78,100,102,105,109,110,113,116,125,129,132,138,140,142,148,150,152],naveen:98,navig:[43,74,99],nbsp:13,nc_nv:0,ncsa:49,nctaid:84,ndebug:[11,43,97],nearbi:[55,83],nearbyint:123,nearest:[47,75,82,144],neat:132,neatli:132,necessari:[0,2,3,5,7,11,13,15,16,23,28,43,46,47,48,49,51,52,56,58,60,62,67,68,70,71,75,76,77,78,79,80,93,96,99,100,104,107,110,111,112,113,122,124,125,127,138,143,144],necessarili:[15,22,44,54,59,60,75,92,96,100,105,109,112,128,144],need:[0,1,2,3,5,6,7,8,9,11,12,13,15,16,21,22,23,26,27,28,38,41,42,43,44,46,48,49,50,51,52,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,80,81,82,83,84,92,98,100,101,102,103,104,105,106,108,109,111,112,113,114,116,117,118,120,121,122,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],needstub:124,neelakantam:98,neg:[0,6,16,46,49,51,56,75,80,103,104,107,109,124],negat:[6,13,75,141,151],negeightkind:75,neglect:120,neglig:[55,77],neither:[2,5,6,15,51,56,61,75,77,83,88,98,102,111],neon:[13,67,75,114,130],nest:[2,6,11,12,13,15,20,51,58,74,75,85,100,103,110,116,123,124,125,137,140,147,150],nestabl:[116,117],net:[55,64,68,130],netbsd:[60,104],netinet:135,network:[13,77,100],neural:120,never:[0,2,3,5,13,15,23,28,44,46,47,50,54,55,58,59,62,63,69,75,78,83,85,93,98,100,102,120,124,125,126,127,129,131,133,145,149,153],never_instru:126,nevertheless:75,new_corpus_dir:77,new_else_bb:[150,151,152],new_potentially_interesting_inputs_dir:77,new_then_bb:[150,151,152],newabbrevlen:6,newcom:[115,118,142,152],newer:[3,44,48,49,60,61],newest:[53,139],newinst:100,newli:[15,60,63,77,98,100,112,131,132,133,134,135,138,139,140,141,144,148,149,150,151],newlin:[6,15,20,23,28,37,141,151],newoffset:75,newptr2:75,newptr:75,newsockfd:135,newti:75,newtoset:15,newversionformat:88,next:[0,1,6,9,15,43,49,51,58,59,60,61,62,68,69,72,75,78,79,83,85,92,100,102,103,104,105,109,121,122,124,125,131,132,133,134,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],next_prec:[147,148,149,150,151,152],next_var:[150,151,152],nextindvar:75,nextprec:[137,138,139,140,141,142,143,144],nextvar:[140,141,142,143,144,150,151,152],nextvari:[140,141],nfc:76,nice:[15,16,43,46,60,62,82,98,100,116,125,136,137,138,139,140,141,142,145,146,147,148,149,150,151,152,153],nicer:[43,100,129,144],nicknam:106,nifti:[125,140,145,150,153],nightli:[49,68,120,121,130],ninf:75,ninja:[1,11,60,62,65,66,67,77,102,127],nirror:102,nmadd:104,nmake:11,nmsub:104,nnan:75,nnn:23,nnnnnn:13,no_dead_strip:75,no_switch:123,no_turbo:4,noalia:[2,6,46,56,59,82],nobodi:102,nobuiltin:[6,75],nocaptur:[6,75,98],node:[2,7,8,13,25,55,62,69,76,82,83,84,100,103,109,112,114,122,123,124,125,129,130,137,138,139,140,141,142,143,144,147,148,149,150,151,152],nodebuginfo:43,nodetail:25,nodetyp:124,nodupl:[6,75],noencod:13,noexcept:51,nohup:105,noimm:118,noimplicitfloat:[6,75],noinlin:[6,48,71,75],nois:4,noisi:[49,98,100],noitin:22,noitinerari:[118,124],nolink:43,nologo:33,nomenclatur:1,nomodref:2,non:[2,3,6,9,10,11,12,13,16,17,20,21,22,23,24,25,26,27,28,29,30,32,34,36,41,42,43,44,47,49,51,52,55,56,59,60,63,65,69,72,73,77,78,79,80,83,84,88,93,100,102,105,109,111,112,116,117,121,124,125,128,129,136,137,139,140,141,142,143,144,145,146,147,149,150,152,153],nonatom:109,none:[0,4,13,20,22,23,36,40,43,46,51,58,59,60,66,70,72,75,85,100,112,113,116,125,147,148,149,150,151,152],nonempti:75,nonetheless:[75,132,133,134,135],nonintuit:130,nonlazybind:[6,75],nonneg:75,nonnul:[6,51,56,75],nonsens:[110,142,152],nonstop:127,nonstop_tsc:128,nontempl:43,nontempor:[0,75],nonzero:[6,116],noop:75,nop:[53,75,111,112,126],nor:[6,13,15,51,54,58,59,61,75,77,83,88,98,111,113],norecurs:[6,75],noredzon:[6,75],noreg:80,noreturn:[6,56,75],norm:[106,116,117],normal:[0,3,5,6,11,13,15,16,20,23,24,28,30,32,34,35,36,41,43,44,49,50,51,55,56,58,60,68,75,78,81,85,99,100,102,108,109,111,112,113,114,116,121,123,125,127,131,141,151],normalformat:43,normalizedpolar:129,norman:13,northern:0,northov:62,not_found:[147,148,149,150,151,152],not_inline_hd:44,not_nul:55,notabl:[11,13,44,52,59,75,100],notail:75,notat:[0,23,43,75,116,129],note:[2,3,4,5,6,9,11,15,16,17,19,20,21,23,25,43,44,46,48,49,50,51,52,53,55,56,57,58,59,60,61,62,66,67,68,69,70,71,72,74,75,77,78,79,82,83,84,88,92,93,98,99,100,101,102,103,109,111,112,113,116,117,118,120,122,124,125,126,127,130,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],notfp:116,noth:[0,13,46,58,59,68,75,98,100,102,106,113,121,125,136,142,146,152],nothidden:43,nothrow:3,notic:[11,12,13,44,49,54,56,59,69,83,84,100,102,104,138,142,148,152],notif:[2,64,99],notifi:[0,2,49,64,68,106,123],notion:[13,15,49,62,69,75,109,125,139,140,149,150],notori:113,notw:16,noun:15,nounwind:[6,16,51,56,75,84,109,121,122],novel:[58,75,100],novic:11,now:[9,11,13,14,15,16,20,23,43,44,49,50,51,52,60,67,68,69,73,75,77,80,82,83,84,92,99,100,102,104,107,109,111,112,119,120,122,125,127,129,130,131,132,133,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],nowadai:[67,102],nozero:22,nproc:60,nsstring:109,nsw:[46,49,56,59,75],nsz:75,nt_amd_amdgpu_hsa_metadata:0,nth:[15,28],ntid:84,ntohl:13,nuisanc:49,nul:[100,141,151],nullari:[137,147],nullpointerexcept:55,nullptr:[15,75,131,132,133,134,135,137,138,139,140,141,142,143,144],nullunknown:75,num:[18,20,28,37,58,75,102,112,124],numabbrevop:6,numarg:[111,144],number1:83,number2:83,number:[0,2,5,7,8,9,11,12,13,15,16,18,20,23,25,27,28,31,36,37,42,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,65,67,68,71,74,75,76,77,78,80,82,83,85,88,92,93,96,97,99,100,101,103,108,109,110,111,112,116,117,118,120,121,123,124,125,126,128,129,130,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],numberexpr:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],numberexprast:[137,138,139,140,141,142,143,144],numberofauxsymbol:155,numberofcpucor:77,numbit:100,numblock:92,numbyt:111,numconst:111,numdirectorybyt:92,numel:75,numelt:6,numeltsparam:[6,75],numentri:6,numer:[9,35,43,56,61,75,80,96,100,104,115,117,118,124,126,128,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],numexpress:47,numfaultingpc:55,numfilenam:47,numfunct:[55,111],numindic:47,numlin:47,numliveout:111,numloc:111,nummemb:100,nummeta:58,nummodul:88,nummodulevalu:6,numop:[6,124],numrecord:111,numregion:47,numregionarrai:47,numroot:58,numsgpr:0,numshadowbyt:111,numsourcefil:88,numspilledsgpr:0,numspilledvgpr:0,numstr:[136,137,138,139,140,141,142,143,144],numstream:92,numval:[136,137,138,139,140,141,142,143,144],numvgpr:0,numxform:100,nutshel:100,nuw:[56,75],nuzman:[103,123],nval:75,nvcall:10,nvcc:13,nvcl:84,nvidia:[13,44,50,84],nvptx64:84,nvptx:[60,75,130],nvt:124,nvvm:75,nvvmreflect:84,obei:75,obit:75,obj:[21,27,40,51,58,61,75,105,109,112,120],obj_root:60,objc:[31,109,110,130],objc_properti:109,objdump:127,object:[2,3,5,9,13,15,17,18,19,20,21,22,27,28,31,33,36,40,41,43,45,46,47,48,49,51,53,54,55,57,58,61,62,63,66,67,69,70,71,73,76,77,78,80,83,84,85,88,91,96,102,104,111,112,113,114,116,117,120,122,124,125,128,129,131,136,137,138,140,142,144,145,146,147,148,149,150,152,153,155],object_addr:58,object_error:100,objectbodi:117,objectbuff:79,objectbufferstream:79,objectcach:79,objectfil:79,objectimag:79,objectivec:75,objectlay:[131,132,133,134,135],objectlinkinglay:132,objfilenam:88,objptr:75,oblivi:5,obscur:[75,100],observ:[3,13,15,75,77,88,91,93,112,127,145,153],obtain:[0,13,46,47,62,70,75,79,82,88,98,100,113,116,118,124,127,128,139],obtus:59,obviat:101,obviou:[2,3,5,9,13,15,49,54,75,83,93,98,102,109,111,114,137,139,141,145,149,151,153],obvious:[2,13,15,43,49,52,59,68,75,83,88,98,100,105,116,125,136,137,146,147],ocaml:[11,146,147,148,149,150,151,152],ocaml_lib:[148,149,150,151,152],ocamlbuild:[147,148,149,150,151,152],ocamlbuild_plugin:[148,149,150,151,152],ocamldoc:11,occas:15,occasion:[6,44,58],occupi:[0,23,36,75,92],occur:[0,6,8,13,15,16,17,20,21,23,24,25,27,30,32,34,41,42,49,51,58,59,62,70,75,76,98,100,101,102,106,111,112,113,117,121,125,131,137,143,147],occurr:[6,16],octal:[23,35,43],octet:61,odd:[15,43,49,70,75],odr:[18,75],oeq:75,of_channel:[147,148,149,150,151,152],of_list:[147,148,149,150,151,152],off:[0,9,11,13,15,23,36,44,49,57,60,65,66,75,82,84,97,100,106,112,118,121,127,128,131,132,136,138,139,140,141,142,143,144,145,146,148,149,150,151,152,153],offen:0,offer:[3,58,100,102,104,112,129],offici:[12,13,44,49,50,83,96,99,102,105,106,138,142,152],offlin:[13,84],offload:107,offset0:0,offset1:[0,75],offset2:75,offset:[0,6,13,16,23,31,36,46,58,59,62,80,83,88,92,93,100,104,107,108,109,111,112,118,121,124,145,153],ofstream:43,oftc:130,often:[0,2,3,5,9,11,13,15,16,43,44,49,51,52,54,56,58,60,69,70,75,77,80,84,98,100,109,112,116,121,124,127,129,130,132,137,139,142,145,147,149,152,153],oge:75,ogt:75,okai:[15,59,75,76,99,113,137,138,139,140,141,142,143,144,147,148,149,150,151,152],oland:0,old:[2,3,28,48,49,60,71,75,88,96,100,102,109,130,131,142,143,144,145,152,153],old_bind:152,old_val:[150,151,152],old_valu:152,oldbind:[142,143,144,152],older:[0,3,43,49,56,58,60,65,77,81,124],oldest:139,oldval:[75,140,141,142,143,144],ole:75,olt:75,omap:88,omiss:[49,75],omit:[0,13,21,24,25,30,32,35,36,37,38,40,41,44,75,77,98,111,125,137,140,147,150],onc:[0,2,6,9,11,12,13,15,17,18,20,28,31,32,37,41,43,44,46,49,51,52,54,55,58,59,60,61,63,66,68,70,75,76,77,78,79,83,85,88,99,100,103,105,106,107,110,112,113,116,117,118,120,124,125,127,129,130,132,133,134,135,137,138,139,140,142,145,147,148,149,150,152,153],one:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,23,28,29,31,35,36,37,38,43,44,46,47,49,50,51,52,56,57,58,60,62,64,66,68,69,70,72,73,74,75,76,77,78,79,80,82,83,84,85,88,91,92,96,99,100,101,102,103,105,106,107,108,109,111,112,113,114,116,117,118,120,121,122,124,125,126,127,128,129,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],one_onli:53,oneargfp:116,oneargfprw:116,oneormor:43,ones:[0,9,12,13,15,17,43,44,49,56,58,67,68,69,75,83,98,109,112,113,114,118,121,124,132],ongo:[49,104,106,112,126],onli:[0,1,2,3,5,6,8,9,10,11,12,13,15,16,18,20,21,22,23,25,26,28,29,31,33,35,36,37,38,40,41,42,43,44,45,46,47,49,50,51,52,53,55,56,57,58,59,60,61,62,65,66,67,68,69,72,73,74,75,76,77,78,80,82,83,84,88,91,92,93,99,101,102,103,106,109,111,112,113,116,117,118,120,121,122,123,124,125,126,128,129,130,131,132,133,136,137,138,140,141,142,143,144,145,146,147,148,149,150,151,152,153],onlin:[4,11,12,142,152],only_ascii:77,onlyfailsforsomexvalu:100,onlyfailsforsomexvalues2:100,onon:75,ons:105,onto:[0,13,49,58,60,62,68,75,83,100,109,122,127],ontwo:75,onward:[0,11],onzero:75,oom:77,oop:112,op0:6,op1:[6,75],op2:75,op3:[75,124],op3val:124,op_begin:100,op_end:100,op_iter:100,opaqu:[5,6,62,98,100,112,138],opc:[116,141,142,143,144],opcod:[0,3,13,15,62,69,72,75,80,83,100,103,116,118,124,137,138,141,142,143,144,147,148,151],opcstr:124,open:[0,11,13,15,17,44,49,61,62,69,75,76,83,99,100,102,110,111,113,116,127,130,131,132,133,134,135,139,140,141,142,143,144,148,149,150,151,152],opencl:84,opencl_program:0,openfil:15,openfileforwrit:113,openformattedfil:100,opengl:[15,145,153],openmp4:103,openmp:[0,49,60],openorcreatefileforwrit:113,opensourc:77,openssl:77,oper:[2,3,5,6,8,10,11,13,15,21,22,26,44,45,46,47,51,52,54,55,58,59,60,62,77,82,83,84,85,98,103,104,112,113,114,116,117,118,122,123,124,125,126,127,129,131,132,136,137,138,139,140,143,144,145,146,147,148,149,150,153,154],operand:[6,8,13,15,16,25,51,52,53,59,62,82,83,98,100,103,104,114,116,138,141,142,143,144,148,151,152],operand_type_list_end:124,operandlist:116,operandmap:124,operandti:13,operandtyp:124,operandv:[141,142,143,144],operating_system:75,opnam:124,opnod:124,opportun:[46,56,62,75,98,102,123,124,132,139,149],oppos:[35,43,53,60,62,68,75,76,91,101,117,150],opposit:[23,76,100,129],opreand:100,oprofil:[11,97],ops:[13,112,116,124],opt:[2,3,9,15,17,19,49,54,58,60,61,67,70,82,84,98,100,104,112,120,121,123,130,135,139,140,142,143,149,150,152],optbisect:85,optim:[1,2,5,6,8,9,11,15,16,17,19,21,22,28,37,43,46,47,49,51,52,55,56,57,58,59,60,61,62,64,69,72,73,74,75,76,83,84,97,100,101,103,104,111,112,120,121,122,123,124,125,128,130,131,133,134,135,136,138,140,141,142,143,144,146,148,150,151,152,154],optimis:149,optimist:[62,75],optimizationbit:43,optimizationlevel:43,optimizationlist:43,optimizefunct:[132,133,134,135],optimizelay:[132,133,134,135],optimizemodul:[132,133,134,135],optimz:57,option:[0,1,2,5,6,9,12,13,15,19,29,33,44,46,47,48,49,50,54,57,58,61,62,63,65,66,67,70,71,74,75,76,78,79,80,83,85,97,98,101,102,103,104,105,109,111,114,116,117,118,123,124,125,126,127,129,130,138,139,140,141,142,143,144,148,150,151,152],optional_dir:101,optionaldbgheaders:88,optlevel:43,optnon:[6,75,85],optnum:43,optsiz:[6,62,75],optyp:124,optzn:[70,139,140,141,142,149,150,151,152],opval:124,orbit:[141,151],orc:[131,133,134,135,139,140,141,142,144,154],orcabisupport:135,orcjit:[131,132,133,134,135],orcremotetargetcli:135,orcremotetargetserv:135,orcx86_64_sysv:135,ord:75,order:[2,6,11,13,16,20,26,29,35,36,41,43,47,48,49,50,51,52,53,54,57,58,59,60,61,69,72,74,77,78,80,82,83,85,88,93,96,98,100,101,102,103,107,109,111,112,113,116,120,121,124,125,133,136,137,138,139,140,142,146,147,148,149,150,152],ordered_append_term:0,ordin:43,ordinari:[47,75,100,129],org:[11,14,15,49,60,61,63,64,66,67,68,77,80,99,102,105,106,109,120,121,129,130,138],organ:[0,12,15,51,83,101,106,109,112,120,130,139,149],ori:13,orient:[14,15,69,100,109,145,153],orig:75,origin:[13,14,16,23,26,28,36,46,49,51,59,60,75,88,100,102,103,106,109,112,113,115,118,122,131,132,144],originput:43,orr:75,ors:76,orthogon:3,oscil:128,osi:54,oso:18,oss:[57,68,77,102],ostream:[15,100],osuosl:64,osx:23,other:[0,1,3,5,6,7,9,11,13,14,16,20,21,22,23,28,29,35,40,41,42,44,46,47,49,50,51,52,53,58,60,61,63,65,67,68,69,70,71,72,73,74,76,77,78,79,80,82,83,85,88,91,92,93,96,98,101,102,103,104,105,106,109,110,112,113,114,115,116,117,118,120,122,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152,154],otherspecialsquar:69,othervt:124,otherwis:[0,1,3,6,7,9,11,15,16,17,18,20,21,22,24,25,26,27,28,29,30,31,32,34,38,41,42,43,44,46,47,51,56,58,64,65,67,68,70,75,76,78,83,85,88,96,98,100,106,112,116,117,125,129,132,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],otp:75,our:[1,11,12,13,14,15,43,44,46,49,58,60,66,70,78,83,84,93,96,97,100,102,106,109,112,123,125,127,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],ourfpm:144,ourfunctionpass:100,ourselv:[15,84,96,109,131],out:[0,1,2,3,4,5,6,9,12,13,15,20,22,23,25,26,28,31,33,40,43,44,46,49,50,51,52,57,58,60,61,62,63,65,66,67,68,70,72,75,76,77,80,82,83,91,92,96,98,100,102,103,104,105,106,107,109,112,113,114,115,116,118,120,121,122,124,125,126,127,128,129,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],out_of_bound:12,outdat:67,outer:[15,51,73,75,77,103,125,129,140,142,143,144,150,152],outerstructti:75,outfil:39,outgo:[7,75],outli:51,outlin:[10,13,46,49,51,125,129],outliv:[75,77,98],outloop:[140,141,142,143,144,152],outoperandlist:[118,124],output:[0,1,2,4,7,9,10,11,13,15,16,17,18,21,22,23,24,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,52,58,60,61,70,72,80,82,84,98,100,103,105,109,110,114,118,121,124,125,126,127,128,130,131,132,137,139,140,141,142,143,144,147,149,150,151,152,155],outputdebuginfo:43,outputfilenam:43,outright:59,outsid:[0,2,14,15,43,46,59,63,75,76,77,83,98,100,103,105,111,112,113,120,122,125,126,130,131,132,138,148],outstream:58,over:[0,2,5,6,9,12,13,36,44,49,59,69,75,76,78,82,98,99,102,112,116,117,129,131,132,133,134,135,136,138,140,141,142,144,145,146,148,150,151,152,153],overal:[13,49,51,58,59,75,96,99,114,140,150],overboard:15,overestim:75,overflow:[0,49,56,77,107,128],overhaul:68,overhead:[54,58,62,72,75,100,102,103,128,133,139,149],overlai:[50,88],overlaid:82,overlap:[2,12,13,73,75,111,123,125],overli:49,overload:[52,62,69,75,84,100,112,124,125,141,151],overrid:[3,11,12,13,15,21,22,28,30,43,44,62,69,75,77,83,84,98,100,107,109,114,116,117,124,125,138,139,140,141,142,143,144],overridden:[2,60,75,77,124],overrod:116,overs:100,oversimplifi:100,overview:[10,11,43,79,110,125,140,150],overwhelm:[136,146],overwrit:[43,101,111,126],overwritten:[13,51,75,111],ovl:88,own:[0,6,7,11,12,13,15,43,44,47,49,50,51,52,58,60,63,66,68,69,74,75,77,79,82,96,98,99,101,102,103,106,109,111,113,114,119,120,121,124,125,126,136,138,139,141,142,145,146,151,152,153],owner:[13,23,68,99,102],ownership:[49,100,134,135,139,140,141,142,143,144],p0f_isvoidf:112,p0i32:16,p0i64:16,p0i8:[75,84],p0v16f32:75,p0v2f64:75,p0v4p0f_i32f:75,p0v8i32:75,p0v8p0f64:75,p0v8p0f_i32f:75,p15:84,p16:84,p17:84,p18:84,p19:84,p1i8:[84,112],p20:84,p2align:0,p3i8:84,p4i8:84,p5i8:84,p_arch:44,p_reg:13,pack:[6,13,46,56,68,75,103,105,138,148],packag:[7,11,44,50,60,64,65,66,67,68,101,105,130],package_str:11,packet:[0,42,114],pact:103,pad:[0,6,23,36,46,47,51,62,73,75,80,88,111,128],padding1:88,padding2:88,padparam:51,page:[0,1,11,15,19,36,43,45,49,53,55,58,60,61,79,92,96,99,100,104,109,112,119,121,123,130,138],pai:[15,49,121,124],pain:[43,44,48,99,100],painlessli:43,pair:[0,2,3,4,5,13,15,16,21,51,71,75,77,82,83,98,100,112,124,128,129,133,137,140,142,143,144,147,150],pairwis:2,pal:0,pandaboard:65,pane:99,paper:[4,13,15,44,45,82,100,104,130],paradigm:[59,100,104],paragraph:[15,83,110],parallel:[0,11,13,20,60,62,64,75,76,82,97,101,102,103,123],parallel_dir:101,param1:100,param2:100,param:[15,20,58,61,64,84,100,148,149,150,151,152],paramattr:6,paramet:[6,8,11,12,13,15,20,43,44,46,51,58,59,71,77,79,83,98,100,112,114,118,124,125,128,129,138,148],parameter:[62,116],parameterless:80,parametr:117,paramidx0:6,paramidx1:6,paramidx:6,paramti:6,parenexpr:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],parent:[0,7,12,15,20,31,60,74,75,100,140,150],parent_scop:12,parenthandl:75,parenthes:[20,75,137,147],parenthesi:[15,137,147],parentti:75,paricular:44,parit:20,parlanc:[12,82,122,136,146],pars:[6,12,20,31,44,52,54,57,72,75,76,77,78,79,80,100,107,109,111,112,114,117,118,124,128,129,130,136,138,139,140,141,142,143,144,146,148,149,150,151,152],parsabl:[37,112],parse_arg:[147,148,149,150,151,152],parse_bin_rh:[147,148,149,150,151,152],parse_binary_preced:[151,152],parse_definit:[147,148,149,150,151,152],parse_expr:[147,148,149,150,151,152],parse_extern:[147,148,149,150,151,152],parse_fail:100,parse_id:[147,148,149,150,151,152],parse_oper:[151,152],parse_primari:[147,148,149,150,151,152],parse_prototyp:[147,148,149,150,151,152],parse_toplevel:[147,148,149,150,151,152],parse_unari:[151,152],parse_var_init:152,parse_var_nam:152,parseabl:[75,112],parsebinoprh:[137,138,139,140,141,142,143,144],parsecommandlineopt:[127,135],parsedattrinfo:114,parsedefinit:[137,138,139,140,141,142,143,144],parseexpress:[137,138,139,140,141,142,143,144],parseextern:[137,138,139,140,141,142,143,144],parseforexpr:[140,141,142,143,144],parseidentifierexpr:[137,138,139,140,141,142,143,144],parseifexpr:[140,141,142,143,144],parsenumberexpr:[137,138,139,140,141,142,143,144],parseparenexpr:[137,138,139,140,141,142,143,144],parseprimari:[137,138,139,140,141,142,143,144,151],parseprototyp:[137,138,139,140,141,142,143,144],parser:[42,54,57,60,74,75,77,80,114,136,138,139,141,142,143,144,145,146,148,149,151,152,153,154],parserclass:43,parsesubtargetfeatur:124,parsetoplevelexpr:[137,138,139,140,141,142,143,144],parsetypetyp:52,parseunari:[141,142,143,144,151],parsevalid:127,parsevarexpr:[142,143,144],part:[2,3,5,6,9,10,11,12,13,15,17,20,43,44,46,49,50,51,56,57,58,59,60,61,62,66,69,74,75,77,78,83,92,93,98,100,102,103,106,109,112,114,118,121,124,125,126,127,129,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],parti:[15,49,56,101,106,112],partial:[13,42,75,76,77,100,102,104,109,111,128,129],partialalia:2,particip:[0,14,49,75,99,100,121],particular:[2,3,4,6,9,11,13,15,20,28,36,43,46,47,51,56,58,59,60,62,69,70,73,74,75,77,79,82,83,84,88,92,93,98,100,103,104,106,109,111,112,114,116,117,118,120,121,122,124,125,126,128,137,139,142,147,149,152],particularli:[3,15,16,56,62,64,75,100,102,124,125,126,128],partit:[9,13,21,65,76,82,133],partner:100,pascal:75,pass:[0,1,3,4,5,7,9,12,13,16,17,19,20,21,22,28,29,37,41,43,44,48,49,50,51,52,53,54,57,58,59,60,61,62,63,66,68,69,70,71,72,73,74,75,76,77,78,79,81,82,84,88,101,102,103,104,105,107,108,109,111,118,120,121,122,124,127,129,130,131,132,133,134,135,137,138,140,141,142,143,144,145,147,148,150,151,152,153],passag:15,passiv:85,passmanag:[43,79,100,127,132,139,143,149,150,151,152],passmanagerbas:124,passmanagerbuild:84,passmanagerimpl:127,passnam:[41,100],passopt:125,passthru:75,password:[49,64,102],past:[15,49,59,62,75,99,100,102,103,112,116,124,128,141,144,151],pat:[13,118,124],patch:[4,15,55,56,58,61,64,75,76,99,100,102,112,121,126,127,128,130,139,144,149],patch_premain:[126,127],patch_statu:126,patchabl:[75,111,112],patcher:111,patchpoint:[75,112],patchset:60,patfrag:124,path:[1,2,3,11,12,15,17,18,20,21,22,23,26,27,28,31,33,37,40,42,44,51,55,56,58,60,61,63,65,66,67,75,77,84,88,98,100,101,102,112,120,121,127,131,142,152],path_to_clang:1,path_to_llvm:60,pathnam:[27,60],pathsep:[20,121],patient:[14,125],patleaf:124,pattern:[1,3,5,12,13,19,20,28,31,43,46,52,59,62,75,84,100,103,107,109,114,116,118,121,124,127,133,136,138,146,147],paus:[2,58,102,132],payload:[13,75,128],pbqp:[13,21],pch:109,pcre2:77,pcre:77,pct:36,pdata:[53,88],pdb:[11,19,91,92,109,130],pdbdllrbld:88,pdbdllversion:88,pdbfilepathnameindex:88,pdbstreamhead:93,pdbstreamvers:93,pdbutil:19,pdf:4,peculiar:117,pedant:11,peek:[147,148,149,150,151,152],peephol:[13,52,100,125,139,140,141,142,149,150,151,152],peform:5,penalti:[75,100],pend:[48,60,137,138,139,140,141,142,143,144,147,148,149,150,151,152],pentium:[60,124],penultim:124,peopl:[13,14,15,43,49,52,54,59,60,68,75,99,102,105,113,125,130,131,136,145,146,153],per:[0,3,6,7,11,13,23,25,35,36,43,46,47,51,58,62,68,69,74,75,77,78,80,82,84,100,102,107,109,111,112,114,117,120,121,125,127,129,132,139,149,154],perceiv:[145,153],percent:2,percentag:[25,36,100],perf:[1,4],perfect:[5,49,100],perfectli:[13,15,16,36,54,59,75,137,147],perform:[0,1,2,3,4,5,9,10,11,12,13,15,20,21,23,37,41,43,46,49,50,51,52,55,57,58,59,60,62,65,68,73,74,75,76,77,78,79,80,83,84,85,98,100,101,102,103,104,105,107,109,112,113,116,120,121,122,124,125,126,130,131,132,133,138,142,143,145,148,152,153],perfunctionst:127,perhap:[2,15,58,62,75,83,93,100],period:[9,10,49,58,75,77,102,121],perl:58,perldoc:60,perman:[106,133],permiss:[23,49,60,64,79,106,131],permit:[13,21,53,58,75,76,100,116,121,142,143,144,152],permut:75,perpetu:[49,126],perserv:75,persist:[12,14,77,100],person:[6,14,51,70,76,99,106,110,129,132],personalityfn:6,personlist:129,perspect:[2,14,46,51,69,75,106,112,125],pertain:[49,51,75,109],pervas:[69,100],pervert:[115,118],pessim:[55,98],pf0:83,pf1:83,pf_inet:135,pg0:83,pg1:83,pgo:[37,96],pgr:130,phab:102,phabric:[49,60,102,130],phase3:[68,105],phase:[17,21,51,58,62,68,75,85,100,105,123,132,137,141,147,151],phi:[6,13,15,25,46,51,62,98,123,140,141,142,143,144,150,151,152],phid:15,phielimin:13,phieliminationid:13,philosophi:[74,130],phinod:[15,82,140,141,142,143,144],php:99,phrase:[12,15],physic:[0,14,62,75,80,88,100,106,112,116,124],physreg:13,pi8:122,pic:[13,22,67,70,80,109,124],pick:[5,11,13,15,22,58,59,62,67,70,99,102,112,124,149],pickup:60,pictur:[59,83,96,128,138,148],picu:62,piec:[6,9,12,13,15,49,56,59,60,61,68,70,74,75,109,116,121,136,137,138,140,141,142,144,146,147,148,150,151,152],pienaar:44,pifft:120,pin:[75,112],ping:[49,83],pinsrd:16,pinsrd_1:16,pinst:100,pipe:[0,16,20,113,127],pipefail:20,pipelin:[6,25,56,57,75,84,98,112,121,124,125,149,150,151,152],pipermail:102,pitcairn:0,pkg:120,place:[0,1,4,5,9,13,15,18,20,22,23,43,46,47,49,50,51,52,53,56,58,59,60,63,64,74,75,80,82,83,98,99,100,101,103,104,105,109,111,112,116,118,121,123,124,125,129,132,136,137,138,139,141,142,145,146,148,149,151,152,153],placehold:[50,51],placement:[56,62],placesafepoint:58,plai:[83,100,117,125,136,145,146,153],plain:[80,100,102,110,125,131],plan:[13,49,54,58,60,73,84,100,109,112,118,123,130],plane:[126,141,151],plant:125,plate:[43,100],platform:[0,1,3,12,13,36,46,49,51,58,60,64,65,67,68,74,75,78,93,96,97,100,104,107,111,113,125,128,130,131,135,139,141,149],playground:[136,146],pldi:[58,103],pleas:[1,2,3,11,13,14,15,42,49,56,58,60,61,64,65,67,68,70,72,74,75,84,99,100,104,105,106,110,112,116,117,119,121,124,127,138,145,148,153,154],plethora:[54,60,100],plot:[141,151],plotter:[141,151],plu:[0,5,6,49,51,58,75,88,100,109,124,132,137,140,147,150],plug:[85,138,148],plugin:[17,22,41,75,85,130],plugin_tool:125,pluginfilenam:22,pmbuilder:84,pmdatamanag:127,pmtoplevelmanag:127,png:[11,77],pni8:51,pod:15,point:[2,3,6,7,9,10,11,13,15,21,28,36,43,44,50,51,52,56,59,60,62,63,64,66,67,68,69,73,76,78,79,82,83,84,88,92,100,102,104,105,109,112,113,115,118,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],pointcount:58,pointe:[0,6,75],pointeealign:0,pointer:[0,3,6,13,21,44,46,51,54,55,56,58,62,73,76,78,79,80,83,84,98,107,109,111,114,122,124,125,126,128,129,131,133,134,135,136,137,139,140,142,144,145,146,147,149,150,151,152,153],pointer_offset:112,pointertyp:100,pointi:129,pointkind:58,pointless:[51,82,112],pointnum:58,pointstoconstantmemori:75,pointtoconstantmemori:2,poison2:75,poison3:75,poison4:75,poison_yet_again:75,poke:6,polar:129,polaris10:0,polaris11:0,polici:[2,6,15,60,100,102,130],polish:102,polit:[13,14],poll:[58,112],polli:[11,60,103],pollut:15,polyhedr:103,polymorph:[10,111],pong:83,pool:[6,13,25,111,124,125],poolalloc:2,poor:[14,15,112,140,150],poorli:[7,15],pop:[1,6,13,58,75,100,128,140,142,143,144,150,152],pop_back:[43,100,144],popcnt:77,popq:[111,112],popul:[20,51,52,60,84,85,114,138],popular:[2,12,13,50,60,65,75],porpoda:103,port:[13,54,60,64,102,104,113,123,126,135,145,153],portabl:[11,13,20,58,75,100,130,131],portion:[9,12,13,17,43,47,49,51,60,75,80,81,82,98,124,128,139,149],portugues:107,pos1:43,pos2:43,pose:[58,76],posit:[0,6,13,16,22,37,44,46,49,51,60,67,72,75,77,78,80,88,100,103,111,112,129,140,141,147,150,151],position_at_end:[148,149,150,151,152],positionaleatsarg:43,posix:[11,16,23,35,50],possbil:129,possess:[47,100],possibl:[0,2,3,4,5,6,9,10,11,13,20,36,44,46,47,49,50,52,53,54,56,58,59,60,62,63,64,66,67,69,70,73,75,77,78,79,80,81,82,84,88,92,98,99,100,102,103,105,106,108,109,110,112,113,114,116,121,125,128,129,136,137,139,140,142,144,145,146,147,149,150,152,153],post:[13,14,22,49,62,75,80,99,101,106,130],postcal:58,poster:14,postfix:15,postincr:15,postord:76,postrapseudo:80,postscript:98,potenti:[2,9,13,15,20,43,49,51,54,56,60,62,75,77,82,98,102,103,106,107,111,112,122,127,136,137,140,146,147,150],pound:129,povray31:120,pow:[84,123],power:[0,2,13,16,43,45,65,73,75,78,98,99,100,104,115,118,128,136,137,138,139,140,141,142,146,147,148,149,150,151,152],powerpc64:[45,75],powerpc64l:126,powerpc:[3,11,52,60,75,76,104,111,121,124,129],ppa:60,ppc32:13,ppc64:13,ppc_fp128:[6,75,83],ppcf128:75,ppcinstrinfo:52,ppcisellow:52,pr26161:62,pr26576:62,practic:[3,15,43,49,54,55,58,59,69,75,76,77,88,91,93,98,100,102,109,111,112,132,136,138,139,140,146,148,149,150],practis:7,pragma:44,pragmat:104,pre:[13,22,49,52,60,62,68,70,76,98,100,101,102,114,118,148],pre_stor:13,prealloc:100,prebuilt:50,prec:[141,142,143,144,151,152],precal:58,precaut:100,preced:[0,2,6,15,16,20,26,35,46,75,82,98,100,107,109,111,117,128,131,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],preceed:62,precis:[0,2,3,13,21,22,58,60,62,69,80,109,111,124,136,137,138,146,147,148],preclud:[5,112],precompil:[84,131],precomput:2,precondit:15,precursor:49,pred:[51,75,84,100,140,142,150,152],predecessor:[7,13,56,75,98,103,140,150],predefin:[13,20,57,112,125,141,151],predetermin:2,predic:[3,5,72,75,100,103,114,116,118,124],predicate_stor:124,predicateinfo:75,predict:[8,15,56,125,130],predreg:72,predrel:72,predsens:72,preemptabl:[0,77],preemptibl:98,preemption:6,preemptionspecifi:[6,75],preexist:98,pref:[75,100],prefac:12,prefer:[2,3,12,40,44,49,51,64,65,75,80,83,99,100,105,113,118,124,127,131,136,146],prefetch:45,prefix1:16,prefix2:16,prefix:[0,6,11,13,15,20,27,28,40,43,51,60,63,77,80,85,100,101,109,112,116,118,121,141,151,152],prefixdata:6,preformat:110,preg:13,prehead:[98,140,150],preheader_bb:[150,151],preheaderbb:[140,141],preinstal:50,preliminari:104,preorder:69,prepar:[28,46,51,59,67,75,83,92,98,99,102,105,106,112,130,139],prepass:13,prepend:[18,28,75,100,109],preprocess:[54,70],preprocessor:[11,28,43,44,47,54,100,124,139,145,149,153],prequisit:66,prerequisit:125,presenc:[3,13,16,51,69,75,85,93,100,109,120,124,128],present:[0,6,10,13,16,20,22,28,36,40,43,44,46,51,53,55,58,59,60,62,70,75,85,88,91,100,102,109,112,117,130,140,141,142,143,144,150,151,152],preserv:[2,5,13,23,26,28,43,46,51,59,60,75,77,102,104,109,111,125,128,145,153],preserve_allcc:[6,75],preserve_mostcc:[6,75],preserveal:75,preservemost:75,press:143,pressur:[13,15,123],presum:[75,99],pretti:[4,40,59,71,77,81,82,83,98,100,110,113,116,117,120,125,136,137,138,139,140,141,142,146,147,148,149,150,151,152],prettyprint:100,prev:100,prevail:23,prevent:[0,2,13,15,16,43,44,46,49,54,58,75,88,98,100,102,107,108,109,111,112,113,121,123,125,131,134,135,138,142,143,144,148,152],previou:[0,3,5,6,13,15,16,23,37,46,47,49,52,68,74,75,83,84,96,100,104,105,108,110,112,124,125,128,129,131,133,137,138,139,140,141,142,143,144,147,148,150,151,152],previous:[6,11,28,43,51,68,75,77,91,104,117,120,124,132,139,140,148],primari:[2,12,13,14,49,51,58,62,75,77,85,88,100,130,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],primarili:[13,20,26,29,32,38,58,60,65,73,74,77,98,100,116,141,151],primarli:80,primaryexpr:[137,147],prime:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],primer:[11,110],primit:[3,15,43,59,75,80,83,100,128,141,145,151,153],principl:[15,45,66,83,113,136,146],print:[12,13,15,16,17,19,20,21,22,23,24,25,26,28,30,31,32,34,35,37,38,40,41,42,43,46,52,54,58,60,61,68,70,75,77,80,81,82,85,100,109,114,116,118,120,123,124,129,136,137,138,139,140,141,142,143,144,147,148,149,150,151,152],print_endlin:[147,148,149,150,151,152],print_final_stat:77,print_float:[149,150,151,152],print_list:12,print_newlin:[149,150,151,152],print_pc:77,print_str:[147,148,149,150,151,152],printabl:[23,75,80,124],printccoperand:124,printd:[139,140,141,142,143,144,145,151,152,153],printdatadirect:124,printdeclar:124,printdens:[141,151],printer:[13,58,74,81,100,114,125,143],printexprresult:135,printf:[0,9,47,54,60,61,63,75,78,100,109,135,139,140,141,142,143,144,151,152],printformattedfil:100,printfunctionpass:98,printimplicitdef:124,printinformationalmessag:43,printinlineasm:124,printinstruct:[114,124],printlabel:124,printmemoperand:124,printmethod:124,printnextinstruct:100,printoperand:124,printout:[41,100],printstar:[140,150],printsth:98,prior:[0,6,13,43,46,47,49,51,60,73,74,75,125],prioriti:[0,36,44,59,68,75,106,109],priority_queu:100,priv:0,privat:[0,6,46,49,56,64,69,74,75,83,84,100,106,109,114,124,131,132,133,134,135],private_segment_align:0,privatesegmentfixeds:0,privileg:[0,75,113,131],prng:77,pro:[0,5],proactiv:[9,49],probabl:[13,15,25,28,43,44,49,50,54,58,59,62,65,75,80,100,101,102,112,137,140,145,147,150,153],probe:[13,75,100],problem:[2,9,13,15,16,17,43,49,54,56,57,58,59,62,65,66,67,68,70,73,76,85,88,93,97,98,100,102,109,113,121,130,138,140,141,145,148,150,151,153],problemat:[15,49],proc:[4,60,65,124],proccess:77,proce:[11,46,51,58,68,76,83,100,103,105,132],procedur:[5,8,43,45,56,68,75,76,83,100,101,136,146],proceed:[13,44,58,60],process:[0,1,2,3,4,7,9,11,12,15,16,23,35,36,37,40,43,44,47,48,49,50,51,58,60,62,65,70,72,74,75,77,78,79,85,98,99,100,107,109,113,118,121,123,124,125,129,131,132,133,134,136,137,139,145,146,147,149,153,154],processformattedfil:100,processor:[5,11,13,22,43,45,58,60,75,109,114,118,123,124,143],processrelocationref:79,procnoitin:118,produc:[0,3,4,5,6,9,11,13,15,16,17,18,20,21,23,25,28,29,36,41,46,47,49,50,51,54,57,58,59,60,63,67,70,73,74,75,77,81,82,83,88,92,98,100,103,104,109,112,113,114,116,121,123,124,125,128,129,131,132,138,139,140,142,144,148,149,150,152,153],product:[0,7,13,14,49,58,68,75,83,104,117,125,133,137,141,147,151],prof:[7,8],profdata:[1,11,19,28,47,75],profession:49,profil:[0,1,8,19,28,47,55,56,66,75,80,99,101,109,128],profiledata:75,profit:[13,44,55,56,75,98,123],profraw:[1,28,47],progbit:53,program:[0,2,3,4,6,9,12,15,16,17,19,20,21,23,26,28,32,36,38,40,41,42,43,44,47,48,49,50,51,55,56,57,58,59,60,61,63,66,68,69,70,75,76,77,78,84,88,96,97,98,100,107,109,111,112,113,114,120,121,122,123,124,125,127,128,129,131,132,133,135,136,137,139,140,142,143,144,145,146,147,149,150,152,153],programm:[0,3,9,13,15,41,43,44,45,58,69,104,117,123,125,130,141,144,151,153],programmat:[13,37,58,84,126,129,141,151],progress:[11,13,20,45,46,49,58,68,75,76,80,100,126,136,146],prohibit:[3,78,82],proj:68,proj_install_root:101,proj_obj_root:101,proj_src_root:101,project:[1,14,15,19,20,45,49,50,52,54,56,57,61,62,66,67,68,77,83,99,100,106,107,109,111,112,120,121,126,130,136,146],project_nam:101,prolang:120,prolog:[76,124],prologu:[0,6,13,21,58,108,124,144],prologuedata:6,promin:[120,121],promis:[49,126],promot:[2,13,44,49,52,56,75,76,85,100,103,109,112,142,144,152],promoteop:52,promptli:49,prone:[13,43,65,100,118],proof:[8,80],prop:61,propag:[0,11,13,43,44,51,60,75,76,80,85,112,113],proper:[3,15,20,44,47,62,69,75,100,102,124,144],properli:[2,3,9,10,13,18,43,44,53,74,75,120,121,130,139,142,152],properti:[2,3,5,6,13,15,43,46,47,58,61,62,72,74,75,80,82,83,88,98,100,102,111,112,114,118,124,125,139,142,152],property_nam:74,property_valu:74,proport:[37,43,62],proportin:50,propos:[7,49,56,62,77,83,103,127],proprietari:49,prose:15,protect:[3,6,10,13,15,75,77,102,106,113,124],protector:[75,109],proto:[134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],protoast:[138,139,140,141,142,143,144],protobuf:57,protocol:[15,57,75,102,112],prototyp:[15,32,52,56,75,102,107,124,125,130,137,138,139,140,141,142,143,144,147,148,149,150,151,152],prototypeast:[134,135,137,138,139,140,141,142,143,144],prove:[2,56,73,75,83,98,120],proven:[0,35,49,56,75,98,112,142,152],provid:[0,1,2,3,6,8,10,11,12,13,17,20,23,25,26,28,31,40,41,43,44,46,47,48,49,50,51,56,58,59,60,61,62,64,65,66,69,74,75,76,77,78,79,81,82,83,84,85,96,98,100,101,102,104,106,107,109,111,112,113,114,116,120,123,124,125,126,127,128,129,130,131,132,133,137,138,139,140,141,142,143,144,145,147,148,149,152,153],proviso:49,proxi:13,prune:[82,103,126],psabi:45,pseudo:[5,7,13,42,46,62,74,75,80,100,104,109,114,124,125],pseudocod:124,pseudonym:106,psubu:121,psubusw:121,pthread:[44,75,107],ptr0:75,ptr1:75,ptr2:75,ptr3:75,ptr64:0,ptr7:75,ptr:[0,3,15,46,55,100,111,122,124],ptr_is_nul:55,ptr_rc:13,ptra:84,ptrb:84,ptrc:84,ptrloc:[58,75],ptroff:13,ptrreg:13,ptrtoint:56,ptrtoreplacedint:100,ptrval:75,ptx30:13,ptx31:13,ptx:[13,44,45],ptxa:44,ptxstring:84,pty2:75,pty:75,pub:109,publicli:[49,100,106,109],publicstreamindex:88,publish:[15,44,96,100,105],pubnam:[31,109],pubtyp:[31,109],pugixml:77,pull:[3,15,60,99,102],puls:77,punctuat:[15,75,117],pure:[3,9,13,49,62,74,76,98,103,112,117,124,138,148],purg:15,purifi:70,purpos:[0,5,13,15,36,43,44,46,49,51,56,59,60,62,75,83,84,85,88,92,93,98,100,102,105,107,112,113,114,115,118,125,128,131,138,144],push:[9,10,13,15,58,60,102,144],push_back:[15,100,124,129,137,138,139,140,141,142,143,144],pushf:13,pushfl:13,pushfq:13,pushq:112,put:[0,2,3,4,9,13,14,15,16,43,47,48,50,51,55,58,60,62,68,75,83,98,99,100,102,109,110,121,125,129,136,139,140,142,144,145,146,150,152,153],putchar:[139,140,141,142,143,144,149,150,151,152],putchard:[139,140,141,142,143,144,145,149,150,151,152,153],puzzl:70,pwd:[60,67,107],python2:65,python:[20,46,58,60,61,67,77,100,105,117,120,121,145,153],q15:75,q31:75,qch:11,qeaa:51,qemu:77,qhelpgener:11,qnan:75,qpx:75,quad:[0,75,112,124],quad_perm:0,quadrat:[13,21,82,100],qualifi:[0,13,15,59,68,75,109],qualiti:[13,31,56,60,65,68,75,104,112,121,125,131,133],qualtyp:15,quantiti:75,quarantin:107,quarantinechunksuptos:107,quarantinesizekb:107,quentin:62,queri:[0,2,3,13,15,36,43,56,62,71,72,75,82,85,96,100,109,123,124,125,127,132,145,153],query_sampl:0,quesion:83,question:[2,15,49,56,59,60,61,69,75,83,99,100,101,104,109,110,115,130,137,140,142,145,147,150,152,153],queu:0,queue:[100,124,125,126],queue_ptr:0,quick:[2,9,15,23,49,56,59,67,98,99,105,109,139,145,149,153],quickcheck:100,quicker:[65,82,106,132],quickli:[2,9,13,15,23,43,51,61,70,75,77,82,96,97,100,109,113,121,126,130,132],quickstart:[67,120,130],quiet2:43,quiet:[0,20,43,48,75],quieta:43,quirk:[12,112],quit:[2,13,44,48,52,56,58,59,60,62,75,83,100,110,111,113,130,133,138,140,145,148,150,153],quot:[0,11,43,74,75,77,80,109,116,121,129],quotient:75,quotingtyp:129,quux:15,qux:75,r10:[13,84,108,118],r10b:118,r10d:118,r10w:118,r11:[75,108,111,118],r11b:118,r11d:118,r11w:118,r123456:102,r12345:68,r1234:102,r12:[13,53,75,118],r12b:118,r12d:118,r12w:118,r13:[13,118],r13b:118,r13d:118,r13w:118,r14:[13,118],r14b:118,r14d:118,r14w:118,r15:[13,75,80,118],r15b:118,r15d:118,r15w:118,r173931:114,r258109:102,r285:0,r31:[13,75],r390:0,r390x:0,r600:0,r630:0,r6xx:0,r700:0,r7xx:0,r8b:118,r8d:118,r8w:118,r9b:118,r9d:118,r9w:118,r_386_8:53,r_amdgpu_abs32:0,r_amdgpu_abs32_hi:0,r_amdgpu_abs32_lo:0,r_amdgpu_abs64:0,r_amdgpu_gotpcrel32_hi:0,r_amdgpu_gotpcrel32_lo:0,r_amdgpu_gotpcrel:0,r_amdgpu_non:0,r_amdgpu_rel32:0,r_amdgpu_rel32_hi:0,r_amdgpu_rel32_lo:0,r_amdgpu_rel64:0,r_amdgpu_relative64:0,r_arm_thm_movw_abs_nc:67,r_offset:0,r_x86_64_8:53,rabfik:23,race:[0,3,14,46,75,100,107],racist:14,radamsa:77,radare2:77,radeon:0,radic:[13,62],radiu:69,radix:[13,15,35],rage:25,raii:46,rais:[9,51,58,75,98,100,102,112,146,147,148,149,150,151,152],ram:[64,77],ramif:59,ramp:46,ramsei:13,ran:[28,125],rand:77,random:[4,9,15,17,19,20,49,75,77,100],randomize_va_spac:4,randomli:[39,126],rang:[0,2,7,9,13,14,20,21,31,36,43,46,51,53,56,58,59,62,69,103,112,116,123,125,130,136,139,141,146,149,151],rangelist:117,rangepiec:117,rank:98,ranlib:[60,63,66],rapaport:103,rapid:49,rare:[6,13,14,15,16,51,55,56,58,67,75,100,104,116,124,132],rate:[6,23,25,49,102],rather:[2,6,7,13,14,15,18,20,28,44,49,50,54,56,58,59,61,62,65,75,77,85,88,98,100,103,105,109,112,117,121,124,131,132,133,137,138,144,147],ratio:7,rational:[13,49,62,130],rauw:[76,83,100],raw:[13,24,28,30,32,34,36,41,43,46,47,71,79,81,114,120,127,138],raw_fd_ostream:143,raw_ostream:[13,52,100,125,127,129,131,132,133,134,135,143,144],raw_string_ostream:[131,132,133,134,135],rawfrm:[116,124],rax:[13,75,80,111,112,118,124],rbp:[13,118],rbx:[13,118],rc1:105,rc2:105,rcn:[68,105],rcp_iflag_f32:0,rcx:[13,75,118],rdi:[13,53,75,80,111,118],rdtsc:75,rdx:[13,111,112,118],rdynam:[139,141,151,152],reach:[15,46,51,55,58,68,74,75,77,82,83,85,98,100,102,103,106,111,124],reachabl:[11,58,75,76,104,112],reaction:102,read:[0,2,3,5,6,9,11,12,13,15,16,21,22,23,24,25,28,29,30,32,36,37,38,40,41,42,43,45,46,48,49,50,52,53,54,55,60,61,70,75,77,80,88,96,98,99,100,109,110,111,112,117,118,121,123,126,128,129,130,132,136,137,138,139,140,141,142,143,144,146,148,149,151,152,153],read_async:46,readabl:[3,10,13,24,25,28,30,31,34,37,40,53,60,75,80,88,98,100,109,110,125,129,138],readandmaybemodifi:77,readattribut:114,reader:[6,15,19,36,37,52,54,75,83,88,128,129,131,132,137,147],readi:[43,46,49,63,68,79,83,109,125,131,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],readjust:13,readm:[49,60,110,121],readnon:[6,56,75,84,98,109,112,122],readobj:[19,100,109],readonli:[0,6,56,75,82,98,109,111,112,127],readtscp:128,readwrit:0,real:[2,4,15,16,43,62,75,77,84,88,100,102,106,109,118,124,136,141,151],realign:75,realist:[58,116,137,147],realiti:68,realiz:[52,141,149,151],realli:[1,3,11,15,43,44,49,52,59,60,61,75,77,82,93,96,98,99,100,109,110,116,117,120,121,136,138,139,140,141,142,144,145,146,148,149,150,151,152,153],realloc:2,reallyhidden:43,realmag:[141,151],realpr:75,realstart:[141,151],reappli:49,rearrang:76,reason:[2,3,8,11,12,13,15,43,46,49,51,52,55,56,58,59,60,62,67,69,74,75,77,82,83,100,106,108,109,110,112,113,114,116,121,125,131,133,136,137,138,139,140,142,144,146,147,148,149,150,152],reassoc:[75,104],reassoci:[75,76,104,139,140,141,142,149,150,151,152],reassur:77,rebas:[60,102],rebuild:[1,60,111,127],rec:[146,147,148,149,150,151,152],recal:[83,129,138,139,140,148,149],recap:5,receipt:106,receiv:[6,12,13,51,56,57,64,75,77,79,100,106,118,133,147],receivedtermin:135,recent:[11,49,50,51,58,60,63,75,77,99,105,129,131,139],recept:49,recheck:[83,98],recip:[66,103],reciproc:75,reclaim:[75,76],recogn:[4,13,43,75,78,83,98,100,104,120,136,140,144,146,150],recognis:100,recombin:131,recommend:[11,12,13,15,20,44,49,56,58,59,60,73,75,77,84,97,99,102,112,121,125,137,139,142,143,147,149,152],recompil:[2,5,55,111,133,140,150],recomput:[2,100,125],reconfigur:[64,74],reconstitut:75,reconstruct:[23,36,59,109,126,128],record:[21,22,35,37,41,42,49,60,75,88,91,92,93,96,99,100,102,103,106,109,111,112,114,116,117,118,120,123,127,132,138,139,140,141,142,143,144,145,153],record_kind:128,recordid:6,recoup:6,recov:[16,51,55,75,100,111],recover:15,recoveri:[100,137,138,139,140,141,142,143,144,147,148,149,150,151,152],recreat:[60,75,129],recurr:[98,103],recurs:[20,31,36,58,75,98,100,102,112,114,136,137,138,140,141,142,146,147,148,150,151,152,153],recycl:[13,126],red:75,redefin:[116,138,141,142,148,151,152],redefinit:[44,131,138,142,148,149,150,151,152],redhat:97,redirect:[17,31,68,75,77,104,121,122,144],rediscov:[145,153],redistribut:49,reduc:[4,9,10,12,13,15,17,23,32,43,44,46,47,49,50,59,62,70,72,76,77,83,84,100,102,103,105,107,118,125,130,131,134,139,144,149],reduce_input:77,reduct:[0,15,19,22,104],redund:[13,43,44,56,62,76,85,100,112,133,139,149],redwin:13,redwood:0,reevalu:117,reextern:[148,149,150,151,152],ref:[2,60,84,88,91,102,116,137,138,139,140,141,142,143,144,147,148,149,150,151,152],refactor:[49,76,102,142,152],refcount:58,refer:[0,1,2,5,6,7,9,11,12,13,15,16,17,20,21,22,35,40,45,46,47,51,53,54,59,60,62,65,68,71,76,77,79,81,82,83,84,85,88,91,96,99,104,105,109,111,112,114,116,118,121,124,125,128,129,130,131,132,133,137,138,139,140,141,142,143,144,147,148,150,152],referenc:[0,6,35,43,44,63,75,76,78,80,83,88,100,109,117,122,124,137,138,139,140,141,142,143,144,147,148,149,150,151,152],referenti:98,refil:83,refin:[2,13,100,131],reflect:[0,2,49,60,62,68,75,78,124,125,141,151],reflex:83,reformat:[15,81],reformul:2,refrain:[68,75,106],refresh:78,refus:[11,24,30,32,34,41,98,131],reg1024:13,reg1025:13,reg1026:13,reg1027:13,reg1:16,reg2:16,reg:[13,16,80,81,84,100,111,116,124],reg_sequ:80,regalloc:[13,21,22,125],regalloclinearscan:13,regallocregistri:125,regard:[3,15,54,68,73,75,114,130],regardless:[0,2,11,15,24,30,32,34,41,58,61,62,75,97,98,109,142,152],regbankselect:80,regconstraint:13,regener:[68,70],regex:[16,28,31,43,120],regexp:20,region0:47,region1:47,region:[0,6,28,46,51,75,76,102,103,111,122],regioninfo:[98,103],regionsforfile0:47,regionsforfile1:47,regist:[2,5,10,16,17,21,22,41,42,46,48,49,51,58,60,64,75,79,81,85,99,100,103,104,111,112,114,116,118,123,126,129,138,141,142,143,144,148,149,150,151,152],register_operand0:0,registeralias:114,registeranalysisgroup:2,registerasmprint:124,registerasmstream:13,registerclass:[13,114,118,124],registerdescriptor:124,registeredarg:58,registerehfram:[79,135],registerehframesinprocess:135,registerinfo:[13,80,124],registerlist:124,registermcobjectstream:13,registermypass:125,registerpass:125,registerpasspars:125,registerregalloc:125,registerschedul:125,registertarget:[104,124],registerwithsubreg:124,registr:[45,48,54,58,131],registri:[58,104,143],reglist:124,regmapping_f:13,regno:13,regnum:111,regoffset:81,regress:[9,15,16,20,49,60,61,77,101,102,105,120],regstat:[13,80],regtyp:124,regul:125,regular:[3,15,16,20,23,28,31,32,33,36,43,44,60,75,77,80,83,102,120,129,145,153],reid:113,reilli:100,reindent:15,reinterpret:5,reinterpret_cast:135,reiter:75,reject:[16,43,62,68,75,145,148,149,150,151,152,153],rejit:149,rel:[0,6,7,10,11,13,15,16,20,25,36,37,43,46,53,56,58,60,68,77,81,82,100,101,103,104,105,108,111,112,120,130,132,140,144,150],rel_path_to_fil:28,rela:0,relat:[0,2,3,12,13,15,20,46,49,51,59,62,68,72,74,75,82,83,84,88,98,100,102,105,107,109,111,112,114,121,125,129,138,140,141,148,149,151],relationship:[0,16,31,51,58,72,75,83,109,112,113,124,125,126],relax:[62,112],releas:[0,11,13,15,27,46,49,50,51,56,60,63,65,71,75,77,78,97,100,101,109,111,124,125,127,130,131,138],release_11:60,release_1:60,release_29:60,release_350:60,release_38:102,release_39:102,release_test:68,release_xi:68,release_xx:68,releasei:105,reles:65,relev:[2,3,13,16,44,46,49,56,62,65,67,68,69,72,74,75,96,97,99,102,103,106,112,126,140,150],reli:[5,7,12,13,15,46,49,54,56,58,59,75,77,78,93,100,102,105,109,112,121,123,126,131,142,152],reliabl:[11,20,55,103],religion:14,relink:[9,27],reload:[13,46,58,62,76,77,142,143,144,152],reloc:[13,22,38,58,67,70,75,79,80,124,143],reloc_absolute_dword:124,reloc_absolute_word:124,reloc_pcrel_word:124,reloc_picrel_word:124,relocat:[0,22,75,79,124],relocationtyp:124,reloccrc:88,relpo:23,relwithdebinfo:[11,60],rem:13,remain:[3,11,15,16,23,46,47,49,51,58,62,68,75,80,85,98,100,102,103,106,109,111,112,116,121,128,131,141,142,151,152],remaind:[13,47,52,60,74,75,121,124],remainingbuffersizetoskip:128,remap:[13,62],remark:[9,123],remateri:3,rememb:[14,15,43,49,54,59,60,61,65,67,75,77,100,112,120,125,131,137,140,142,143,144,147,150,152],remind:[49,68],remot:[60,79,102,131,134,154],remotejit:135,remotejitutil:135,remov:[2,6,9,11,13,15,16,21,23,28,30,32,41,43,46,49,50,51,54,56,60,62,66,68,69,71,75,76,77,78,80,82,83,84,85,97,100,104,109,112,113,121,124,125,126,131,132,133,138,139,140,141,142,143,144,145,149,150,153],remove_if:100,removebranch:124,removefrompar:100,removemodul:[131,132,133,134,135,139,140,141,142],renam:[9,15,60,75,80,100,105,109,134,135,142,152],render:[13,62,75,100,127,141,151],reorder:[0,3,16,75,104,109,112],reorgan:[103,129],repeat:[9,51,62,75,81,83,98,102,105,109],repeatedli:[55,75],repetit:13,rephras:59,repl:[131,132,135,139],replac:[3,11,13,23,28,35,36,43,44,46,49,50,51,56,58,60,63,75,76,78,80,82,83,84,85,102,103,104,109,112,113,116,117,120,121,122,124,126,130,131,132,133,134,139,142,152],replacealluseswith:[76,83,100],replaceinstwithinst:100,replaceinstwithvalu:100,replaceusesofwith:[76,100],replaceusesofwithonconst:76,replai:0,repli:[49,68],replic:[70,78,85,102,103,116,129],repo:[50,60,96,102],report:[0,2,4,9,14,20,21,25,47,57,58,74,75,76,77,78,98,100,102,107,109,111,112,120,121,125,130,138,148],report_fatal_error:[15,100],repositori:[49,50,51,60,67,68,70,99,109,121,130],repres:[0,2,3,5,6,7,8,10,12,15,20,23,43,46,47,51,52,54,55,56,58,59,62,71,75,80,82,84,88,92,96,98,100,102,103,109,112,114,116,117,118,124,126,128,129,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],represent:[0,5,7,12,13,15,36,37,43,51,52,58,62,76,80,81,100,109,111,112,116,118,124,125,126,127,128,129,130,131,137,138,139,141,145,147,148,149,151,153],reprimand:106,reproduc:[9,15,49,50,68,70,77,85,121,142,152],repurpos:109,reput:102,reqd_work_group_s:0,reqdworkgroups:0,reqdworkgroupsizei:0,reqdworkgroupsizex:0,reqdworkgroupsizez:0,request:[0,6,23,49,51,58,60,75,77,78,79,102,106,111,112,116,128,131,133,143],requir:[0,1,3,4,5,6,9,10,11,12,15,16,20,23,26,28,45,47,49,51,52,54,55,56,57,62,63,65,66,67,68,69,72,73,74,75,77,78,79,80,82,83,84,85,98,99,100,102,105,106,107,109,111,112,113,114,116,124,126,128,129,131,132,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],required_librari:74,requires_rtti:97,requri:12,res:75,rescan:83,research:[52,120,130],resembl:59,reserv:[0,4,6,13,55,68,75,77,88,111,112,124,128],reserveresourc:13,reset:[6,11,51,77,100,116,128,134,135],resid:[0,5,6,10,46,58,75,77,84,92,109,125],resign:49,resiz:15,resolut:[4,44,106,131,139,141],resolv:[0,12,13,14,20,44,49,75,78,79,100,106,118,125,128,131,132,133,134,135,138,139,140,148,149,150],resolvereloc:79,resolverti:75,resort:51,resourc:[12,43,51,100,124,125,131],resp:[75,100],respect:[0,2,9,11,13,14,15,17,31,40,44,46,49,51,58,59,60,69,75,76,81,100,101,102,112,118,121,122,124,132,133,142,152],respond:[2,98,99,104,106],respons:[0,13,26,46,49,51,58,62,68,75,93,99,100,103,106,108,111,114,122,125,129,131],respres:100,rest:[6,13,16,40,46,49,58,60,62,75,77,78,80,83,100,102,109,110,113,126,139,142,152],restart:[3,64,77,100,125],restat:15,restofthecleanup:46,restor:[6,13,51,73,75,108,124,140,141,142,143,144,150,151,152],restrict:[0,3,13,15,43,49,50,52,53,54,59,73,75,80,82,100,102,104,109,111,112,115,117,123,125,139],restructuredtext:110,result:[0,3,5,6,9,10,11,12,13,15,16,17,18,22,23,24,28,31,36,37,41,43,44,46,47,48,49,50,51,52,53,54,56,58,59,60,61,62,63,68,70,71,72,75,77,79,80,82,83,84,85,92,93,98,100,102,104,105,109,111,113,116,118,120,121,123,124,125,126,127,129,130,131,132,133,137,138,139,140,141,142,143,144,147,148,149,150,151,152],resultti:75,resulttyp:75,resultv:75,resum:[48,51,111],resume1:46,resume2:46,resumpt:46,ret:[3,5,8,13,16,46,51,54,58,59,80,82,84,98,100,108,109,110,111,112,116,121,122,138,139,140,142,148,149,150,152],ret_val:[148,149,150,151,152],retain:[5,43,49,54,75,76,100,107,125],retainedtyp:[75,109],retarget:[13,130],retcc_sparc32:124,retcc_x86_32:124,retcc_x86_32_c:124,retcc_x86_32_fast:124,retcc_x86_32_ss:124,retcc_x86common:124,rethrow:[51,112],retpolin:104,retq:[80,112],retri:126,retriev:[23,43,51,79,84,99,100,111,112,125,129],retti:6,returnaddress:80,returnindex:71,returns_signed_char:75,returns_twic:[6,75],returntyp:[58,75],retval:[51,75,138,139,140,141,142,143,144],reus:[12,13,49,62,75,102,109,111],reusabl:[13,62],rev128:5,rev64:5,rev:[5,68,102,147,148,149,150,151,152],reveal:59,revector:[98,100],revers:[5,11,16,59,75,76,98,100,116],revert:[49,60],review:[10,15,56,60,61,68,76,77,83,102,103,106,110,112,113,130],reviewe:49,revis:[11,15,49,50,56,60,68,99,100,109,111],revisit:[103,112],revok:49,revolv:109,rework:[43,49],rewound:51,rewrit:[15,69,75,76,98,102,112,124,142,152],rewritestatepointsforgc:58,rewritten:[13,100],rex:75,rfunc:32,rglob:32,rgm:125,rhs:[147,148,149,150,151,152],rhs_val:[148,149,150,151,152],ri_inst:116,rich:130,richer:111,rid:[83,88],right:[0,3,5,12,13,15,17,23,43,49,52,54,56,60,68,69,70,75,80,83,98,99,102,105,114,121,128,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,152,153],rightr:83,rigor:13,riinst:116,rip:[75,80,118,121],risc:[3,13,124],rise:15,risk:[65,68,75,100],rival:100,rl1:84,rl247405:77,rl247414:77,rl247416:77,rl247417:77,rl247420:77,rl247422:77,rl2:84,rl3:84,rl4:84,rl5:84,rl6:84,rl7:84,rmw:3,rnnnn:49,ro_signed_pat:118,roam:61,rob:44,robert:44,robot:130,robust:[44,62,81,104,121],rocm:0,rodata:[0,124],role:[15,36,83,100,105,109,117,137,147],roll:[15,69],room:[71,125,137,147],root:[11,13,20,26,27,49,50,60,64,67,74,75,76,92,100,101,104,114,121,127,138,148],rootcount:58,rootmetadata:58,rootnum:58,roots_begin:58,roots_end:58,roots_iter:58,roots_siz:58,rootstackoffset:58,rope:100,rot:49,rotat:[13,52,104],rotl:52,rough:[59,102,116,117],roughli:[3,13,44,51,68,69,76,77],roun:44,round:[5,13,44,47,68,129,141,151],roundp:123,roundup:0,rout:2,routin:[3,13,20,49,51,58,75,83,98,112,113,125,128,136,137,145,146,147,149,153],row:72,row_bcast:0,row_half_mirror:0,row_mask:0,row_mirror:0,row_rol:0,row_ror:0,row_shl:0,row_shr:0,rowfield:72,rpass:123,rpath:60,rpc:[128,135],rpcc:75,rpo:76,rppassmanag:125,rrinst:116,rs1:124,rs2:124,rs880:0,rsi:[13,118],rsp:[13,80,108,111,112,118],rss:77,rss_limit_mb:77,rst:[13,110,114],rtdyldmemorymanag:[131,132,133,134,135],rtdyldobjectlinkinglay:[131,132,133,134,135],rtl:13,rtti:[11,51,97,100,122,130,142,143,144],rubi:58,rude:51,rule:[0,3,13,14,15,16,18,24,26,36,44,46,49,67,73,83,100,101,105,107,109,113,115,116,118,120,121,125,128,138,139,140,148,150],run:[0,1,2,3,4,5,9,11,12,13,15,16,17,27,28,37,41,43,44,46,47,48,49,50,51,54,55,56,58,60,61,62,63,64,65,66,68,70,74,75,78,79,80,82,83,85,97,98,99,100,101,102,104,105,109,111,112,114,116,121,123,124,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],run_funct:[149,150,151,152],run_long_test:121,runfunct:[48,100],runfunctionasmain:48,runhelp:15,runnabl:60,runner:120,runonfunct:[2,9,85,100,124,127],runonmachinefunct:[13,85,124],runonmodul:127,runtest:[67,105],runtim:[0,1,3,6,8,9,13,15,28,43,44,45,47,48,49,55,58,60,66,76,93,98,100,102,108,111,112,113,124,125,127,129,133,134,135,139,141,145,151,153],runtimedyld:[79,133],runtimedyldelf:79,runtimedyldimpl:79,runtimedyldmacho:79,runtimehandl:0,runtimevers:[75,109],rv670:0,rv710:0,rv730:0,rv770:0,rvalu:15,rzi:84,s15:75,s16:62,s17:62,s31:75,s32:[62,80,84],s64:[62,84],s7100:0,s7150:0,s9150:0,s9170:0,s9300x2:0,s_add_u32:[0,80],s_and_b64:0,s_andn2_b32:0,s_annot:75,s_arch:44,s_ashr_i32:0,s_barrier:0,s_bcnt0_i32_b64:0,s_bfe_i64:0,s_bfm_b64:0,s_bitcmp0_b64:0,s_bitcmp1_b32:0,s_cbranch_g_fork:0,s_cbranch_join:0,s_cmov_b32:0,s_cmp_eq_i32:0,s_cselect_b32:0,s_dcache_inv:0,s_dcache_inv_vol:0,s_dcache_wb:0,s_endpgm:0,s_load_dword:0,s_load_dwordx16:0,s_load_dwordx2:0,s_load_dwordx8:0,s_lshr_b64:0,s_memtim:0,s_mov_b32:0,s_mov_b64:0,s_nop:0,s_sendmsg:0,s_sethalt:0,s_setvskip:0,s_sleep:0,s_swappc_b64:0,s_trap:0,s_waitcnt:0,s_wqm_b64:0,sacrific:[75,83],sadli:99,safe:[2,3,6,9,13,17,43,49,56,59,60,70,75,76,85,98,106,111,112,126,133,145,152,153],safepoint:[58,75,130],safepoint_pol:112,safepointaddress:58,safer:[100,104],safestack:[6,75,104],safeti:[55,56,75,104,106,126],saga:[140,150],sahf:13,sai:[13,14,16,20,23,43,56,59,62,69,72,75,82,92,93,100,102,110,113,120,136,138,145,146,148,153],said:[15,51,75,82,100,107,109,145,153],sake:[100,125],salt:107,same:[0,2,3,5,6,9,11,12,13,15,17,18,20,22,23,24,25,28,36,41,43,44,46,47,49,51,52,53,55,56,57,58,59,60,62,63,65,66,68,70,72,73,74,75,76,77,82,83,84,85,88,93,96,97,98,99,101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,118,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,145,147,148,149,150,151,152,153],same_cont:53,same_s:53,sames:75,sampl:[0,1,8,37,43,48,58,61,77,84,101,112,125,127,137,138,144,147,148,155],samplepgo:8,sandbox:[67,105],sander:62,sandi:104,sandybridg:123,sandylak:143,sane:[3,11,136,146],sanit:[11,12,57,60,77,104,107,127],saniti:[56,60,74,77],sanitize_address:[6,75],sanitize_hwaddress:[6,75],sanitize_memori:[6,75],sanitize_thread:[6,75],sanitizer_common:107,sanitizer_common_nolibc:107,sanitizer_termin:107,sanitizercommonflag:107,sanitizercoverag:[77,104],sanitizercoveragetracedataflow:77,sanitizerlist:127,saptr:75,sar:13,sass:[44,84],sata:65,satisfi:[0,2,3,49,55,66,68,75,104,113,142,152],satur:[141,151],save1:46,save2:46,save:[0,5,6,11,13,25,43,44,51,52,60,61,70,73,75,77,79,84,97,99,100,109,111,116,123,124,139,140,141,142,143,144,149,150,151,152],savesomewher:15,savethi:16,saw:[78,125,140,150],scaffold:[137,147],scalabl:2,scalar:[0,13,43,44,56,58,62,74,75,76,103,104,123,124,125,132,133,134,135,139,140,141,142,144,152],scalarbitsettrait:129,scalarevolut:[2,59],scalaropt:27,scalartrait:129,scale:[4,13,15,37,59,69,114],scaling_governor:4,scan:[13,15,20,21,22,58,83,93,114,120,121,125,133,145,149,153],scanner:[136,146],scare:49,scari:[136,145,146,153],scatter:[103,104,109],scaveng:104,scc:[76,85,125],sccp:76,scenario:[1,3,9,54,60,100,103,121],scene:100,scev:49,sched:[13,22,124],schedcov:124,schedul:[16,22,60,65,68,84,100,103,104,112,114,125],schema:[20,26,109,129,155],scheme:[1,10,15,25,57,58,71,75,100,112,124,131,133,134,142,152],scm:102,scope:[2,6,9,11,15,16,40,42,49,51,56,58,77,80,100,112,114,125,129,138,140,141,142,143,144,148,150,151,152],scopelin:[75,109,144],scott:15,scrape:20,scratch:[13,75,100,124,125],scratch_en:0,scratch_load:0,scratch_segment_s:0,screen:105,script:[1,11,17,20,26,43,49,50,54,58,60,65,68,100,101,102,114,120,121,125],scroll:99,scudo:130,scudo_opt:107,sdisel:76,sdiv:[13,62],sdk:[0,11,36,44,60],sdnode:[9,13,100,118,124,127],sdtc:124,sdvalu:[13,124,127],sdwa:0,sea:0,seamless:63,seamlessli:[77,78],sean:100,search:[9,10,11,16,20,31,36,43,49,51,58,60,62,72,74,75,76,77,98,100,101,103,109,112,123,124,130,131,132,133,134,135,138,139,140,141,142,150],searchabl:[131,132],sec:75,secidx:53,seciton:53,secnam:53,second:[0,6,8,10,11,12,13,15,16,20,23,43,46,47,51,58,59,60,61,62,68,72,75,77,82,83,88,92,93,98,99,100,107,108,109,110,111,112,113,120,123,124,125,128,129,131,133,138,139,140,141,142,143,144,145,148,150,153],second_end:75,second_tru:75,secondari:[10,49,51,111],secondcondit:100,secondlastinst:124,secondlastopc:124,secondli:[102,144],secrel32:53,secret:107,sectalign:43,section:[2,3,4,5,6,10,11,12,13,15,20,21,22,23,26,31,36,37,38,40,41,43,44,46,47,49,50,51,58,59,60,68,69,70,74,75,79,80,81,82,83,96,98,100,102,104,107,108,109,112,113,114,116,120,122,123,124,125,126,127,131,137,139,144,145,147,149,153,155],sectioncontr:88,sectioncontribentri:88,sectioncontribentry2:88,sectioncontributions:88,sectioncontrsubstreamvers:88,sectiondata:155,sectionlength:88,sectionmapentri:88,sectionmapentryflag:88,sectionmaphead:88,sectionmaps:88,sectionmemorymanag:[79,131,132,133,134,135],sectionnam:[6,88],sectionnumb:155,sectnam:43,sector:113,sectvalu:43,secur:[10,43,98,130,139],sed:[54,60],see:[0,2,3,4,5,6,7,8,9,11,12,13,14,16,26,28,33,40,41,42,43,44,49,50,52,54,56,57,59,60,61,62,64,66,67,69,70,74,75,76,77,80,81,82,83,84,85,88,91,92,96,98,99,100,101,102,103,105,107,109,110,111,112,113,114,116,118,120,121,122,123,124,125,126,127,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],seed:[39,77],seek:[49,53,59,98,128,130],seekabl:128,seem:[2,5,9,11,13,29,43,44,58,59,69,82,83,88,102,131],seemingli:124,seen:[13,15,37,43,62,75,82,83,100,112,124,125,133,139,141,145,151,153],segment:[0,88,109,111,128,130],segmentreg:13,segnam:43,seh:75,sel:46,seldom:[83,102],select:[0,5,11,15,28,35,49,50,51,52,53,57,58,59,60,61,72,76,79,80,84,98,99,100,102,103,104,112,114,116,118,120,124,125,126,127,129,130,142,143,152],select_isd_stor:124,selectaddrrr:124,selectcod:124,selectcodecommon:127,selectimpl:62,selectinst:15,selectiondag:[3,98,100,114],selectiondagbuild:13,selectiondagisel:[114,127],selectiondagnod:124,selectionkind:75,selector:[13,42,51,60,62,75,88,109,114],selecttarget:[131,132,133,134,135],self:[6,13,47,58,75,83,88,98,99,100,106,120,125,137,139,141,147,149,151],selp:84,selti:75,sema:114,semant:[0,3,13,15,44,51,54,58,74,76,78,81,100,103,109,114,115,118,125,129,132,138,140,148,150],semi:[12,58,74,126,145,153],semicolon:[11,60,116,137,138,139,140,141,142,143,144,147,148,149,150,151,152],semispac:58,send:[3,13,21,24,30,32,42,49,56,64,68,70,83,99,102,104,105,110,121,125,130,138],sendmsg:0,sens:[2,3,11,13,15,23,43,54,59,73,75,77,100,109,112,127,131,138,145,148,153],sensibl:100,sensit:[2,11,29,80,102,125,129],sent:[21,30,37,49,68,99,112,130],sentenc:15,sentinel:6,separ:[0,3,6,7,11,12,13,15,16,20,28,35,36,37,43,44,46,49,50,57,58,59,60,62,67,73,74,75,77,78,82,84,92,100,101,102,106,107,109,110,111,113,114,116,120,121,124,125,129,135,137,139,147],seq:155,seq_cst:[0,3,75],sequenc:[2,3,5,13,15,16,22,46,47,51,56,58,59,62,75,77,83,85,98,100,102,103,109,111,112,114,116,117,123,124,125,128,137,141,142,147,151,152,155],sequencetrait:129,sequenti:[0,6,13,16,51,75,102],sequentialtyp:100,seri:[0,1,6,11,13,49,51,60,70,75,80,100,103,125,132,136,139,146,149],serial:[52,60,80,83,101,114,129,130],serializ:62,seriou:[68,102,106],serious:61,serv:[5,20,36,46,50,51,59,93,98,100,103,106,109,111,117,121,128,130,134,135],servaddr:135,server:[36,68,100,102,135],servic:[0,2,4,54,102,113],sese:103,session:[48,100,110],set:[1,3,4,5,6,8,9,11,12,13,15,16,17,20,21,22,23,28,35,42,44,45,46,47,49,50,51,52,54,57,58,60,61,62,63,64,65,66,67,68,72,73,74,75,77,78,79,83,84,85,88,91,92,96,97,99,101,102,104,105,109,111,112,113,114,116,117,118,120,121,122,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],set_value_nam:[148,149,150,151,152],setact:62,setargstr:43,setbann:[100,135],setbid:6,setcategori:43,setcc:[13,62,100],setcompileact:[134,135],setcondcodeact:124,setconvertact:124,setcurrentdebugloc:144,setdata:15,setdatalayout:[139,140,141,142,143,144],setdescript:43,setexitcodemapp:100,setfoo:75,setgc:58,setgraphattr:100,setgraphcolor:100,sethi:124,sethiddenflag:43,setindexedloadact:124,setindexedstoreact:124,setinsertfencesforatom:3,setinsertpoint:[138,139,140,141,142,143,144],setinternallinkag:100,setjmp:[75,145,153],setjmp_buf:51,setloadextact:124,setloadxact:124,setmaxatomicsizeinbitssupport:3,setmcjitmemorymanag:79,setnam:[100,138,139,140,141,142,143,144],setoperationact:[3,13,124],setp:84,setpreservesal:125,setpreservescfg:125,setrecordnam:6,setreg:13,setrequiresstructuredcfg:124,setscalarinvectoract:62,setsockopt:135,setsubprogram:144,settargettripl:143,setter:[75,100,109,114],settl:102,settruncstoreact:124,setup:[0,1,53,63,66,80,100,102,109,120,121,124,131,139,145,153],setupmachinefunct:124,setvector:15,setxyzzi:15,sevenkind:75,seventeen:80,sever:[2,6,9,11,12,13,15,20,23,25,34,36,37,43,46,47,51,52,58,60,62,71,75,77,78,80,83,98,99,100,101,103,105,106,107,109,113,114,116,118,120,121,124,125,130,138,140,145,148,150,153],sex:14,sexi:[136,146],sexist:14,sext:0,sextload:[118,124],sexual:14,sge:75,sgi:100,sgn:75,sgpr0:0,sgpr1:0,sgpr2:80,sgpr:75,sgprn:0,sgrr:0,sgt:75,sh_addralign:0,sh_hidden_private_base_vimid:0,sh_link:53,sha1:77,shader:[0,13,15],shadow:[111,112,124,140,141,142,143,144,150,151,152],shadowbyt:111,shadowlist:124,shadowstackgc:58,shadowstackgclow:58,shall:[11,43,75,145,153],shape:[68,69,100,109,118],shapekind:69,shard:20,share:[0,3,6,9,11,13,15,17,21,22,44,48,51,53,60,62,67,70,72,75,77,78,84,98,100,101,107,109,112,113,118,120,121,125,128,129,131,134,135,138,141,144,148],shared_librari:101,shared_ptr:[132,133,134,135],sharedfnast:[134,135],sharir:103,she:[64,118],shelf:[131,132],shell:[9,11,20,43,54,60,110,121,144],shf_alloc:0,shf_execinstr:0,shf_link_ord:53,shf_write:0,shield:[4,13,107,113],shift:[0,6,7,13,43,52,56,75,76,83,98,118,128],shiftinst:15,shim:98,shini:125,ship:[1,3,10,48,58,60,112,145,153],shirt:14,shl:[15,83,98,116,117],shlib:60,shlibext:121,shoe:129,shoot:[139,149],short_enum:75,short_wchar:75,shortcut:[136,146,147],shorter:[37,49,104],shortest:[83,117],shorthand:116,shortli:[0,144],should:[0,1,2,3,5,6,7,8,9,10,11,13,14,15,17,20,21,22,23,28,36,41,42,43,44,46,49,51,52,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,84,85,88,92,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,121,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,142,144,146,147,148,149,150,152],shouldexecut:100,shouldexpandatomiccmpxchginir:3,shouldexpandatomicloadinir:3,shouldexpandatomicstoreinir:3,shouldinsertfencesforatom:3,shouldn:[2,15,43,67,75,79,82,136,146],show:[8,13,16,20,31,35,36,42,43,46,47,48,59,60,63,75,76,79,80,84,99,100,102,105,109,110,111,116,122,123,124,125,127,129,131,133,134,135,136,137,138,139,140,141,142,143,145,146,147,148,149,150,151,152,153],showdebug:48,shown:[5,20,28,31,37,38,43,46,47,61,69,75,80,82,84,100,109,110,111,118,120,122,124,129,141,151],shr:15,shrink:13,shstrtab:0,sht_dynam:0,sht_hash:0,sht_nobit:0,sht_note:0,sht_progbit:0,sht_rela:0,sht_strtab:0,sht_symtab:0,shtest:20,shuffl:[20,75,103,104],shufflebyt:77,shufflevector:[5,16],shut:[15,77,124],shutdown:77,sibl:104,side:[0,2,3,11,13,15,44,58,62,75,80,83,84,98,100,102,104,112,121,137,138,140,141,147,148,150,151],sidebar:68,sidelength:69,sift:126,sig:60,sig_atomic_t:75,sight:[142,152],sign:[13,14,15,43,45,49,53,56,59,62,75,77,78,80,100,104,116,124,145,153],signal:[3,43,48,51,55,75,77],signatur:[3,5,13,23,25,44,60,75,91,93,100,112,125,138],signature_invalid:60,signext:[6,75],signextimm:13,signific:[2,5,6,15,49,52,58,75,77,78,83,100,103,112,125,128,136,140,141,146,151],significand:75,significantli:[6,11,15,25,49,51,55,66,75,77,78,100,104,125,137,140,147,150],sigplan:[13,58],sigusr1:77,sil:118,silent:[2,49,64,75,116],silli:[2,15,54,136,146],simd:[0,21,22,75,103,123],similar:[3,6,12,13,15,16,23,27,36,43,44,46,49,51,53,58,59,60,62,65,66,75,77,80,83,84,88,98,100,101,102,103,107,113,114,116,121,123,124,125,126,127,129,132,136,138,139,140,141,144,146,148,149,150,151],similarli:[2,3,5,6,9,15,43,44,49,51,57,62,69,70,75,100,120,122,124,126,128,130,143,144],simm13:124,simpl:[1,2,3,5,6,7,9,11,12,13,15,16,20,21,22,35,43,47,49,50,52,58,59,60,61,62,69,74,77,81,82,83,102,109,112,113,116,120,121,123,124,125,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],simplecompil:[131,132,133,134,135],simpleproject:11,simpler:[13,52,75,98,100,109,131,141,142,151,152],simplest:[1,13,43,61,77,124,127,129,132,137,138,147,149],simpletyp:155,simplevalu:117,simpli:[2,9,10,13,15,16,23,36,41,43,49,51,54,57,59,60,67,75,80,81,82,88,98,99,100,101,102,109,111,112,113,120,121,124,125,127,128,132,137,138,139,147,148,149],simplic:[58,62,100,111,136,138,148],simplif:[9,62,98,125],simplifi:[1,13,49,58,70,75,77,85,99,112,120,129,131,136,139,140,141,142,144,146,149,150,151,152,155],simplifycfg:[17,142,152],simplifydemandedbit:127,simul:[5,13,49,62,75],simultan:[3,5,18,77,100,121,123],sin:[2,44,123,129,131,136,137,138,139,146,147,148,149],sin_famili:135,sin_port:135,sinc:[0,2,6,7,13,15,23,36,37,43,46,47,49,51,54,58,59,60,61,62,65,67,68,69,70,72,75,77,79,82,83,84,88,92,96,100,102,104,105,108,109,110,111,112,113,117,118,124,125,128,129,131,132,136,137,138,139,140,141,142,144,147,148,149,150,151,152],sine:[75,124],sinf:44,singl:[1,3,5,6,9,11,12,13,15,16,20,23,28,31,34,36,37,43,44,47,49,50,51,52,58,59,60,62,71,73,76,77,80,82,83,84,85,88,91,92,100,101,103,105,109,112,116,120,121,123,124,125,129,131,132,136,138,139,142,144,145,148,149,152,153],singlesourc:[120,121],singlethread:[0,75],singli:58,singular:[15,100],sink:[2,43,103],sint:75,sit:132,site:[2,12,20,51,58,61,73,75,82,98,104,111,112,121,122],sitofp:[138,148],situat:[3,13,43,44,51,59,63,66,69,75,83,98,100,106,123,124,125,133,139,149],six:[3,13,20],sixkind:75,sixth:124,sizabl:100,size1:75,size2:75,size3:75,size:[0,2,3,4,5,6,9,14,15,17,20,21,23,25,28,35,36,37,39,43,47,52,53,56,58,59,62,75,76,77,78,83,84,88,92,97,98,104,107,109,111,112,115,116,118,120,121,122,123,124,125,126,127,128,129,132,135,137,138,139,140,141,142,143,144,145,147,152,153],size_t:[3,58,77,78,100,129],sizeclassalloc:107,sizeof:[36,46,54,75,84,92,100,112,135],sizeofimm:124,sjlj:104,sjljehprepar:51,sk_buff:13,sk_circl:69,sk_lastsquar:69,sk_otherspecialsquar:69,sk_somewhatspecialsquar:69,sk_specialsquar:69,sk_squar:69,sketch:46,skim:15,skip:[5,6,12,13,15,37,44,46,47,58,62,66,75,100,102,109,112,123,124,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],skipbasicblock:85,skipfunct:85,skiploop:85,skipmodul:85,skipscc:85,skylak:104,slash:[23,75],slave:64,slc:0,sle:75,sled:126,slice:[100,116,117],slide:[14,44,100],slight:53,slightli:[1,15,44,75,112,125,139,141,142,149,151,152],sligtli:5,sln:61,slot:[13,25,46,51,56,73,75,104,108,111,112,124,142,152],slow:[21,60,75,77,97,100,125,132],slowdown:77,slower:[13,15,31,44,51,54,56,58,75,83,100],slowli:[49,60],slp:[76,103],slt:75,sm_20:[13,84],sm_21:13,sm_30:[13,44],sm_35:[13,44],sm_xx:44,small:[6,9,10,12,13,15,17,22,25,37,43,46,47,49,50,56,58,59,62,68,69,74,75,77,83,84,100,109,111,113,120,121,125,130,133,136,144,146],smallconst:111,smaller:[3,13,15,28,33,49,56,58,75,77,85,98,99,100,120],smallest:[50,70,75],smallsetvector:100,smallvector:[135,144],smallvectorhead:100,smallvectorimpl:[100,127],smart:[15,75],smarter:43,smash:75,smell:100,smith:15,smooshlab:130,smoothli:[12,132],smovq:13,smp:[3,125],smt:4,smul_lohi:13,sn_map:83,sn_mapl:83,sn_mapr:83,snan:75,snapshot:[2,50],snippet:[49,58,100],so_reuseaddr:135,social:[14,130],sock_stream:135,sockaddr:135,sockaddr_in:135,socket:135,sockfd:135,socklen_t:135,soft:[22,109],softfp:66,softwar:[12,15,22,49,50,58,66,68,76,121,124,125,136,138,145,146,153],sol_socket:135,solari:60,solaris2:125,sole:[49,82,100,102],solut:[3,5,11,13,43,50,60,61,100,102,109,125,130,132,142,145,152,153],solv:[2,13,49,59,62,68,100,102,104,109,141,142,145,151,152,153],solver:13,some:[0,1,2,3,4,5,6,8,9,11,12,13,14,15,16,20,21,23,28,31,35,36,43,44,46,49,50,51,52,54,55,56,57,58,59,60,61,62,65,67,68,69,70,71,72,73,74,75,76,77,78,80,82,83,88,96,97,98,99,100,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],some_crash_test:102,somebodi:[49,132],someclass:117,somefancyaa:125,somefunc:[15,100],somehow:[88,100,125],somelocalpath:77,somemap:15,someon:[13,14,15,36,49,50,52,56,58,99,102,106,110,145,153],sometest:120,someth:[1,2,13,15,16,35,43,46,49,52,60,61,62,66,69,70,72,75,77,82,83,93,98,99,100,102,110,112,113,114,116,117,124,127,129,137,138,139,140,141,143,144,145,147,148,149,150,151,152,153],someti:75,sometim:[6,9,13,15,16,43,44,49,59,60,69,75,77,83,98,100,102,114,124,129],somewhat:[2,3,15,49,50,75,100,102,112,120,130,137,141,147,151],somewhatspecialsquar:69,somewher:[16,51,69,75,120,121,125,138,141,148,151],sonnenberg:102,soon:[49,77,78,105,125,132,137,140,147,150],sooner:64,sophist:[13,58,75,110,120,125],sorri:[145,153],sort:[3,11,15,35,43,44,47,49,54,62,70,75,102,109,126,127,137,139,140,142,145,147,149,150,152,153],sortord:127,sought:75,sound:[2,77,131],sourc:[1,2,4,9,12,13,16,17,19,20,21,26,27,28,36,41,43,44,48,49,50,51,56,58,59,61,66,67,68,70,74,78,80,82,83,84,88,96,99,100,102,105,111,112,113,114,118,120,121,124,125,126,127,129,130,131,132,133,134,135,139,143,145,149,153],source_filenam:75,source_i386:40,source_x86_64:40,sourcebas:130,sourcefil:28,sourcefilecount:88,sourcefilenameindex:88,sourceinfos:88,sourceloc:144,sourcewar:[63,77],southern:0,space0:75,space1:75,space2:75,space:[4,6,11,14,16,21,23,28,35,36,44,51,58,60,61,62,72,73,74,75,79,83,93,100,101,102,106,108,109,111,112,113,116,124,125,128,129,130,139,142,145,149,152,153],spadini:98,spaghetti:[136,146],span:[15,118,125],spanish:107,sparc:[3,13,60,75,116,124,125],sparcasmprint:[13,124],sparccallingconv:124,sparcgenregisterinfo:124,sparcgensubtarget:124,sparcinstrformat:124,sparcinstrinfo:124,sparciseldagtodag:124,sparcisellow:124,sparclet:124,sparclit:124,sparclite86x:124,sparcreg:124,sparcregisterinfo:124,sparcsubtarget:124,sparctargetasminfo:124,sparctargetlow:124,sparctargetmachin:124,sparcv8:[3,75],sparcv9:75,sparingli:56,spars:[13,37,52,60,76,85,100,102,128],sparsecheckout:102,sparser:128,spasr:102,spcc:124,speak:[12,14,44,106,112,140,141,150,151],spec95:120,spec:[44,70,75,80,100,109,116,117,120,121,129],speccpu2000:120,speccpu2006:120,special:[0,2,3,5,6,12,13,20,43,44,47,48,49,50,51,55,58,59,60,62,67,70,74,77,80,82,83,88,96,98,100,102,109,111,113,116,117,118,121,123,124,125,129,130,136,142,143,144,145,146,152,153],specialfp:116,specialsquar:69,specialti:100,specif:[0,1,3,4,6,15,16,20,22,28,31,38,44,45,47,49,51,52,54,57,58,59,60,61,62,67,68,74,75,76,77,79,80,81,82,84,85,88,96,98,100,102,104,105,106,111,112,114,115,116,117,118,120,123,124,125,126,128,129,130,131,132,136,137,139,141,143,146,147,151],specifi:[0,3,6,9,11,12,13,15,16,17,18,20,21,22,23,24,27,28,30,31,32,34,35,36,37,38,39,40,41,42,44,47,50,51,53,54,57,59,60,61,62,70,74,77,80,84,85,88,96,98,100,101,103,104,109,111,112,113,114,116,117,118,120,121,123,124,127,128,129,130,137,138,140,141,142,143,144,145,147,148,149,150,151,152,153],spectr:104,specul:[2,3,44,51,56,75,85,104,112],speculat:[6,75],speed:[11,15,43,44,49,60,77,82,121,132,142,152],spell:[15,49,114],spencer:113,spend:[20,127],spent:127,sphinx:[11,60,130],sphinx_execut:11,sphinx_output_html:11,sphinx_output_man:11,sphinx_warnings_as_error:11,sphinxquickstarttempl:110,spi:0,spiffygrep:43,spiffysh:43,spill:[0,10,13,22,46,62,111,112,124],spillalign:124,spiller:[13,21,22],spillsiz:124,spilt:13,spirit:[14,100],spisd:124,spl:118,splat:76,splice:[75,100],split:[0,3,5,9,13,36,43,44,46,49,52,59,62,75,77,80,82,83,92,98,101,102,108,124],splitdebugfilenam:75,sponsor:102,spot:[77,98],spotti:75,spread:[92,98],spreadsheet:127,springer:44,sprinkl:100,spu:124,spuriou:[15,75],spurious:[75,121],sqlite:77,sqrt:[123,129],squar:[49,69,74,75,104,129],squash:[5,50,60,102],squirrel:132,sra:[116,117],srand:77,src0_sel:0,src1:[13,116,118],src1_sel:0,src2:[13,116,118],src:[11,13,27,68,75,88,96,100,101,105,120,124,139],src_private_bas:0,src_reg:13,src_root:60,src_shared_bas:0,srcarglist:75,srcloc:75,srcvalu:112,srem:13,sret:[6,75],srgp:0,srl:[116,117],sroa:[3,44,56,76,85,142,152],ssa:[51,56,58,75,76,82,100,109,112,124,125,136,138,140,141,142,145,146,148,150,151,152,153],sse2:[75,121],sse41:16,sse4:123,sse:[13,71,75,104,124,143],ssecal:124,sslverifi:60,ssp:[6,75,109],sspreq:[6,75],sspstrong:[6,75],sstream:15,st0:[116,118,124],st1:[5,13,118,124],st2:118,st3:118,st4:118,st5:118,st6:118,st7:118,st_gid:23,st_mode:23,st_uid:23,stab:109,stabil:[49,102],stabl:[29,49,68,78,85,100,124],stack:[0,2,10,15,21,46,51,56,60,73,76,81,82,100,109,117,124,125,126,128,129,130,131,133,135,136,142,144,146,152],stack_loc:13,stack_siz:21,stackar:58,stackentri:58,stackframes:58,stackgrowsdown:124,stackmap:112,stackoffset:58,stackprotectorcheck:75,stackrestor:73,stacksav:73,stacksizessect:13,staff:106,stage1:[1,50],stage2:[1,11,50],stage3:1,stage:[11,13,17,28,43,44,50,62,64,68,77,78,83,84,103,105,124,127,130,137,147],stageselectioncat:43,stai:[46,78,83,102,129,130],stale:0,stamp:[23,93],stanc:15,stand:[13,15,44,49,75,100,121,125,132,133,134,135,137,147],standalon:[13,57,66,74,102,136,144,145],standard:[0,1,2,3,5,13,16,17,20,21,22,24,25,30,32,34,35,36,37,38,40,41,42,43,45,49,51,53,54,55,56,58,61,62,78,80,84,98,112,118,121,123,124,125,128,130,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],standpoint:100,start:[0,1,2,6,9,15,16,17,20,23,28,36,37,46,48,49,50,52,53,54,56,59,62,64,67,68,74,80,83,84,98,99,100,102,105,109,110,112,116,120,123,124,126,127,128,129,130,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],start_bb:[150,151,152],start_val:[150,151,152],startexpr:[140,141,142,143,144,152],startup:[15,20,60,75,84,97,132,133],startval:[140,141,142,143,144],stash:69,stat:[2,4,9,21,22,23,41,62,113,120,125],state:[2,3,5,13,15,43,46,49,50,51,55,58,62,68,75,77,80,82,98,99,100,102,107,109,110,111,112,125,128,129,134,135,137,144],stateless:[3,125],statement:[10,12,15,44,47,51,52,59,75,76,98,100,104,106,109,114,123,124,128,138,140,142,144,150,152],statepoint_token:112,static_cast:[135,142,143,144],static_librari:66,statist:[2,4,21,22,25,28,31,41,47,77,101,120,126],statu:[11,14,49,62,64,75,102,104,111,130],statuscheck:102,stb_local:75,std:[23,41,43,51,54,62,69,83,84,107,123,124,127,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144],stdarg:75,stdcall:[13,75],stddef:77,stderr:[17,77,85,100,137,138,139,140,141,142,143,144],stdin:[16,28,109,121,144,147,148,149,150,151,152],stdint:77,stdio:[60,61,63,78,113,149,150,151,152],stdlib:60,stdout:[20,28,60,61,75,77,147,148,149,150,151,152,155],steadi:55,steensgaard:2,steer:49,stellard:68,stem:[44,100],step:[1,2,9,11,13,44,46,50,51,52,58,59,60,61,62,66,67,68,69,72,75,77,78,83,84,98,100,103,105,114,120,122,125,129,134,135,138,139,140,141,142,143,144,150,151,152,154],step_val:[150,151,152],stepexpr:[140,141,142,143,144,152],stepval:[140,141,142,143,144],stick:[15,65,100,102],still:[5,9,10,13,15,20,28,43,44,47,49,50,51,54,58,60,61,62,63,66,67,69,70,73,75,77,79,82,83,85,97,98,99,100,102,104,106,109,111,112,113,120,123,125,129,131,139,140,141,142,145,150,151,152,153],still_poison:75,stingi:100,stitch:92,stkmaprecord:[111,112],stksizerecord:111,stl:[15,54,60,77,98,100,129,131],stlextra:[131,132,133,134,135,137,138,139,140,141,142,143,144],stm:75,stn_undef:0,stonei:0,stop:[11,14,15,29,36,46,49,51,52,58,60,68,75,77,80,82,100,125,128,137,147],stopgap:100,stopiter:46,stopper:105,storag:[0,4,6,13,46,58,84,109],storageclass:155,store:[0,2,3,5,6,7,11,12,16,23,28,40,43,46,47,50,51,55,58,59,60,62,71,73,76,77,79,80,82,83,84,88,100,101,102,103,104,107,108,109,111,112,120,122,124,136,137,142,143,144,146,147,152],storemerg:46,storeregtoaddr:124,storeregtostackslot:[13,124],storesdnod:124,stori:[47,60,61],str1:116,str2:116,str:[5,31,47,75,84,100,129,131,132,133,134,135,137,138,139,140,141,142,143,144,155],str_offset:109,strai:121,straight:[2,13,44,71,83,100,112,113,116,131,136,137,146,147,148],straightforward:[5,13,54,69,100,102,109,124,125,138,139,140,141,142,148,149,150,151,152,153],strang:[5,15,120,142,152],strategi:[13,43,46,100,104,112,142,152],strconcat:[116,117,124],stream:[6,13,15,16,17,24,30,32,34,35,41,47,52,60,61,75,77,100,109,123,124,125,128,129,131,137,146,147,148,149,150,151,152],streamblock:92,streamdirectori:92,streamer:13,streamsiz:92,strength:[3,13,14,43,56,75,100,130,136,146],stress:[15,19,57],strex:3,strict:[5,16,56,74,75,77,83,100,109,115,118,138,148],stricter:[3,16],strictfp:[6,75],strictli:[16,51,60,75,84,100,109,112,113,131,138,140,143,150],stride:103,strike:[138,148],strikingli:[141,151],string:[0,6,8,11,12,13,15,16,20,21,22,23,31,36,37,40,43,60,71,72,74,80,81,84,88,92,96,98,107,109,112,113,114,116,117,118,124,125,126,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],stringli:12,stringmap:43,stringmapentri:100,stringref:[15,43,104,109,127,129,144],stringsort:15,stringswitch:114,stringwithcstr:109,stringwithspecialstr:109,strip:[9,28,41,43,78,100,109,121,132],strippointercast:15,strive:[14,15,50,62,121],strlen:100,strong:[3,16,49,54,56,75,83],stronger:[0,3,75,100,112],strongli:[12,15,56,58,67,76,116,140,142,145,150,152,153],stroustrup:100,strr:124,strtab:[0,6],strtab_blob:6,strtod:[43,136,137,138,139,140,141,142,143,144],strtol:43,struct:[0,6,13,16,43,44,46,51,56,58,73,82,88,91,92,93,100,109,122,123,124,125,126,129,142,144,145,152,153],struct_anon:6,struct_nam:6,structtyp:100,structur:[0,2,3,6,9,13,15,16,19,23,26,31,36,43,47,51,56,58,59,60,61,62,71,74,76,77,78,79,88,92,93,96,98,102,103,109,110,114,118,124,125,128,129,131,136,137,138,140,141,142,144,145,146,147,148,149,150,151,152,153],struggl:60,stryjewski:98,stt_amdgpu_hsa_kernel:0,stt_func:0,stt_object:0,stub:[13,45,83,100,124,133,134,135],stuck:[145,153],studi:[56,77,101],studio:[1,11,15,53,60,109,130],stuf:16,stuff:[12,13,43,100,110,116,120,125,129,139,140,142,143,144,149,150,152],stump:124,stupid:9,stwu:13,sty:118,style:[0,1,3,9,16,20,22,23,28,43,49,58,61,74,88,100,114,116,117,126,130,137,142,145,147,152,153],stylist:15,sub1:16,sub:[3,6,12,13,16,20,46,49,52,53,60,68,83,100,103,114,116,118,121,124,138,143,148],sub_32:80,sub_8bit:80,sub_ri:116,sub_rr:116,subblock:6,subclass:[2,13,15,43,58,69,80,103,109,116,118,125,129,131,137,147],subclassoptionaldata:83,subclassref:117,subcommand:[125,126,127],subcompon:49,subdirectori:[11,12,20,60,74,102,120,121,124],subdivid:[75,120],subel:[75,76],subexpress:[2,76,137,139,140,141,142,147,149,150,151,152],subfield:116,subfold:50,subgraph:[98,103],subject:[0,10,13,15,49,68,99,100,129],subl:[13,16],sublist:12,submiss:49,submit:[9,60,99,130],submodul:102,subnorm:[75,84],subobject:122,subpath:[20,74],subprogram:[75,109,144],subproject:[15,49,60,102,104,130],subrang:75,subreg:[80,124],subreg_to_reg:80,subregclasslist:124,subregindex:80,subregion:75,subregist:[111,124],subroutin:[58,75],subscrib:[49,99],subscript:[2,75,98],subsect:[36,100],subsequ:[0,13,43,51,59,68,75,79,81,98,109,111,116,123,124,133,134,135,138,139],subset:[2,3,20,49,57,59,75,84,100,102,109,111,120,121,145,153],subst:[116,117,118],substanti:[2,15,58,75,139,149],substit:75,substitu:121,substitut:[3,12,13,16,66,75,98,111,116],substr:[47,121],substream:[36,96],subsystem:[13,75],subtarget:[13,42,62,75],subtargetemitt:124,subtargetfeatur:[118,124],subtl:[12,59,77,88,137,140,145,147,149,150,153],subtleti:102,subtmp5:[142,152],subtmp:[138,139,140,141,142,143,144,148,149,150,151,152],subtool:44,subtract:[13,47,52,75],subtyp:[51,124],subvers:[49,61,68,70,102,104,121],subvert:10,succ:15,succe:[10,16,17,21,23,24,25,27,30,32,34,41,42,51,64,69,100,121,131,137,147,152],succee:139,succeed:[6,7,20,75,125,126],success:[15,17,26,49,51,60,70,75,100,102,121,124,125,126,129,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],success_ord:3,successfulli:[2,18,31,51,62,64,66,67,68,70,112,123,141,151],successor:[7,13,15,29,51,56,75,98,103,124],succinct:20,sudo:[60,65,120],suffer:58,suffic:[5,93],suffici:[2,3,4,9,16,43,56,58,59,60,66,69,70,75,81,98,99,100,102,112,116,136,146],suffix:[0,11,15,20,21,23,24,28,30,43,52,66,75,100,121,124,125,134,135,138,148],sugar:75,suggest:[2,15,49,56,60,62,67,75,97,99,100,101,112,115,118,125],suit:[1,12,13,44,49,51,52,61,62,65,67,68,83,100,102,109,126,131],suitabl:[6,10,12,13,28,43,46,47,57,58,62,75,77,79,84,98,100,109,112,121],sum:[6,7,28,75,88,100,123,127],summar:[13,20,46,58,98],summari:[6,15,16,17,20,21,22,24,27,28,30,32,34,35,37,38,41,42,43,96,98,99,112,120,142,144,152],summaris:5,summat:75,sumo:0,sun:125,sunit:13,sunk:[0,2,62],sunwspro:60,superclass:[2,100,116,118,124,125],superflu:59,superpos:100,superreg:124,superset:[3,23,75],supersparc:124,superword:[76,123],supplement:[45,106],suppli:[6,28,37,46,51,65,68,70,75,78,81,100,102,125,129,131,133,145,153],support:[0,1,2,3,4,5,6,11,12,14,16,20,21,23,27,28,31,35,36,37,43,48,49,51,52,53,55,56,57,58,59,60,61,63,66,68,69,71,72,73,74,78,80,83,84,88,92,96,97,98,100,101,102,103,104,107,109,110,113,114,116,117,118,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,143,144,145,146,147,148,150,151,152,153,154],supporttest:11,suppos:[13,51,69,74,75,83,88,92,113,125,129],suppress:[15,20,46,58,75,129],sure:[2,3,5,11,13,15,17,28,43,46,49,52,54,56,60,61,63,64,65,67,68,69,70,97,99,100,102,105,109,113,115,118,121,123,125,126,137,138,139,140,141,142,143,144,148,152,153],surfac:[13,57,126],surgic:100,surpris:[75,83,100,145,153],surprisingli:[56,60,137,139,147,149],surround:[3,10,16,59,75,80,98,111,118],survei:[45,102],surviv:[51,137,147],suspect:41,suspend1:46,suspend2:46,suspend:58,suspens:46,suspici:113,svg:[11,127],svn:[11,49,50,56,61,68,97,102,111,120,121,123,130,148],svnrevert:60,svnup:60,svptr:75,svr4:23,swap:[3,5,65,75,82,92],sweep:58,swich:3,swift:75,swiftcc:[6,75],swifterror:[6,75],swiftmodul:18,swiftself:[6,75],switchsect:[13,58],switchtosect:13,swizzl:0,sym:[35,36,53,105,131,132,133,134,135],symaddr:[131,132,133,134,135],symbol1:53,symbol2:53,symbol:[2,6,13,15,19,21,22,23,25,28,33,38,43,48,53,58,60,67,75,76,77,79,88,96,97,100,104,109,112,116,122,124,127,128,129,131,132,133,134,135,138,139,140,141,142,143,144,145,148,150,151,152,153,155],symbollookup:135,symbolnam:0,symbolresolv:[131,132],symbols:91,symbolt:100,symbytes:[88,91],symlink:[11,102],symmetr:44,symmetri:121,symobl:53,symposium:44,symptom:60,symrecordstream:88,symtab:[0,18,100],sync:[3,60,84,102,129],synchon:0,synchron:[0,3,75,78,102],synchronis:126,syncscop:75,synergist:103,synonym:23,synopsi:43,syntact:[16,75,139,149],syntax:[0,12,13,15,21,22,36,43,54,59,60,76,77,80,81,85,100,104,107,109,110,114,121,129,130,136,138,139,140,141,142,143,144,146,148,149,150,151,152],synthes:[52,109,139,149],synthesizedcd:5,synthet:[104,124],sys:[4,60,104,131,132,133,134,135,143,144],sysadmin:102,syscal:13,sysroot:[66,67,68,118],system:[1,2,3,4,5,11,12,13,15,21,22,23,26,36,43,45,49,50,52,54,58,59,62,63,65,66,67,68,70,74,76,77,78,84,92,96,97,99,100,101,102,104,105,109,111,112,114,118,120,125,126,127,130,131,132,133,134,135,136,138,139,140,141,142,143,144,145,146,149,152,153],system_error:143,systemz:[13,60,75,80],sysv:[35,45],t1item:83,t2item:83,tab:[16,28],tabl:[0,2,5,6,10,18,19,23,25,26,31,33,36,38,40,43,46,60,62,69,72,75,77,78,79,83,88,96,98,100,112,114,116,118,120,123,124,128,129,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],tablegen:[11,42,52,60,62,67,68,72,74,104,124,130],tabsiz:28,tackl:[54,139,142,149,152],tag0:75,tag1:75,tag2:75,tag3:75,tag:[6,15,49,50,58,60,75,81,112,114],tag_apple_properti:109,tag_base_typ:109,tag_memb:109,tag_pointer_typ:109,tag_structure_typ:109,tahiti:0,tail:[6,16,46,58,75,83,84,109,116,117,128,145,153],tail_exit:128,tailcal:13,tailcalle:13,tailcallopt:[13,75],tailor:[36,65],take:[0,1,2,3,5,6,9,10,12,13,14,15,16,18,20,21,22,25,30,32,34,36,37,41,43,44,46,49,50,51,52,53,57,58,59,60,61,63,69,71,72,73,75,77,78,79,83,84,98,99,100,102,103,104,105,106,109,110,111,112,114,116,117,122,124,125,126,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155],takecallback:100,takeerror:[100,135],takelast:100,taken:[2,8,13,23,43,51,56,75,80,82,83,98,100,103,105,112,113,118,122,124,145,153],talk:[15,44,52,75,100,106,125,131,136,137,138,139,140,142,145,146,147,148,149,150,152,153],talli:120,tape:60,tar:[50,60,61,67,105],tarbal:[67,68],target:[1,3,4,5,6,10,11,12,15,19,21,27,46,50,51,52,54,56,57,58,60,61,67,68,70,71,72,74,79,81,83,85,109,111,112,114,118,120,121,122,123,125,130,131,132,133,134,135,139,140,141,142,144,149,150,151,152],target_compile_definit:12,target_data:[149,150,151,152],target_link_librari:11,targetasminfo:[58,124],targetcallingconv:124,targetdescript:124,targetfeatur:0,targetframeinfo:124,targetfunc:100,targetgroup:74,targetinfo:[49,124],targetinstrformat:124,targetjitinfo:124,targetlow:[9,52,62,124,127],targetloweringobjectfil:13,targetloweringopt:127,targetmachin:[58,79,84,124,125,131,132,133,134,135,139,140,141,142,143],targetnam:80,targetopt:[13,143],targetpassconfig:62,targetregisterclass:[13,62,124],targetregisterdesc:[13,124],targetregistri:[13,124,143],targetregsterinfo:13,targets_to_build:67,targetselect:[135,139,140,141,142,143,144],targetselectiondag:[13,52,124],targetsubtarget:124,targettripl:143,tarjan:125,task:[15,46,51,52,83,109,112,113],taught:13,tba:0,tba_hi:0,tba_lo:0,tbaa:[56,76,82],tbb:124,tbcc:124,tbd:102,tblgen:[11,13,19,52,67,114,116,118,124],tblgensubtarget:124,tbr_jtr:80,tcb:108,tcp:135,tcpchannel:135,td6584414:102,tdm:64,tdrr:22,tdtag:114,teach:[52,131,136,138,146,148],team:[44,68,101,102,103],tear:51,technic:[12,14,49,77,102,127,130],techniqu:[2,9,13,58,75,83,100,123,124,125,126,136,137,139,140,141,142,146,147,149,150,151,152],technolog:[78,145,153],tediou:129,tee:9,tell:[2,9,11,13,15,17,43,47,49,52,58,60,66,75,78,83,97,100,101,109,116,120,121,137,138,142,144,145,147,148,152,153],temp:70,templat:[2,15,28,43,44,69,83,98,104,113,114,117,118,124,125,129,130,132,135,138],templatearglist:117,templateparam:75,tempor:75,temporari:[13,15,20,54,62,75,76,77,98,100,102,106,120,121,129],temporarili:9,tempt:[15,60,113],ten:[59,92],tend:[15,29,49,55,59,60,74,100,105,109],tension:[142,152],tensorflow:77,tent:75,term:[0,2,3,5,13,14,15,49,51,54,58,62,75,76,80,82,83,98,99,103,109,111,112,113,116,117,121,130,132],termin:[0,6,8,9,13,15,20,23,24,29,30,32,34,36,41,43,51,56,83,84,88,98,100,103,107,109,113,116,121,124,125,140,150],terminatorinst:[8,15,100],terminolog:[0,8,12,130,144],ternari:13,terribl:1,territori:60,terror:1,test1:[110,112,121],test5:16,test:[0,1,2,9,10,13,15,16,19,21,26,32,36,38,39,42,43,44,46,47,51,52,54,57,61,62,63,65,67,69,70,74,83,85,98,100,101,102,104,107,109,112,114,125,129,130,135,139,140,142,143,149,150,152],test_devic:44,test_exec_root:20,test_format:20,test_fuzz:77,test_hd:44,test_host:44,test_source_root:20,test_suite_host_cc:120,testabl:99,testament:[136,146],testcas:[17,49,75,100,138,148],testcase_dir:77,testcaselength:100,testcleanup:75,tester:[19,49,68,120,130],testfnptr:75,testfunc:[139,149],testingconfig:20,testresult:130,testrunn:20,testsuit:[16,20],tex:120,text:[11,13,14,15,16,23,28,31,35,37,49,52,53,57,77,81,83,99,100,106,110,111,117,120,121,124,126,129,136,145,146,153,155],textfileread:15,textual:[13,21,28,49,54,57,75,76,81,82,114,116,118,121,127,139,149],tfe:0,tgid_size_en:0,tgid_x_en:0,tgid_y_en:0,tgid_z_en:0,tgt:42,tgtm:60,than:[0,1,2,3,4,5,6,7,8,9,11,13,15,18,21,23,25,28,36,37,43,44,46,47,49,50,51,52,54,56,57,58,60,62,64,65,66,68,70,71,73,74,75,77,78,81,82,83,88,93,98,100,101,102,103,105,106,108,109,110,111,112,114,116,117,121,124,125,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],thank:[70,107],the_execution_engin:[149,150,151,152],the_fpm:[149,150,151,152],the_funct:[148,149,150,151,152],the_modul:[148,149,150,151,152],thecontext:[138,139,140,141,142,143,144],thecu:144,thedoc:129,thedoclist:129,theexecutionengin:144,thefpm:[139,140,141,142],thefunct:[138,139,140,141,142,143,144],thei:[0,2,3,5,6,9,11,12,13,14,15,16,17,20,22,23,25,29,35,37,41,43,44,46,47,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,68,69,72,73,74,75,76,77,80,81,82,83,98,99,100,101,102,103,105,106,109,111,112,113,114,116,118,120,121,123,124,125,127,128,129,130,131,132,134,137,138,139,140,142,145,147,148,149,150,152,153],theier:98,thejit:[139,140,141,142,144],them:[0,2,3,5,6,9,10,11,12,13,14,15,16,17,20,23,28,33,34,35,36,37,43,44,47,49,50,51,54,56,57,58,59,60,61,62,67,68,69,71,72,74,75,78,80,81,82,83,84,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,120,121,124,125,127,128,129,131,132,133,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153],theme:[115,118,131],themodul:[138,139,140,141,142,143,144],themself:49,themselv:[3,6,13,20,43,49,57,74,75,83,100,102,109,118,127,128,137,147],then_:[150,151,152],then_bb:[150,151,152],then_val:[150,151,152],thenbb:[140,141,142,143,144,150],thenv:[140,141,142,143,144],theoret:[100,113],theori:[62,83,88,112,129,145,153],thereaft:111,therebi:[43,75,111],therefor:[0,3,5,13,43,44,46,47,49,50,51,58,59,75,81,84,85,98,100,103,109,111,125,129],thereof:14,thesi:103,thetargetmachin:143,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,55,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,84,85,88,91,92,93,96,97,98,99,100,101,103,105,106,107,108,109,111,112,113,114,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,145,146,147,148,149,150,151,153],thin:[11,33,100],thing:[2,5,6,9,12,13,14,15,16,20,43,44,47,49,51,57,59,60,61,62,67,68,70,74,75,77,81,82,83,97,98,100,101,102,109,110,113,114,116,120,121,125,127,129,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],think:[2,11,13,15,47,49,52,58,59,69,72,75,76,82,84,99,100,113,131,136,140,143,145,146,150,153],thinlto:8,third:[1,6,13,15,36,43,46,47,49,51,58,59,60,68,75,80,83,85,100,101,109,111,112,120,124,125,128,129,138,145,148,153],thischar:[136,137,138,139,140,141,142,143,144],thorough:15,thoroughli:[140,150],those:[2,3,9,12,13,14,15,16,20,23,25,28,29,36,43,47,49,50,51,57,58,59,60,62,65,67,74,75,76,77,82,83,96,98,100,102,106,107,109,111,112,113,118,121,122,124,125,126,127,129,130,132,142,143,144,152],thost:61,though:[3,7,13,15,43,44,51,52,56,58,59,62,69,75,78,82,83,98,100,102,109,120,121,125,131,137,138,140,142,144,147,148,149,152],thought:[13,75,82,93,112,117,131],thousand:[77,92,98],thread:[2,3,4,6,11,13,18,20,28,37,46,48,50,51,58,76,77,84,102,107,108,112,120,126,127,128],thread_id:128,thread_loc:[13,75,112],thread_siblings_list:4,threadbuff:128,threadgroup_size_in_wav:0,threadid:84,threadidx:84,threadloc:[6,75],threadlocalquarantinesizekb:107,threadsaf:58,threadsanit:75,threat:[14,106],threaten:14,three:[1,6,9,12,13,16,17,37,43,46,51,54,55,59,60,62,75,80,82,83,85,98,100,103,105,112,114,120,121,124,125,126,137,140,147],threshold:[28,75,98,126],thrive:130,throttl:103,through:[0,2,3,6,7,9,11,12,13,21,43,45,49,51,54,55,56,57,58,59,60,62,64,68,69,71,73,75,77,78,79,81,83,85,96,98,99,100,102,103,107,109,111,113,114,123,124,125,126,129,131,132,133,134,136,137,139,140,141,142,143,144,146,147,149,150,151,152],throughout:[0,5,6,12,16,47,49,60,75,79,100,113,128],throughput:56,throwawai:1,throwinfo:51,thrown:[51,55,75],throwntyp:75,thu:[2,3,6,7,9,13,15,43,46,47,49,51,54,56,58,60,62,70,75,77,82,83,88,98,99,100,102,109,112,121,125,137,138,139,140,141,142,143,144,147,148,149,150,151,152],thumb1:[45,75],thumb2:[13,45,71,75],thumb:[3,13,15,49,113,126],thunderbird:49,thunderx2t99model:124,thunderxt8xmodel:124,thunk:[13,36,75,83,98,104,122],thusli:91,tian:103,tick:[23,128],tid:84,tidbit:[2,136,144,146,152,154],tidi:125,tidig_cmp_cnt:0,tie:[46,75],tiebreak:44,tied:[13,26,73,75,80,109,112],tight:[56,78],tighter:46,tightli:[15,75,137,138,139,140,141,142,143,144,147,148,149,150,151,152],tii:13,tile:103,till:[48,64,100],tim:[62,103],timberwolfmc:120,time:[0,1,2,3,4,6,7,8,9,11,12,13,14,16,18,20,21,22,23,26,28,31,32,35,36,37,40,41,43,44,46,49,50,51,52,53,56,58,60,61,62,64,66,67,68,73,74,75,76,77,79,83,84,85,88,93,96,97,98,100,101,102,103,104,105,109,110,111,112,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,136,138,139,140,141,142,146,148,149,150,151,152],timeit:120,timelin:[126,127],timeout:77,timeout_exitcod:77,timepassesisen:43,timer:4,timescal:128,timestamp:[18,93,102,128],tini:[69,83],tip:[9,49,102,114,125,130,136,146],tire:[15,118],tirefactori:15,titl:[49,99],tls:75,tma:0,tma_hi:0,tma_lo:0,tmp1:[15,16],tmp2:[142,152],tmp3:16,tmp6:59,tmp7:[16,59],tmp8:59,tmp9:[16,59],tmp:[11,13,16,40,50,58,59,75,100,101,121,124,139,142,149,152],tmpb:[142,143,144],tmpf:4,tobia:103,toc:13,todai:[3,15,50,57,59,96,102,111,112],todefin:114,todo:[13,52,62,67,98,105,114,115,125],togeth:[0,2,5,7,9,13,15,16,17,20,23,34,35,37,41,43,46,47,49,51,58,74,75,77,83,88,92,98,100,102,109,116,120,121,123,125,136,137,138,140,141,145,146,147,148,150,151,153],toi:[44,127,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],tok:[46,75,144],tok_binari:[141,142,143,144],tok_def:[136,137,138,139,140,141,142,143,144],tok_els:[140,141,142,143,144],tok_eof:[136,137,138,139,140,141,142,143,144],tok_extern:[136,137,138,139,140,141,142,143,144],tok_for:[140,141,142,143,144],tok_identifi:[136,137,138,139,140,141,142,143,144],tok_if:[140,141,142,143,144],tok_in:[140,141,142,143,144],tok_numb:[136,137,138,139,140,141,142,143,144],tok_then:[140,141,142,143,144],tok_unari:[141,142,143,144],tok_var:[142,143,144],tokcodefrag:117,token:[13,46,52,62,81,88,102,112,116,117,129,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],token_prec:[147,148,149,150,151,152],tokidentifi:117,tokinteg:117,tokprec:[137,138,139,140,141,142,143,144],tokstr:117,tokvarnam:117,told:15,toler:[58,68,75,77],tolmach94:58,tolmach:58,tom:[68,129],ton:[82,136,146],tonearest:75,tonga:0,too:[1,9,13,15,43,49,55,60,61,63,65,75,77,82,83,100,103,104,113,116,121,125,128,129,132,137,142,144,145,147,152,153],took:[148,149,150,151,152],tool:[0,1,2,6,11,12,13,15,16,18,20,22,25,26,27,28,29,31,32,36,38,39,43,44,45,47,48,49,53,58,63,66,67,68,70,74,75,76,78,84,85,93,96,97,98,99,101,102,105,109,113,118,120,121,124,125,130,136,138,139,140,146,148,149,150],tool_nam:60,toolchain:[10,11,13,15,61,66,88,93,96,102],toolkit:[44,84,100],toolnam:101,toolset:[11,61,126],toosl:127,top:[2,3,6,11,12,13,15,16,20,22,26,37,49,50,51,57,59,60,62,63,73,74,75,76,82,83,98,99,100,101,102,104,114,120,122,125,127,129,131,132,133,135,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],top_level_dir:60,topic:[15,110,136,145,146,153],toplevel:[147,148,149,150,151,152],toplevelexpr:[137,138,139,140,141,142,143,144,147,148,149,150,151,152],topmost:58,topn:37,topolog:[4,16],torec:100,torerr:100,toreturn:128,torvald:102,torvaldrevnum:102,toshio:13,tot:112,total:[0,3,6,25,75,77,83,88,92,98,100,102,108,109,120,125,127],touch:[4,15,75,98,100,102,106,109,125],tough:[137,147],tour:[137,147],toward:[0,7,11,49,57,75,100,130],towardzero:75,tpi:[36,96],tpoff:112,tr1:100,trac:64,trace:[43,75,76,109,112,125],tracer:128,tracevalu:98,track:[2,9,13,15,17,20,49,50,54,56,58,60,62,70,75,76,77,80,82,83,85,98,100,102,109,111,112,118,125,138,141,142,144,148,151,152],tracker:[14,49,57,99,102],tracksregl:80,trade:[9,82,100,132],tradeoff:[3,58,139,149],tradit:[1,13,35,60,98,100,109,125,131,136,146],tradition:[2,13],traffic:[100,102,142,152],tragic:102,trail:[12,15,16,20,43,47,59,75,100,129],train:[1,37],trait:[15,100,129],tramp1:75,tramp:75,transcendent:44,transcrib:[138,148],transcript:[139,149],transfer:[5,44,46,51,73,75,104,108,139,140,141,142,143,144],transform:[3,9,11,13,15,16,41,52,54,55,56,58,60,72,75,83,85,100,101,103,109,111,112,114,118,122,124,125,130,132,133,134,135,138,139,140,141,142,144,148,149,152],transformftor:132,transformutil:74,transit:[0,13,72,74,82,83,109,125,131,149],translat:[2,3,13,15,24,42,43,47,54,56,57,59,60,62,75,88,98,100,103,109,114,124,129,144,145,153],transmit:75,transpar:[15,43,52,59,78,100],trap:[10,46,56,59],trap_pres:0,travers:[13,20,58,62,69,74,83,98,103,125],trc:13,tre:98,treat:[0,3,5,6,11,13,16,18,31,43,51,57,59,71,72,75,77,78,80,83,111,112,121,124,127,131,138,145,148,153],treatment:[0,58,100,124],tree:[0,1,11,13,15,20,26,36,49,51,54,56,57,58,59,60,61,67,68,69,74,75,76,83,84,100,102,103,104,107,109,120,121,125,127,130,136,138,139,140,141,142,143,144,146,148,149,150,151,152],tri:[9,11,13,36,57,75,77,83,98,110,124,125,136,139,146],triag:13,trick:[49,67,69,75,100,102,114,130,136,142,146,152],tricki:[3,15,44,58,77,125],trickrevnum:102,trig:124,trigger:[2,9,11,15,32,46,58,70,75,77,79,80,100,111,120,121,129,132,133,139],triniti:0,trip:[5,15,75,98,103],tripl:[6,21,22,56,57,67,79,80,109,121,124,135,143,144],triplet:[43,75],trivial:[0,2,3,5,12,13,15,43,52,54,59,62,73,75,98,99,100,102,109,113,124,125,128,136,137,142,145,146,147,152,153],troubl:[43,49,57,60,61],true_branch_weight:8,truedest:75,truli:[100,133],trunc:123,truncat:[75,104,116,124],trunk:[10,13,49,50,60,61,68,77,99,102,109,120,121,130],trust:[15,49,133],truth:[75,82,140,150],tsan:104,tsc701:124,tsc:[127,128],tsc_delta:128,tsflag:124,tslp:103,tsm:88,tstri:80,tsvg:127,ttmp0:0,ttmp1:0,ttmp2:0,ttmp3:0,ttmp:0,tune:[13,43,56,100,109,123,142,152],tupl:[62,75,102],turbo:4,ture:[137,139,147,149],turk:0,turn:[0,3,5,9,11,12,13,14,23,43,52,65,75,78,82,97,98,103,106,109,110,112,115,118,124,131,132,133,137,138,145,147,148,153],tutori:[43,44,69,77,83,130,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],tweak:[43,44,60,69,97,126,139],twice:[1,46,60,61,75,83,100,105,125,139,149],twiddl:[75,139,140,141,142,149,150,151,152],twist:131,two:[0,1,2,3,5,6,7,8,9,10,11,12,15,16,20,22,23,29,31,36,43,44,46,47,49,50,51,53,55,56,57,58,60,61,62,64,69,70,72,73,75,76,77,79,80,82,83,84,85,88,92,98,99,100,101,102,107,109,111,112,113,116,117,118,120,121,122,123,124,125,127,129,130,131,132,133,137,139,140,141,142,145,147,148,149,150,151,152,153],twoaddressinstructionpass:13,twoargfp:116,txt:[11,15,26,40,43,49,60,66,68,74,99,109,110,121,124,125,127,131,132,133,134,135],ty2:75,tying:13,type:[0,2,3,5,6,8,9,10,11,13,17,18,21,23,25,31,32,35,43,44,46,49,51,53,54,57,58,60,61,65,67,68,69,70,71,73,74,76,79,81,82,83,84,93,96,99,101,103,104,107,109,111,112,114,118,120,121,125,126,127,128,130,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155],type_info:51,type_of:[148,149,150,151,152],typebuild:[52,100],typecod:52,typedef:[15,36,100,129,131,132,135],typedescriptor2:51,typeflag:109,typeid1:122,typeid2:122,typeid3:122,typeid:[52,83,122],typeidx:62,typemap:52,typenam:[0,100,132,135],typeprint:52,typesaf:75,typeservers:88,typic:[2,3,11,13,15,16,23,25,28,34,35,44,50,51,55,57,58,59,61,68,69,74,75,76,77,78,79,80,81,85,93,98,99,100,101,109,111,121,124,125,128,145,153],u16:0,u32:[0,13,84],u64:[0,84],u999999:99,ualpha:117,ubsan:[77,104],ubuntu:[60,65,67],ud2:[10,13],ud2a:13,udiv:62,ueq:[75,142,152],uge:75,ugli:[16,54,141,151],uglifi:[139,149],ugt:75,uid:[23,75],uint16:[55,92,111],uint16_t:[72,88,96,109,124,129],uint16x4_t:5,uint32:[55,111],uint32_max:109,uint32_t:[75,88,91,93,109,129,135],uint32x2_t:5,uint64:[55,111],uint64_max:7,uint64_t:[7,71,75,83,96,100,129,135],uint8:[55,111],uint8_t:[77,91,129,135],uint:[21,36],uintptr_t:135,uitofp:[138,140,142,148,150,152],uiuc:49,ule:75,ulimit:77,ulittle32_t:[92,93],ulp:75,ult:[75,140,142,148,149,150,151,152],ultim:[15,20,49,75,82,105,118,139,149],ultrasparc3:124,ultrasparc:[60,124],umbrella_directori:102,unabbrev:6,unabbrevi:6,unabl:[14,56,75,76,85,100,116,147],unabridg:[142,152],unaccept:49,unadorn:75,unaffect:82,unalign:[3,56],unari:[117,136,142,143,144,145,146,152,153],unaryexprast:[141,142,143,144],unattend:9,unavail:[3,124],unawar:[44,75],unbias:7,unbound:[13,75,124],uncach:0,uncategor:43,uncertain:15,unchang:[2,75,100,102,112,134,135],uncheck:100,unclear:[88,93,142,152],unclutt:113,uncomfort:14,uncommit:60,uncommon:[12,51,75],uncompress:[11,60,100],uncondit:[13,28,75,98,112,124,140,150,151,152],uncondition:[2,13,53,64,75,133,144],unconnect:59,uncontroversi:58,unconvent:[145,153],unconvinc:77,uncoop:58,uncov:[11,77],undeclar:[75,138,148],undef:[3,16,46,51,62,73,75,80,82,100,114],undefin:[0,3,5,11,15,16,35,36,46,51,54,56,59,70,78,82,98,100,114,116,118,123,124],undefinedbehaviorsanit:77,undefinit:75,under:[1,4,11,13,15,17,20,43,47,49,51,54,56,60,63,64,68,73,74,75,77,84,99,102,112,118,121,122,124,125,131,132,133,134,135,137,145,147,153,154],underestim:75,underflow:0,undergo:[75,98],underli:[5,11,13,15,43,49,58,62,75,92,100,122,144],underneath:[60,101,121],underscor:[15,80,109],understand:[2,6,13,14,15,20,49,51,52,58,59,74,75,81,83,91,96,98,99,100,102,106,109,110,112,113,115,116,117,118,121,125,127,128,129,133,136,138,142,144,146,152,153],understood:[6,13,15,88,91,153],underwai:104,undesir:75,undetect:77,undisturb:15,undo:5,undocu:[15,88],une:75,unequ:75,unexpect:[10,12,15,49,61,83,100,120,142,152],unexpectedli:121,unflatten:127,unforeseen:62,unfortun:[15,44,66,73,75,83,100,102,125,139,140,145,149,150,153],unfriendli:77,unfus:44,unglamor:49,unhandl:[51,100],unhappi:44,unhid:43,uni:84,unic:43,unif:2,unifi:[6,56,60,75,100,145,153],uniform:[15,85,100],uniformli:15,unimagin:112,unimpl:125,unimport:[105,112],unindex:124,uniniti:[58,59,75,116],uninstru:88,unintend:98,unintent:49,uninterest:[136,146],unintrus:75,union:[2,13,15,75,88,109,142,152],uniprocessor:3,uniqu:[0,6,13,16,18,20,53,64,71,72,74,75,78,83,85,88,93,100,102,109,111,112,118,123,127,138,139,148],unique_ptr:[84,100,131,132,133,134,135,137,138,139,140,141,142,143,144],uniqueid:93,unistd:113,unit:[0,5,10,11,15,17,28,31,43,47,51,54,59,66,75,76,77,85,88,96,98,100,109,114,116,123,124,125,139],unittest:[10,11],univers:[12,15,28,40,47,49,75,100,131,132,133,134,135],unix:[11,16,23,43,54,60,61,75,100,113,121],unknown:[0,13,23,43,50,63,75,88,91,92,96,100,104,129,133,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],unknownptr:75,unknownvalu:75,unless:[0,1,9,11,12,15,16,18,21,28,31,32,34,43,44,46,49,51,56,58,59,68,75,77,82,96,98,100,102,106,110,111,112,120,121,124,125,140,142,150,152],unlik:[3,6,12,13,15,44,49,51,58,60,63,65,69,75,82,98,100,111,112,117,125,133,139,142,149,152],unlink:[60,100],unload:[75,125],unmaintain:[49,118],unmanag:[75,112],unmask:75,unmodifi:112,unnam:[12,15,43,75,80,98,117],unnamed_addr:[6,75],unnecessari:[10,13,56,62,80,98,100,102,124,133],unnecessarili:[2,125],unneed:[142,152],unnorm:75,uno:75,unoffici:[59,60],unop:[141,142,143,144,151,152],unoptim:[21,60],unord:[0,11,15,110,124],unordered_set:100,unpack:[67,130],unpars:[20,137,147],unpatch:[68,126],unpoison:75,unprofit:98,unprotect:10,unqualifi:[13,109],unreach:[32,46,47,51,55,56,58,83,98,139,140,141,142,144,149,150,151,152],unread:[3,15,102],unrecogn:43,unrecogniz:35,unrecurs:[142,143,144,152],unreferenc:[12,75],unregist:125,unrel:[49,68,100,102,109,124],unreli:[2,77],unreloc:112,unresolv:[20,145,153],unrespons:102,unreview:49,unrol:[44,103],unrool:44,unsaf:[3,21,22,75,109,111,145,153],unset:[11,12,117,144],unsett:125,unshadow:[140,141,142,143,144,150,151,152],unsign:[2,6,8,13,15,21,43,47,58,59,62,75,78,80,83,84,100,104,109,114,123,124,127,128,129,138,139,140,141,142,143,144,148],unsimm:13,unsiz:62,unsound:112,unspecifi:[13,62,75,84,112,120,128],unstabl:[10,65,75,105],unstructur:128,unsuit:10,unsupport:[3,13,20,61,105,121,124],unsur:[106,117],untest:105,until:[0,5,6,9,13,15,17,20,35,43,46,49,51,56,60,71,75,77,79,82,98,99,100,102,105,106,114,121,124,125,126,131,132,133,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],untrust:49,untyp:80,unus:[13,15,32,46,74,76,84,85,88,100,107,109,112,128],unused1:88,unused2:88,unused_pad:0,unused_preserv:0,unused_sext:0,unusu:[13,57,58,100,108,145,153],unvectoriz:123,unveil:[136,146],unwelcom:14,unwieldi:126,unwind:[13,38,46,51,53,56,73,75,76,98,124,133],unwis:[23,75],unwound:75,unwrap:[100,131],unzip:[60,105],upcast:69,updat:[0,5,10,13,16,23,43,46,49,51,52,58,60,61,69,75,78,79,83,92,98,99,100,104,106,109,111,112,125,126,133,134,135,137,138,139,140,141,142,143,144,145,149,150,151,152,153],updatepoint:[134,135],upenn:4,upgrad:[26,49,60,102,103,109,123,130],upheld:112,uphold:75,upload:[68,99],upon:[41,49,58,75,79,100,101,109,124],upper16:53,upper:[15,17,75,100,124],upsid:102,upstream:[49,50,56,60,68,102,112],upward:[20,75],urem:[13,52],urgent:49,url:[49,99,102,110],usabl:[13,21,43,100,109,124,127],usag:[0,13,15,17,23,31,36,43,46,47,62,65,74,75,80,83,84,88,98,100,104,112,114,118,121,125,130,136,146],usb:65,use:[0,1,2,3,4,5,6,7,9,11,12,13,16,17,18,19,20,21,22,23,25,26,27,28,36,37,38,40,41,42,43,44,46,47,48,49,50,51,52,53,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,83,84,85,88,99,101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],use_:100,use_back:100,use_begin:[15,100],use_bind:[149,150,151,152],use_camlp4:[147,148,149,150,151,152],use_count:77,use_empti:100,use_end:100,use_iter:100,use_llvm:[148,149,150,151,152],use_llvm_analysi:[148,149,150,151,152],use_llvm_executionengin:[149,150,151,152],use_llvm_scalar_opt:[149,150,151,152],use_llvm_target:[149,150,151,152],use_s:100,use_value_profil:77,used:[0,1,2,3,6,7,8,9,10,12,14,15,16,17,20,21,23,25,27,28,32,34,35,36,37,38,39,40,43,44,46,47,49,50,51,52,53,54,56,57,58,59,60,61,62,63,66,68,69,72,73,74,76,77,78,79,80,82,83,84,85,88,92,93,96,100,101,102,103,104,107,109,110,111,112,113,114,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],usedlib:101,useful:[1,3,6,8,9,11,12,13,15,16,17,20,21,25,26,27,37,41,43,44,46,47,50,51,54,56,58,60,61,62,64,74,75,82,84,85,88,98,99,101,109,110,111,112,114,116,118,120,121,124,125,130,131,132,136,137,138,139,140,141,142,144,146,147,148,149,150,151,152,154],useless:[5,109,140,145,150,153],uselistord:75,uselistorder_bb:75,usenamedoperandt:124,user:[1,2,3,7,9,11,12,13,14,15,17,20,23,25,42,43,45,46,47,49,51,58,60,61,62,64,66,68,75,76,78,81,82,83,96,97,99,102,103,104,107,109,110,112,114,116,118,120,121,123,124,125,128,131,132,136,137,138,139,140,143,144,145,146,147,148,149,150,153,154],user_sgpr:0,user_sgpr_count:0,userdefinederror:100,usernam:[49,60,61,102],userspac:51,uses:[0,1,2,3,6,7,9,11,12,13,14,15,16,17,23,27,40,43,44,46,49,50,51,52,56,57,58,59,60,61,62,63,66,69,72,74,75,77,78,79,80,82,83,84,85,88,93,98,101,102,104,109,112,113,114,116,120,121,122,123,124,125,126,128,129,131,136,137,138,139,141,142,144,145,146,147,148,151,152,153],usescustominsert:118,usesmetadata:58,using:[0,1,2,3,4,5,6,11,12,13,14,16,17,18,20,22,23,25,28,30,31,36,37,43,44,46,47,48,49,50,52,54,55,56,58,59,60,62,64,65,68,69,70,72,73,74,75,76,77,78,80,82,83,84,85,93,98,99,100,102,103,104,106,107,109,111,112,113,115,116,118,120,121,123,124,125,126,127,129,130,131,133,134,135,136,138,139,140,141,142,143,144,146,148,149,150,151,152],usr:[11,43,44,50,60,63,65,67,84],usual:[2,3,6,9,11,13,15,16,25,41,43,44,46,49,50,52,53,58,59,60,63,69,75,76,77,78,80,83,88,99,100,102,108,109,110,116,120,121,124,125,131,132,144,145,153],utf:[60,114],util:[1,2,11,19,22,23,25,35,37,43,49,50,58,61,62,68,74,75,100,102,105,114,118,120,123,124,130,131,133,142,143],uuid:31,uuidcreat:93,uvari:11,uwtabl:[6,75,109,126],v110:88,v128:[75,84],v15:75,v16:84,v16f32:75,v16p0f32:75,v16p1f32:75,v1f64:62,v1size:2,v200:0,v2f64:75,v2i32:75,v2i64:75,v2p1f64:75,v2size:2,v31:75,v32:84,v3i32:62,v4f32:[62,75],v4f64:75,v4i32:75,v4p0f64:75,v4p0f_i32f:75,v4p0p0f64:75,v50:88,v60:[88,104],v62:104,v64:[75,84],v65:104,v70:88,v8deprecatedinst:124,v8f64:75,v8i16:124,v8i32:75,v8p0f32:75,v8p0f64:75,v8p0f_i32f:75,v8p0i32:75,v8p0p0f32:75,v_add_f32:0,v_add_f32_e32:0,v_addc_u32:0,v_bfrev_b32_e32:0,v_cmpx_le_u32:0,v_cvt_f64_i32_e32:0,v_floor_f32_e32:0,v_fract_f32:0,v_max_f16:0,v_max_f16_e32:0,v_min_u32:0,v_mov_b32:0,v_mov_b32_e32:0,v_mul_i32_i24_e32:0,v_mul_i32_i24_e64:0,v_nop:0,v_reg:13,v_sin_f32:0,va_list:75,vacat:106,vadv:120,vae:104,vagu:49,val0:[46,75],val1:[46,75,77],val1l:75,val29:46,val2:[46,75,77],val3:75,val7:75,val:[3,6,15,43,46,71,75,84,100,111,116,124,135,137,138,139,140,141,142,143,144],val_:152,val_success:75,vala:84,valb:84,valc:84,valgrind:[17,20,70,121],valid:[0,7,10,11,13,16,21,22,27,36,43,49,51,54,57,59,60,62,68,75,77,79,83,84,92,98,100,102,109,111,112,117,121,122,125,127,128,130,137,138,139,140,141,142,143,144,147,148,149,150,151,152],valu:[2,3,5,6,8,11,12,13,15,16,17,20,21,22,23,24,25,26,27,28,29,30,32,34,35,36,37,41,42,46,47,48,49,51,52,56,58,60,61,62,66,69,71,72,73,74,76,82,84,88,91,92,93,96,101,103,104,107,108,111,112,114,118,120,121,123,124,125,126,128,130,131,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155],valuabl:[20,49,120],value_1:74,value_2:74,value_align:75,value_desc:43,value_kind:75,value_load:75,value_n:74,value_typ:129,valuecol:72,valuedisallow:43,valueenumer:52,valuekind:[0,15],valuelist:117,valuelistn:117,valueopt:43,valuerequir:43,valuesuffix:117,valuet:100,valuetrack:112,valuetyp:[0,13,52,118,124],vanilla:44,var1:12,var_arg_function_typ:148,var_nam:[12,150,151,152],vararg:[6,12,13,75,100,138,148],varexpr:[142,143,144,152],varexprast:[142,143,144],vari:[3,6,9,13,14,54,60,62,75,77,92,100,113,145,153],variabl:[0,2,3,4,20,23,25,28,32,36,43,47,51,54,56,58,59,60,61,63,70,76,79,80,82,83,84,85,88,91,92,100,104,107,111,112,116,117,120,121,122,124,125,126,127,129,131,136,137,138,139,140,141,143,145,146,147,148,149,150,151,153,154],variable_nam:11,variable_op:116,variableexprast:[137,138,139,140,141,142,143,144],variad:[15,100],variant:[3,16,43,51,62,74,75,98,100,104,111,113,121,124,125,146,147,148,149,150,151,152],variat:[2,4,13,20,51,77,110,113,123,124,131],varieti:[2,3,6,12,13,23,45,49,51,58,60,65,74,76,77,100,104,109,111,117,138,139,140,141,145,148,149,150,151,153],variou:[2,3,6,9,11,13,15,17,20,33,36,41,45,47,51,56,57,60,62,72,74,75,78,79,80,82,84,88,96,99,100,102,104,107,109,114,118,120,121,124,125,126,127,129,136,137,139,140,144,146,147,149,150],varnam:[140,141,142,143,144,150,152],vasileio:103,vbr4:6,vbr5:6,vbr6:6,vbr8:6,vbr:[23,25],vc110:93,vc140:93,vc2:93,vc41:[88,93],vc4:93,vc50:93,vc70:93,vc70dep:93,vc80:93,vc98:93,vcall:10,vcc:0,vcc_hi:0,vcc_lo:0,vcs:77,vcsrevis:11,vea6bbv2:49,vec0123:75,vec012:75,vec01:75,vec0:75,vec1:[75,100],vec2:[75,100],vec:[75,100],vec_splat:76,vec_type_hint:0,vector:[0,5,6,13,15,43,56,76,83,84,104,122,124,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,148,152,153],vectorize_width:123,vectortyp:100,vectypehint:0,vega:0,vehicl:[12,15],vehiclemak:15,vehicletyp:15,veli:13,vend:73,vendor:[15,75,143],venu:106,ver60:88,verb:15,verbatim:[40,43,124],verbos:[17,18,20,23,31,34,80,100,124,126,127,129],verd:0,veri:[2,3,4,6,9,12,13,15,16,29,36,43,49,50,51,54,56,57,58,59,60,62,65,68,69,75,77,80,81,82,83,98,100,102,109,112,114,115,116,118,120,121,123,125,126,129,130,132,133,136,137,138,139,140,141,142,145,146,147,148,149,150,151,152,153],verif:[0,43,75,98,122,130],verifi:[1,6,9,10,13,19,25,26,41,49,60,62,68,75,77,93,101,102,109,110,111,112,121,125,127,138,139,140,141,142,143,144,148,150,151,152],verifyfunct:[138,139,140,141,142,143,144],verifypreservedanalysi:127,versa:[3,46,75,92,103,112,121],version:[0,1,2,3,6,11,12,13,16,18,21,22,25,27,28,31,34,38,42,43,44,45,47,49,50,52,55,56,58,60,61,62,63,64,66,67,75,81,82,83,84,88,93,97,99,100,102,103,104,109,111,112,117,120,121,123,124,125,126,127,128,131,138,139,140,142,143,144,145,148,149,150,152,153],version_less:11,versionhead:88,versionsignatur:88,vertex:103,vertic:126,vex:114,vfp3:67,vfp:[5,75],vfprintf:75,vg_leak:20,vgpr0:0,vgpr1:0,vgpr:75,via:[0,3,11,13,36,37,40,41,46,48,49,51,53,55,57,60,62,63,67,75,77,78,79,85,98,100,103,104,111,112,113,114,115,118,121,125,128,131,132,134,135,138,139,144],vice:[3,46,75,92,103,112,121],video:[14,100],view:[3,6,13,14,28,36,77,78,82,102,120,136,140,146,150],view_function_cfg:150,view_function_cfg_onli:150,viewcfg:[100,140],viewcfgonli:[100,140],viewer:[15,126,127],viewgraph:100,viewpoint:14,viewvc:[102,130],vim:[60,110,118],violat:[0,10,14,15,49,58,59,75,100,104,106,140,150],violent:14,viral:49,virt:100,virtreg2indexfunctor:13,virtreg:13,virtregmap:13,virtual:[0,2,10,16,20,27,36,46,58,69,71,75,80,82,98,100,103,114,115,118,120,124,125,137,138,139,140,141,142,143,144,148,152],virtualindex:75,vis:124,visibil:131,visibl:[0,3,6,13,15,23,43,76,78,84,100,109,112,125,131],visit:[9,52,58,100,132],visitbasicblock:100,visitfab:52,visitfunct:127,visitgcroot:58,visiticmpinst:9,visitinstruct:127,visitor:[9,52,58,114,136,138,146],visitsrl:52,visitxor:9,visual:[1,13,15,16,51,53,60,75,77,98,100,109,124,126,127,130,140,150],visualis:127,vk_argument:15,vk_basicblock:15,vla:53,vliw:[42,114],vma:127,vmcnt:0,vmcore:43,vmov:16,vocabulari:75,voidtyp:100,volatil:[0,2,3,13,54,58,82,98,124],volcan:0,volum:[100,130],volumin:100,volunt:[64,68,77,102,105],voluntari:102,vop1:0,vop2:0,vop3:0,vop_dpp:0,vop_sdwa:0,vopc:0,vpbasicblock:103,vpblock:103,vpblockbas:103,vpclmulqdq:104,vpinstruct:103,vprecip:103,vprecipebas:103,vpregionblock:103,vpsubusw:121,vptr:[75,100],vptransformst:103,vpuser:103,vpvalu:103,vreg:[13,62],vset_lan:5,vsetq_lane_s32:5,vsplth:76,vsx:75,vtabl:[15,16,122],vulner:107,w30:[75,80],w31:75,w64:11,w7100:0,w8100:0,w9100:0,wai:[0,1,2,3,6,9,12,13,15,16,17,23,31,36,37,40,43,46,47,48,49,50,51,54,55,56,57,58,60,61,62,66,67,68,69,70,71,73,74,75,77,80,82,83,84,85,98,99,101,102,103,105,107,109,111,112,114,116,118,120,121,122,123,124,125,126,127,129,131,132,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],wait:[0,15,64,105,113,132,137,139,147],waitcnt:0,wake:102,walk:[62,76,82,83,98,100,125,129],walkarch:100,wall:[20,125,145,153],walltimemark:128,want:[2,4,6,11,13,14,15,16,28,43,44,49,50,52,54,57,59,60,61,62,64,66,67,68,69,70,72,73,75,77,82,84,97,98,99,100,101,107,109,110,112,113,115,116,118,120,121,124,125,126,127,129,130,132,136,137,138,139,140,142,143,144,145,146,147,148,149,150,152,153],wari:56,warn:[0,11,16,23,44,49,60,61,62,75,98,112,114,118,120,144],warpsiz:84,warrant:[52,88],warranti:[49,125],wasincrementallylink:88,wasn:[2,83,141,142,143,144,151,152],wast:[79,100,109,110,111,142,152],watch:[0,15,49],waterfal:64,wave:0,wave_rol:0,wave_ror:0,wave_shl:0,wave_shr:0,wavefront:0,wavefront_s:0,wavefront_sgpr_count:0,wavefronts:0,waypoint:9,wchar_t:75,wcover:15,weak:[3,6,35,56,75,78,83,100,142,152],weak_odr:[6,75],weakanylinkag:100,weaker:75,weakest:[3,13],weakodrlinkag:100,weakvh:100,web:[49,104],webhook:102,webkit:[75,111],webkit_jscc:[6,75],websit:[12,70,102],week:[49,106],weight:[75,80,130],weird:13,welcom:[14,45,49,60,61,66,77,83,125,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],well:[2,3,6,9,12,13,14,15,17,28,36,41,43,48,49,52,54,55,56,60,62,63,68,74,77,78,80,83,84,88,91,96,98,99,100,102,106,109,112,116,118,120,121,123,125,126,127,130,136,137,138,139,141,142,143,144,146,147,148,149,151,152],weng:44,wennborg:68,went:[139,140,150],were:[3,5,13,15,16,20,26,28,31,41,43,44,46,47,49,50,51,56,60,61,62,68,70,73,75,77,82,83,88,98,100,102,104,106,109,112,118,123,127,131,132,145,153],weren:[49,62],werror:63,wget:60,wglobal:15,what:[0,2,3,5,6,7,11,13,15,16,19,21,23,28,34,36,41,43,44,46,49,51,52,60,61,62,63,64,67,68,70,74,75,76,80,82,84,88,92,96,98,99,100,101,103,105,109,110,112,113,114,115,116,117,118,120,124,126,128,129,130,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],whatev:[2,11,16,43,44,46,51,59,60,67,75,82,98,100,113,126,129,131],whatsoev:75,when:[0,1,2,3,5,6,11,12,13,14,16,17,18,20,23,27,28,31,35,36,37,38,41,43,44,46,47,48,49,50,51,52,53,57,58,59,60,61,62,64,65,66,67,68,69,70,74,75,78,79,80,82,83,84,85,92,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],whenev:[1,2,12,15,16,17,43,48,72,74,75,82,100,111,121,132,136,144],where:[0,3,5,6,7,8,9,10,11,13,14,15,16,20,23,28,31,36,37,41,42,43,44,46,47,49,51,52,55,56,57,58,59,60,61,62,63,67,68,69,70,71,74,75,77,79,80,82,83,84,85,88,96,98,99,100,101,102,103,104,105,106,107,109,112,117,118,120,121,124,125,126,127,129,131,132,133,136,138,139,140,142,143,144,146,147,148,149,150,152],wherea:[5,13,46,51,56,62,75,82,100,103],wherebi:[92,102],wherev:[44,100,144],whether:[0,2,6,7,9,10,11,13,15,21,22,23,41,44,46,51,52,58,59,60,62,66,69,70,74,75,77,78,83,85,92,98,99,100,101,102,103,106,107,111,112,114,116,122,124,126,128,137,139,140,141,142,143,144,145,147,150,151,152,153],which:[0,3,4,5,6,8,9,11,12,13,14,15,16,17,20,21,22,23,25,26,27,28,29,35,36,37,41,43,44,46,47,48,49,51,52,53,54,56,57,58,60,61,62,63,64,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,88,91,92,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153],whichev:[99,109],whip:[141,151],whirlwind:[137,147],white:45,whitelist:[28,64,102,112],whitelist_fun:28,whitepap:126,whitespac:[15,16,49,60,117,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],whizbang:15,who:[11,12,15,47,49,50,60,70,74,75,83,97,99,102,106,113,121,124,130,131,142,145,152,153],whoa:[139,149],whole:[1,13,15,23,49,51,52,56,58,62,67,68,71,74,75,77,80,83,98,100,107,120,121,122,125,131,132,137,139,140,147,149,150],whom:[83,96],whose:[0,2,6,9,13,15,20,31,35,36,47,49,75,100,103,109,116,117,124,128,137,141,142,147,151,152],whould:106,why:[0,2,8,14,15,44,49,57,63,69,75,82,93,99,100,109,110,112,114,115,125,129,132,136,137,138,140,146,147,150],wide:[0,2,3,6,12,13,14,58,59,60,65,75,84,96,100,103,104,109,116,117,139,140,145,149,150,153],wideaddr:75,widen:[13,62,75,103,123,125],widenscalar:62,wider:[0,3,52,59,62],widest:49,width:[3,5,44,58,88,100,123,145,153],wiki:[11,60,67,77,107],wikipedia:[74,75,140,150],wild:[43,141,151],wildcard:28,wili:59,willing:[49,145,153],win32:[13,60,61,93,113,121],win:[2,15,100],windbg:109,window:[11,13,15,36,43,44,46,60,61,64,73,75,93,96,100,104,109,113,121,125,130,138,139,140,141,150],wineh:46,winzip:61,wip:0,wire:54,wireshark:77,wise:76,wish:[11,20,43,44,52,56,59,60,66,70,75,83,96,99,100,106,112,116,124],wit:[0,106],with_assert:11,within:[0,2,5,6,9,12,13,14,15,16,20,31,41,44,46,51,58,59,60,62,69,75,76,83,84,85,88,92,96,98,100,101,102,103,106,107,109,111,112,116,120,122,125,128,129,131,136,139,140,141,142,143,144,149,150,151,152],without:[3,5,6,7,9,11,12,13,15,16,17,22,23,27,28,37,43,44,47,48,49,51,56,58,59,60,62,63,66,71,75,76,77,78,81,82,83,85,88,96,97,98,99,100,101,106,109,110,111,112,113,114,118,120,121,123,124,125,136,137,139,140,141,142,143,144,146,147,149,150,151,152],woff2:77,wojciech:98,won:[2,13,15,44,49,59,62,66,67,71,75,102,105,109,120,121,131,138,139,144,149],wonder:[15,49,54,59,69,139,149],word32:0,word64:0,word:[0,7,13,14,15,43,51,54,58,69,75,77,82,100,106,109,124,128,131,138,148],word_0:0,word_1:0,word_m:0,wordsiz:58,work:[1,2,3,7,9,12,13,14,15,16,17,20,21,22,25,26,28,36,37,43,44,45,46,47,49,51,52,54,57,58,61,63,64,66,67,68,69,70,73,74,75,76,77,78,79,80,82,93,98,99,100,101,102,104,106,108,113,114,118,120,121,122,124,125,127,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],work_group_size_hint:0,workabl:100,worker:77,workflow:[1,99,126],workgroup:0,workgroup_s:0,workgroups:0,workgroupsizehint:0,workitem_vgpr_count:0,worklist:[83,98,100],world:[12,14,47,58,60,61,75,99,109,110,136,145,146,153],worri:[43,60,75,99,137,144,147],wors:[5,13,15,75],worst:[62,100,108,112,145,153],worth:[9,15,56,62,65,69,82,100,126],worthless:15,worthwhil:100,would:[1,2,3,5,6,7,10,11,12,13,15,16,21,25,36,43,44,46,47,49,50,51,54,55,56,57,58,59,60,61,62,63,64,69,70,74,75,76,77,80,82,85,88,92,96,98,99,100,101,102,104,106,109,110,111,112,113,114,117,118,121,123,125,126,127,128,129,131,133,137,138,139,140,144,145,147,148,149,150,151,153],wouldn:[15,102,142,144,152],wrap:[6,12,15,43,49,56,59,60,62,73,75,79,100,109,113,129,131,136,137,138,146,147,148],wrapcolumn:129,wrapper:[44,79,83,85,98,100,113,124,132],wrinkl:[73,132],writabl:[50,53,88,109,132],write:[0,3,16,23,24,25,26,28,30,32,34,36,40,41,42,44,49,50,56,60,61,62,66,73,75,77,80,83,84,88,92,93,98,100,103,109,110,111,112,113,116,118,126,127,129,130,136,139,140,143,144,145,146,149,150,153,154],write_escap:125,writealia:83,writeattribut:114,writeonli:[0,6,75],writer:[3,6,13,29,42,52,54,58,75,83,124,125,130],writethunk:83,writethunkoralia:83,writetypet:52,writev:124,written:[1,2,12,13,15,25,26,28,30,32,37,49,50,53,55,70,74,75,77,83,84,88,92,93,98,100,109,112,113,114,116,121,123,124,128,129,136,140,141,144,145,146,150,151,153],writter:43,wrong:[2,4,14,15,44,54,70,104,113,139,144],wrote:[52,59,75,143,144],wswitch:15,www:[4,11,68,102],wzr:75,x00:155,x01:155,x03:155,x04:155,x08:155,x0abar:77,x0c:155,x11:100,x15:53,x16:53,x24:155,x30:75,x32:16,x44:155,x64:[16,60,61,64],x83:155,x86:[1,3,10,11,16,21,22,46,51,52,56,60,62,65,74,75,76,80,88,108,112,114,116,118,121,122,123,124,127,129,143],x86_64:[13,16,40,50,56,57,65,66,75,80,104,105,107,109,111,112,121,126,129,143],x86_fastcal:13,x86_fastcallcc:6,x86_fp80:[6,75,83],x86_mmx:6,x86_ssecal:124,x86_stdcall:13,x86_stdcallcc:6,x86_thiscal:13,x86call:116,x86callingconv:124,x86codeemitt:124,x86dagtodagisel:127,x86framelow:13,x86genregisterinfo:[13,124],x86ii:124,x86inst:118,x86instrinfo:124,x86instrmmx:124,x86instrss:124,x86iseldagtodag:127,x86isellow:127,x86registerinfo:[13,124],x86reloc:124,x86retflag:116,x86subtarget:127,x86targetasminfo:124,x86targetlow:127,x86targetmachin:[13,127],x87:[62,75,104],x8b:155,xab:77,xadd:3,xarch:60,xc3:155,xc4:155,xc7:155,xchg:[3,75],xcode:[11,48,60],xcodebuild:11,xcore:[13,60,75],xctoolchain:11,xdata:88,xdemangl:28,xderef:0,xdref:0,xe8:155,xec:155,xemac:60,xf7:77,xf8:77,xfail:[20,120,121],xinmin:103,xlc:60,xmax:[141,151],xme:36,xmi:36,xmin:[141,151],xml:6,xmm0:[16,111,116,118,121],xmm10:118,xmm11:118,xmm12:118,xmm13:118,xmm14:118,xmm15:118,xmm1:[116,118],xmm2:[75,116,118],xmm3:[75,116,118],xmm4:[116,118],xmm5:[116,118],xmm6:[116,118],xmm7:[116,118],xmm8:118,xmm9:118,xmm:[16,75,124],xmo:45,xnack:0,xnor:124,xnorrr:124,xop:104,xor16rr:13,xor32rr:[13,80],xor64rr:13,xor8rr:13,xor:[13,46,84,98,100,123,124],xorri:124,xorrr:124,xpass:20,xrai:130,xray_always_instru:[126,127],xray_fdr_log:126,xray_instr_map:[126,127],xray_interfac:126,xray_log_fin:126,xray_log_flush:126,xray_log_interfac:126,xray_logfile_bas:126,xray_mod:[126,127],xray_naive_log:126,xray_never_instru:126,xray_opt:[126,127],xrayentrytyp:126,xraylogimpl:126,xs1:45,xstep:[141,151],xtemp:3,xterm:15,xue:103,xuetian:44,xvf:61,xvjf:60,xword:124,xxx:[15,16,120,124],xxxasmprint:124,xxxbegin:100,xxxbranchselector:124,xxxcallingconv:124,xxxcodeemitt:124,xxxend:100,xxxgenasmwrit:124,xxxgencallingconv:124,xxxgencodeemitt:124,xxxgendagisel:124,xxxgeninstrinfo:124,xxxgenregisterinfo:124,xxxinstrdescriptor:124,xxxinstrformat:124,xxxinstrinfo:[72,124],xxxiseldagtodag:124,xxxisellow:124,xxxiter:100,xxxjitinfo:124,xxxkind:69,xxxregisterinfo:124,xxxreloc:124,xxxschedul:124,xxxsubtarget:124,xxxtargetasminfo:124,xxxtargetlow:124,xxxtargetmachin:124,xxxtrait:129,xxxxxx:126,xyz:[21,22,72],xyzzi:15,xzr:75,yaml:[0,18,36,80,126,127,130,155],yaxxz:51,year:[15,118],yes:[61,83,108,110,135],yet:[3,13,15,27,37,43,51,58,64,73,74,75,79,80,83,98,100,104,112,120,124,125,126,132,133,134,135,138,140,141,149,150,151],yield:[6,43,46,59,75,98,100,112,120,127,132],yin:129,ymax:[141,151],ymin:[141,151],ymm0:111,ymm:75,ymmv:15,you:[1,2,3,4,6,9,11,12,13,14,15,16,17,19,20,22,23,28,30,31,36,40,41,43,44,47,48,49,50,52,54,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,75,77,80,82,83,84,85,92,96,97,98,99,100,101,102,104,105,107,109,112,113,114,115,116,117,118,120,121,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],young:100,your:[1,2,3,4,9,13,14,15,16,23,28,36,43,44,47,49,50,52,54,56,57,58,59,60,61,63,65,66,67,68,70,75,76,77,82,84,92,97,99,101,102,105,106,107,110,112,118,119,120,121,124,127,129,130,131,136,138,139,140,141,142,143,144,145,146,149,150,151,152,153],yourregex:16,yourself:[11,49,52,60,75,99,100,116],yout:129,yoyodyn:49,ystep:[141,151],ysvn:68,yypvr:110,z8ifx:49,zak:103,zchf:67,zero:[0,5,6,13,15,16,17,20,21,22,24,25,26,27,28,29,30,32,34,35,41,42,43,44,47,56,58,59,75,76,77,79,80,84,88,98,100,103,104,107,109,111,112,116,121,122,123,124,128,137,140,145,147,150,151,152,153],zeroargfp:116,zerocont:107,zerodirect:124,zeroext:[6,75],zeroiniti:75,zeroormor:43,zext:71,zhou:103,zip:60,zlib1g:[67,121],zlib:[11,60,121],zone:75,zorg:64,zork:116},titles:["User Guide for AMDGPU Backend","Advanced Build Configurations","LLVM Alias Analysis Infrastructure","LLVM Atomic Instructions and Concurrency Guide","Benchmarking tips","Using ARM NEON instructions in big endian mode","LLVM Bitcode File Format","LLVM Block Frequency Terminology","LLVM Branch Weight Metadata","LLVM bugpoint tool: design and usage","Control Flow Verification Tool Design Document","Building LLVM with CMake","CMake Primer","The LLVM Target-Independent Code Generator","LLVM Community Code of Conduct","LLVM Coding Standards","FileCheck - Flexible pattern matching file verifier","bugpoint - automatic test case reduction tool","dsymutil - manipulate archived DWARF debug symbol files","LLVM Command Guide","lit - LLVM Integrated Tester","llc - LLVM static compiler","lli - directly execute programs from LLVM bitcode","llvm-ar - LLVM archiver","llvm-as - LLVM assembler","llvm-bcanalyzer - LLVM bitcode analyzer","llvm-build - LLVM Project Build Utility","llvm-config - Print LLVM compilation options","llvm-cov - emit coverage information","llvm-diff - LLVM structural ‘diff’","llvm-dis - LLVM disassembler","llvm-dwarfdump - dump and verify DWARF debug information","llvm-extract - extract a function from an LLVM module","llvm-lib - LLVM lib.exe compatible library tool","llvm-link - LLVM bitcode linker","llvm-nm - list LLVM bitcode and object file’s symbol table","llvm-pdbutil - PDB File forensics and diagnostics","llvm-profdata - Profile data tool","llvm-readobj - LLVM Object Reader","llvm-stress - generate random .ll files","llvm-symbolizer - convert addresses into source code locations","opt - LLVM optimizer","tblgen - Target Description To C++ Code Generator","CommandLine 2.0 Library Manual","Compiling CUDA with clang","Architecture & Platform Information for Compiler Writers","Coroutines in LLVM","LLVM Code Coverage Mapping Format","Debugging JIT-ed Code With GDB","LLVM Developer Policy","A guide to Dockerfiles for building LLVM","Exception Handling in LLVM","Extending LLVM: Adding instructions, intrinsics, types, etc.","LLVM Extensions","Frequently Asked Questions (FAQ)","FaultMaps and implicit checks","Performance Tips for Frontend Authors","Fuzzing LLVM libraries and tools","Garbage Collection with LLVM","The Often Misunderstood GEP Instruction","Getting Started with the LLVM System","Getting Started with the LLVM System using Microsoft Visual Studio","Global Instruction Selection","The LLVM gold plugin","How To Add Your Build Configuration To LLVM Buildbot Infrastructure","How To Build On ARM","How to Cross Compile Compiler-rt Builtins For Arm","How To Cross-Compile Clang/LLVM using Clang/LLVM","How To Release LLVM To The Public","How to set up LLVM-style RTTI for your class hierarchy","How to submit an LLVM bug report","How To Use Attributes","How To Use Instruction Mappings","Design and Usage of the InAlloca Attribute","LLVMBuild Guide","LLVM Language Reference Manual","The LLVM Lexicon","libFuzzer \u2013 a library for coverage-guided fuzz testing.","LLVM Link Time Optimization: Design and Implementation","MCJIT Design and Implementation","Machine IR (MIR) Format Reference Manual","LLVM’s Optional Rich Disassembly Output","MemorySSA","MergeFunctions pass, how it works","User Guide for NVPTX Back-end","Using -opt-bisect-limit to debug optimization errors","CodeView Symbol Records","CodeView Type Records","The PDB DBI (Debug Info) Stream","The PDB Global Symbol Stream","The TPI & IPI Hash Streams","The Module Information Stream","The MSF File Format","The PDB Info Stream (aka the PDB Stream)","The PDB Public Symbol Stream","The PDB TPI Stream","The PDB File Format","Advice on Packaging LLVM","LLVM’s Analysis and Transform Passes","Code Reviews with Phabricator","LLVM Programmer’s Manual","Creating an LLVM Project","Moving LLVM Projects to GitHub","Vectorization Plan","LLVM 6.0.0 Release Notes","How To Validate a New Release","Reporting Guide","Scudo Hardened Allocator","Segmented Stacks in LLVM","Source Level Debugging with LLVM","Sphinx Quickstart Template","Stack maps and patch points in LLVM","Garbage Collection Safepoints in LLVM","System Library","TableGen BackEnds","TableGen Deficiencies","TableGen Language Introduction","TableGen Language Reference","TableGen","TableGen Fundamentals","LLVM test-suite Guide","LLVM Testing Infrastructure Guide","Type Metadata","Auto-Vectorization in LLVM","Writing an LLVM Backend","Writing an LLVM Pass","XRay Instrumentation","Debugging with XRay","XRay Flight Data Recorder Trace Format","YAML I/O","Overview","1. Building a JIT: Starting out with KaleidoscopeJIT","2. Building a JIT: Adding Optimizations – An introduction to ORC Layers","3. Building a JIT: Per-function Lazy Compilation","4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs","5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance","1. Kaleidoscope: Tutorial Introduction and the Lexer","2. Kaleidoscope: Implementing a Parser and AST","3. Kaleidoscope: Code generation to LLVM IR","4. Kaleidoscope: Adding JIT and Optimizer Support","5. Kaleidoscope: Extending the Language: Control Flow","6. Kaleidoscope: Extending the Language: User-defined Operators","7. Kaleidoscope: Extending the Language: Mutable Variables","8. Kaleidoscope: Compiling to Object Code","9. Kaleidoscope: Adding Debug Information","10. Kaleidoscope: Conclusion and other useful LLVM tidbits","1. Kaleidoscope: Tutorial Introduction and the Lexer","2. Kaleidoscope: Implementing a Parser and AST","3. Kaleidoscope: Code generation to LLVM IR","4. Kaleidoscope: Adding JIT and Optimizer Support","5. Kaleidoscope: Extending the Language: Control Flow","6. Kaleidoscope: Extending the Language: User-defined Operators","7. Kaleidoscope: Extending the Language: Mutable Variables","8. Kaleidoscope: Conclusion and other useful LLVM tidbits","LLVM Tutorial: Table of Contents","yaml2obj"],titleterms:{"abstract":[6,56,58,75,103,113,137,147],"boolean":43,"break":[98,100],"byte":36,"case":[17,49],"catch":51,"class":[2,13,15,43,44,69,72,75,100,116,117,124,125],"const":83,"default":[15,129],"export":28,"final":[46,68,79],"float":[0,22,53,66,75],"function":[8,12,13,15,32,43,46,47,52,54,75,80,83,84,98,100,109,113,123,125,126,128,133,138,144,148],"import":[62,100],"new":[2,49,51,52,62,98,100,105,109,121,125,142,152],"null":[58,59],"public":[15,44,68,94,100],"return":[15,100],"static":[15,21,98],"switch":[8,15,75],"throw":[51,113],"try":51,"var":75,"void":[75,83],"while":100,Adding:[43,52,56,85,100,132,139,144,149],For:[56,60,62,66,122],GCs:58,IDs:6,JFS:104,NOT:[16,98],Not:[15,102],One:102,That:83,The:[2,13,15,16,43,55,56,58,59,60,63,68,69,75,76,77,82,84,88,89,90,91,92,93,94,95,96,100,102,103,116,118,123,124,125,127,136,137,146,147],Then:[140,150],USE:98,Use:[15,56,71,72,75,82,100,113],Used:98,Useful:12,Using:[2,5,13,44,54,58,60,61,67,85,100,104,125,126,134],With:48,__atomic_:3,__device__:44,__host__:44,__nvvm_reflect:84,__sync_:3,_global__i_a:54,aapc:5,aarch64:[45,66,104],abandon:99,abbrevi:6,abi:[0,13,45,51,100],abl:83,about:[54,77,102],absolut:43,absolute_symbol:75,acceler:109,access:[13,49,75,83,102],accur:75,achiev:100,acquir:3,acquirereleas:3,activ:112,adc:[2,98],add:[59,64,75],addescapingus:2,adding:43,addit:[0,20,104],addpreserv:125,addr:109,addrequir:125,addrequiredtransit:125,address:[0,13,40,59,75,79,84,122],addressofreturnaddress:75,addrspacecast:75,adjust:[75,142,152],administr:68,adt:100,advanc:[1,47,77,100,154],advic:[9,97],advisori:106,afl:77,after:[15,78,102,106],aggreg:[56,62,75,98],aggress:98,ahead:144,aid:100,aka:93,algorithm:[13,44,100],alia:[2,13,43,59,75,98,123],alias:[13,43,56,75,83],aliasanalysi:2,aliassettrack:2,align:[5,6,56,92],all:[54,98,102,143],alloc:[13,46,100,107,108],alloca:[56,75,108],allow:43,along:83,also:[15,17,18,20,21,22,23,24,25,30,31,32,35],altern:[43,78],alwai:[59,98],always_inlin:98,amd_kernel_code_t:0,amdgpu:[0,13,45],amdgpu_hsa_kernel:0,amdhsa:0,analysi:[2,13,59,98,117,123,125,126],analysisusag:125,analyz:25,anchor:15,ani:77,annot:[75,81],announc:68,anonym:[15,98],anoth:100,api:[13,49,54,62,81,100,102,131],appeal:106,appl:1,applic:126,approach:78,aql:0,arcanist:99,arch:0,architectur:[0,45,111,112],archiv:[18,23,60],area:[46,75,112],argpromot:[2,98],argument:[0,12,43,46,75,98,100,116],arithmet:[13,59,75],arm64:53,arm:[5,45,53,65,66,67,104],armneon:114,armneonsema:114,armneontest:114,armv6:66,armv7:66,arrai:[47,53,59,75,100],arrayref:100,ashr:75,ask:54,asm:[13,51,75],asmmatch:114,asmwrit:114,assembl:[0,5,13,24,53,57,58,75,124],assert:15,assici:83,assign:[98,142,152],associ:75,assum:75,ast:[134,137,140,147,150],atom:[3,75,98],atomicrmw:75,attent:46,attrbuild:71,attrdoc:114,attribut:[0,43,44,49,71,73,75,80,98,109,126,127],attributelist:71,audienc:124,author:56,auto:[15,123],automat:[9,17,75],autotool:63,avail:[2,57,58],avoid:[15,46,56],awar:69,back:[54,84,114],backend:[0,13,59,114,116,118,124],background:[10,48,51,69,109],backward:49,bank:62,barrier0:84,barrier:[58,75,84],base:[13,15,44,54,59,69,98,100,104,112],basic:[6,11,19,37,50,56,69,75,80,83,98,100,118,124,125,131,136,137,146,147],basicaa:[2,98],basicblock:[83,100],basicblockpass:125,basiccg:98,bcanalyz:25,befor:[15,102],begin:46,begincatch:51,behavior:2,behaviour:53,behind:109,benchmark:4,berkelei:13,best:56,between:[44,59,78,100,125],bewar:15,bia:7,big:5,binari:[54,68,75,137,141,147,151],bisect:[85,102],bit:[6,43,75,100],bitcast:75,bitcod:[6,22,25,34,35,54,78],bitconvert:5,bitrevers:75,bitstream:6,bitvalu:129,bitvector:100,bitwis:75,block:[6,7,15,75,80,92,98,100,129],blockinfo:6,bodi:[98,117],bootstrap:1,both:60,bound:59,boundari:92,bpf_ab:13,bpf_ind:13,brace:15,branch:[7,8,68,98,102,124],branch_weight:75,branchinst:8,breakpoint:125,bswap:75,bug:[29,35,57,69,70,105,112],bugpoint:[9,17,98],build:[1,11,26,50,54,57,63,64,65,66,67,68,74,77,82,100,101,102,125,127,131,132,133,134,135,154],buildbot:64,builder:64,buildmast:64,built:[8,12,13,58,129],builtin:[43,66],bundl:[13,75],c99:53,cach:11,call:[2,13,15,54,73,75,98,100,123,124],callabl:100,callargu:128,callback:134,calle:[73,75],callgraph:[98,125],callgraphsccpass:125,callingconv:114,callinst:8,calllow:62,callsit:[51,98,100],caml:154,can:[54,56,59],candid:68,canonic:[75,98],cantfail:100,cast:[59,100],catchpad:75,catchret:75,catchswitch:75,categori:43,ceil:75,cfg:[8,98],cfiindex:80,chain:[2,60,61,100],chang:[49,99,100,102,104,109,138,148],chapter:[131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],charact:[6,16],check:[16,55,75,98,100,123],checkout:[60,102],choos:[50,143],chunk:107,clang:[1,44,57,60,65,67,68,114],clangattrclass:114,clangattrdump:114,clangattrimpl:114,clangattrlist:114,clangattrparsedattrimpl:114,clangattrparsedattrkind:114,clangattrparsedattrlist:114,clangattrparserstringswitch:114,clangattrpchread:114,clangattrpchwrit:114,clangattrspel:114,clangattrspellinglistindex:114,clangattrtemplateinstanti:114,clangattrvisitor:114,clangcommentcommandinfo:114,clangcommentcommandlist:114,clangcommenthtmlnamedcharacterrefer:114,clangcommenthtmltag:114,clangcommenthtmltagsproperti:114,clangcommentnod:114,clangdeclnod:114,clangdiaggroup:114,clangdiagsdef:114,clangdiagsindexnam:114,clangsacheck:114,clangstmtnod:114,classof:69,cleanup:[51,73],cleanuppad:75,cleanupret:75,clear_cach:75,client:2,clobber:[13,75,82],clone:102,close:[98,138,148],cmake:[11,12,67,120],cmath:44,cmp:77,cmpconstant:83,cmpgep:83,cmpoper:83,cmptype:83,cmpvalu:83,cmpxchg:75,code:[0,9,13,14,15,22,40,42,44,47,48,49,51,54,58,60,70,75,77,79,80,98,99,100,101,106,109,113,116,124,125,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],codeemitt:114,codegen:3,codegenprepar:98,codeview:[75,86,87,91,96,109],coff:[53,155],collect:[43,45,58,75,112,145,153],collector:[58,75],combin:[13,98],comdat:75,command:[12,19,28,37,43,99,123],commandlin:43,comment:[15,116],commit:[49,99,102],committe:106,common:[60,61,84,100],commun:[14,68,78,130],compar:[59,83],comparison:83,compat:[33,49,77],compil:[11,15,21,27,44,45,54,60,66,67,70,75,97,104,133,134,139,143,144,149],complain:84,complex:[1,44,75,100],complexpattern:62,compon:[13,27,74,103],comprehens:104,comput:[58,59,84],compute_pgm_rsrc1:0,compute_pgm_rsrc2:0,concaten:100,concept:[47,118,125],concern:102,conclus:[137,145,147,153],concret:69,concurr:[3,75],condit:98,conduct:[14,106],config:27,configur:[1,20,21,57,60,64,67,120,143],consid:56,consider:[5,73,100],consist:[15,113],constant:[53,62,75,80,98,100,109,139,149],constants_block:6,constmerg:98,constprop:98,constrain:[75,121],constraint:[0,75],construct:[13,54,98],constructor:[15,100],consum:[100,109],consumeaft:43,contain:[36,77,96,100],content:[6,69,102,109,154],context:129,contextu:81,continu:[15,57],contract:69,contribut:88,control:[10,12,43,44,127,140,150],convent:[0,13,54,73,75,84,124],convers:[75,84,123,124],convert:[40,75],copi:[15,73],copyright:49,copysign:75,copyvalu:2,core:[62,100],coreclr:58,coro:46,corocleanup:46,coroearli:46,coroelid:46,corosplit:46,coroutin:46,corpu:77,cos:75,cost:51,could:83,count:[2,8,75,98,123],counter:[47,100],cov:28,cover:15,coverag:[28,47,77],crash:[9,70],creat:[68,100,101,125],creation:79,crit:98,criteria:68,critic:98,cross:[11,60,66,67],ctag:114,ctlz:75,ctpop:75,cttz:75,cuda:44,current:102,custom:[43,46,58,59,62,100,120,124,129],customeventmark:128,customreadbarri:58,customroot:58,customwritebarri:58,dag:[7,13,16],dagisel:114,data:[6,13,37,47,75,84,98,100,113,126,128,129],datalayout:13,dbg:[98,109],dbi:[36,88],dce:98,dead:98,deadargelim:98,deadarghax0r:98,deadtypeelim:98,dealloc:46,debug:[2,18,19,31,48,85,88,98,100,109,121,127,144],debug_typ:100,debugg:[9,75,98,109],debuginfo:98,debugtrap:75,declar:[98,109,117],decod:98,deconstruct:13,deduc:98,deduct:15,deep:110,deeper:69,def:[100,117],defici:[115,118],defin:[15,20,124,141,142,151,152],define_abbrev:6,definit:[15,25,76,103,111,116],defm:117,delai:107,delet:[98,100],deletevalu:2,demangl:57,demo:[54,68],demot:98,denorm:0,densemap:100,denseset:100,deoptim:75,depend:[2,53,80,97,98],deprec:120,dequ:100,dereferenc:[12,59],deriv:[52,100,112],describ:56,descript:[9,13,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,78],descriptor:0,design:[9,10,13,59,73,78,79,82,100,103,107,130],destroi:46,detail:[15,25,81,108,109,123],detect:[44,98],determin:[1,15,43],develop:[11,19,49,60,77,102,123,130],devic:44,dfapacket:114,diagnost:[36,123],dialect:44,dibasictyp:75,dicompileunit:75,dicompositetyp:75,dictionari:77,did:54,diderivedtyp:75,die:98,dienumer:75,diexpress:75,diff:29,differ:[2,44,59,120],difil:75,diglobalvari:75,diimportedent:75,dilexicalblock:75,dilexicalblockfil:75,diloc:75,dilocalvari:75,dimacro:75,dimacrofil:75,dinamespac:75,diobjcproperti:75,direct:[0,13,16,53,75,111,123],directli:[2,22],directori:[60,92],dis:30,disabl:75,disassembl:[13,30,57,81,114],discoveri:20,dispatch:0,dissect:[47,84],distanc:[59,135],distinct:46,distribut:[68,75],disubprogram:75,disubrang:75,disubroutinetyp:75,ditemplatetypeparamet:75,ditemplatevalueparamet:75,dll:75,doc:45,docker:50,dockerfil:50,document:[0,10,15,45,56,68,83,129,130],doe:[54,59,77,125],doesn:77,doesnotaccessmemori:2,dofin:125,doiniti:125,dom:98,domfronti:98,domin:98,domtre:98,don:[15,54,59,113],done:46,donoth:75,dot:98,downstream:102,doxygen:15,driven:2,driver:[137,138,147,148],dse:[2,98],dsymutil:18,due:15,dump:[31,36],duplic:[98,113],dure:123,dwarf:[0,18,31,109,144],dwarfdump:[31,57],dyn_cast:100,dynam:[13,43,75,125],e_flag:0,each:98,earli:15,ebpf:13,edg:98,ef_amdgpu_mach:0,effect:[56,59],effici:[2,73],element:[59,75],elf:[0,53],elimin:98,elis:73,els:[12,15,140,150],elseif:12,email:102,embed:[11,80],emiss:[13,53,144],emit:[13,28,58,143],emitt:124,enabl:75,encod:[6,13,47],end:[15,21,46,54,59,70,75,84,100,109,114],end_block:6,endcatch:51,endian:5,endl:15,endofbuff:128,engin:79,enhanc:112,enough:9,enter_subblock:6,entiti:116,entri:[8,98,111],enumer:[0,15],environ:[0,125],epilog:13,equival:75,erlang:58,error:[15,85,100,113,129],error_cod:100,erroror:100,etc:[52,100],eval:[2,98],evalu:[2,15,98],everi:15,evolut:98,exactli:77,exampl:[0,5,20,27,37,40,46,48,58,60,61,63,72,75,77,78,85,100,110,118,125],except:[15,51,73,75,98],exceptionpoint:51,exe:33,execut:[0,11,20,22,84,93,100,121],exhaust:98,exist:[2,125,142,152],exit:[15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,38,39,40,41,42,98],exitonerror:100,exp2:75,exp:75,expand:124,expect:[8,75],experi:102,experiment:[75,111,112],exploit:43,explor:127,expos:113,express:[16,47,51,75,98,116,137,138,140,147,148,150],extend:[13,52,140,141,142,150,151,152],extens:[43,53,109,125,140,150],extern:[43,80,98,104,120,154],externalfnconst:98,extra:[59,121],extract:[32,98],extractel:75,extractvalu:75,extrahelp:43,extrem:134,fab:75,fadd:75,fallibl:100,faq:[54,77],fast:75,fastisel:[62,114],fault:55,faultmap:55,fcmp:75,fdiv:75,featur:[0,13,15,58,77,97,121,123],fenc:75,fidel:127,field:83,file:[6,13,15,16,18,20,23,35,36,39,43,47,60,78,80,88,92,96,98,106,109,116,121],filecheck:16,filenam:75,filter:[13,36,51],find:[56,57,98,100],findregress:105,fine:100,finer:85,first:[59,75],fix:[6,13,83,100,109],flag:[43,44,75,80,97,123],flame:127,flat:0,flexibl:16,flight:[126,128],floor:75,flow:[10,12,129,140,150],fma:75,fmax:75,fmin:75,fmul:75,fmuladd:75,fold:[13,124,139,149],foldingset:100,follow:[59,83],forbidden:15,foreach:117,forens:36,form:[13,98],format:[6,13,15,20,23,43,47,51,57,74,80,92,96,100,109,111,112,128],formatv:100,formed:75,fp16:75,fpext:75,fpmath:75,fptosi:75,fptoui:75,fptrunc:75,fragil:121,frame:[13,46,51,145,153],frameaddress:75,free:46,freeform:43,freelist:107,frem:75,frequenc:7,frequent:[11,54],friendli:77,from:[7,13,22,32,43,44,59,60,67,75,98,100,134],front:[54,59,70,109],frontend:56,frontier:98,fsub:75,full:[75,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],fulli:15,funclet:[51,75],function_block:6,function_entry_count:75,function_ref:100,functionattr:98,functioncompar:83,functionpass:125,fundament:[52,119],further:[101,127],futur:[13,62,125,126],fuzz:[57,77,104],fuzzer:[57,77],gain:83,garbag:[58,75,112,145,153],gather:[75,123],gcmetadataprint:58,gcov:28,gcread:[58,75],gcroot:75,gcwrite:[58,75],gdb:[48,125],gen:84,gener:[4,9,13,20,22,23,39,42,51,53,54,57,58,62,70,75,79,80,98,100,116,120,127,128,138,140,148,150],gep:[56,59],get:[7,60,61,75,77,85,127],getanalysi:125,getanalysisifavail:125,getanalysisusag:125,getelementptr:[54,75],getmodrefinfo:2,getposit:43,getregisteredopt:43,gfx6:0,gfx9:0,git:[60,99,102],github:102,global:[62,75,80,83,89,98,109,123],global_ctor:[54,75],global_dtor:75,globaldc:98,globalisel:62,globalopt:98,globalsmodref:[2,98],globalvalu:100,globalvari:100,goal:[58,82],gold:63,good:77,got:70,grain:100,grammar:128,granular:85,graph:[98,100,127],group:[43,75,125],guarante:[145,153],guard:75,guid:[0,3,19,43,50,74,77,80,84,98,106,120,121,130],guidelin:[103,110],gvn:[2,98],hack:[67,98],half:75,handl:[12,13,51,75,98,100,129],handler:[0,100],happen:[54,59,106],hard:[142,144,152],harden:107,hardwar:[45,60,61],hasglobalalias:83,hash:[90,109],have:59,hcc:0,header:[0,15,47,88,93,107,109,113,128],heap:[46,58,100],hello:125,help:[43,44,54,100,101],hex:129,hexadecim:53,hexagon:[45,104],hide:43,hierarchi:[69,100],hierchari:100,high:[13,15,47,75,80,103,113],higher:54,hint:[100,123],hopefulli:110,host:[44,54,60],how:[13,54,59,63,64,65,66,67,68,69,70,71,72,77,83,100,105,114],hsa:0,hsa_code_object_isa:0,hsa_code_object_vers:0,hybrid:102,hyphen:43,i32:59,ia64:45,ibm:45,icmp:75,idea:[10,141,151],identifi:[58,75],ifunc:75,ilist:100,ilist_nod:100,ilist_trait:100,illinoi:54,imag:[0,50],immedi:80,immutablemap:100,immutablepass:125,immutableset:100,impl:98,implement:[2,5,7,13,58,75,78,79,83,85,100,108,113,124,125,137,145,147,153,154],implicit:55,implicitnullcheck:55,inalloca:73,includ:[15,54,60,113],inclus:116,incorrect:70,increment:49,indent:15,independ:[13,54,145,153],index:[59,80,85],indexedmap:100,indic:[56,59,80,130],indirect:75,indirectbr:75,indirectbrinst:8,individu:[80,100],induct:[98,123],indvar:98,info:[88,93,98,100,109,116,124],inform:[13,15,28,31,45,49,91,98,100,104,109,121,122,144],infrastructur:[2,20,64,121],init:75,initi:[0,2,13,15,58,77,100],initroot:58,inlin:[13,15,75,98],input:[37,57,75,129],insert:[13,100,112],insertel:75,insertvalu:75,inspect:100,instal:67,instanc:116,instcombin:[54,98],instcount:98,instead:15,instnam:98,instrinfo:114,instrmap:72,instrprof_incr:75,instrprof_increment_step:75,instrprof_value_profil:75,instruct:[0,3,5,8,13,51,52,54,59,62,72,75,77,80,81,98,100,124,127],instructionselect:62,instructionselector:62,instrument:[126,127],integ:[6,59,75],integr:[20,74,75,98],intel:[4,21],intend:73,inteqclass:100,interact:[100,125],interfac:[2,54,99,100,113],interleav:75,intern:[15,43,98],interoper:100,interprocedur:98,interv:[13,98],intervalmap:100,intrins:[0,5,46,51,52,58,75,84,98,109,111,112,114],intrinsicid:80,introduct:[0,1,2,3,4,5,7,8,11,12,13,15,43,44,46,47,49,50,51,52,53,57,58,59,62,63,64,65,66,67,68,70,71,72,73,74,75,77,79,80,81,82,83,84,85,88,91,96,98,100,102,104,105,107,108,109,110,114,115,116,117,118,124,125,126,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152],inttoptr:[59,75],invalid:82,invari:[75,98,128],invok:[44,75,98,100],iostream:[15,54],ipconstprop:98,ipi:90,iplist:100,ipsccp:98,irc:130,irr_loop:75,irtransformlay:132,irtransl:62,isa:100,isel:57,isn:9,isol:[100,135],issu:[2,15,84],itanium:[45,51],item:[0,60],iter:[62,100,123],its:93,jit:[13,48,100,104,124,131,132,133,134,135,139,149,154],jite:135,joinerror:100,jump:[13,80,98],kaleidoscop:[136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],kaleidoscopejit:131,keep:[15,113],kei:129,kernel:[0,84],keyword:15,kick:[141,151],know:83,known:115,label:[15,16,75],lambda:15,lanai:45,landingpad:75,lane:5,languag:[0,15,54,56,75,104,109,116,117,136,140,141,142,145,146,150,151,152,153,154],larg:56,late:13,layer:[13,132],layout:[13,60,75,84,91,96,98,100,101,109,122],lazi:[98,100,133,134,135],lcssa:98,ld1:5,ldc:104,ldr:5,leak:77,leb128:47,legal:[13,56,62,124],legalizerinfo:62,legalizetyp:13,length:53,let:[116,117],level:[5,13,15,43,47,54,62,75,80,98,103,109,113,117],lexer:[136,140,146,150],lexic:117,lexicon:76,lib:[33,60],libcal:[3,98],libdevic:84,liber:15,libfuzz:77,liblto:78,libm:75,libprotobuf:57,librari:[15,33,43,44,57,60,75,77,97,100,101,107,113,126],licens:[49,54,63],licm:[2,98],licm_vers:75,lifetim:[73,75,109],like:[15,54,100],limit:[2,80,85,122],line:[43,99,123],link:[34,60,61,63,78,84],linkag:75,linker:[34,75,78],linkonc:53,lint:98,linux:[4,45],list:[12,15,35,43,45,75,100,104,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,147,148,149,150,151,152],lit:20,littl:15,live:[13,80,102],llc:21,lli:22,llvm:[0,2,3,5,6,7,8,9,11,12,13,14,15,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,46,47,49,50,51,52,53,54,57,58,59,60,61,63,64,65,67,68,69,70,75,76,77,78,81,84,97,98,100,101,102,103,104,108,109,111,112,113,114,120,121,123,124,125,126,127,130,138,139,140,142,145,148,149,150,152,153,154],llvm_shutdown:100,llvmbuild:74,llvmcontext:100,load:[13,56,75,79,125],local:[20,60,75,102,142,152],localescap:75,localrecov:75,locat:[10,40,60,82,144],log10:75,log2:75,log:[75,83],logarithm:83,longjmp:51,look:56,lookup:109,loop:[7,12,15,75,98,116,123,125,140,150],looppass:125,low:[15,62],lower:[58,59,62,75,98],loweratom:98,lowerinvok:98,lowerswitch:98,lppassmanag:125,lsda:51,lshr:75,lto:63,lto_code_gen_t:78,lto_module_t:78,mach:109,machin:[13,53,56,62,80,124,143],machinebasicblock:13,machinefunct:[13,125],machinefunctionpass:125,machineinstr:13,machineinstrbuild:13,machineverifi:62,macro:[12,100,129],magic:6,mai:[2,83],mail:130,main:83,maintain:62,major:[0,49],make:[15,49,54,55,100],makefil:[101,120,121],man:102,manag:102,managedstat:100,manipul:[18,46,75],manual:[43,45,75,80,100],map:[0,13,47,55,58,72,75,88,100,111,112,124,129],mapvector:100,mark:84,marker:75,markup:81,mask:75,mass:7,match:[13,16,93],math:[44,75],matrix:13,maxnum:75,mccontext:13,mcinst:13,mcjit:[48,79],mcsection:13,mcstreamer:13,mcsymbol:[13,80],mechan:15,mem2reg:98,mem:75,member:[59,100,106],membership:122,memcpi:[75,98],memcpyopt:[2,98],memdep:98,memmov:75,memori:[0,2,56,75,98,100,142,152],memorydependenceanalysi:2,memoryssa:82,memset:75,merg:[36,37,68,77,83,98,102],mergefunc:98,mergefunct:83,mergereturn:98,mergetwofunct:83,messag:49,metadata:[0,8,55,75,84,122,128],metadata_attach:6,metadata_block:6,method:[2,15,100,113,125],microscop:15,microsoft:[11,61],middl:54,migrat:102,minim:[50,113],minnum:75,minor:0,mip:[45,104],mir:[62,80],mirror:[60,102],miscellan:[36,43,45,80,101,125],miscompil:[9,70],mismatch:54,misunderstood:59,mix:123,mnemon:13,mod:98,mode:[0,5,13,62,77,126,144],model:[0,44,56,75],modern:60,modif:[8,66],modifi:[23,43,54,75],modul:[12,15,32,36,75,80,88,91,98,100,125,132,143],module_block:6,module_code_alia:6,module_code_asm:6,module_code_datalayout:6,module_code_deplib:6,module_code_funct:6,module_code_gcnam:6,module_code_globalvar:6,module_code_sectionnam:6,module_code_tripl:6,module_code_vers:6,modulepass:125,mono:102,monorepo:[60,102],monoton:3,more:[1,15,77,100,126],most:98,motion:98,motiv:[55,111],move:[102,119],msf:[36,92,96],mubuf:0,mul:75,multi:[1,78,102],multiclass:[116,117],multipl:[46,100,102],multirepo:102,multithread:125,must:[2,43],mutabl:[142,152],mutat:[57,77,142,152],name:[0,13,15,43,75,98,109,124],namespac:15,narr:83,nativ:[6,13],natur:98,nearbyint:75,need:[59,110],neededsafepoint:58,neg:59,neon:5,nest:73,newbuff:128,newcpuid:128,newlin:16,next:[16,127],nightli:105,noalia:75,node:[52,75,98],non:[0,1,15,58,62,75,82,98,104],nondebug:98,normal:[46,129],notat:[60,117],notatom:3,note:[0,10,13,45,65,104],number:[6,43,98,102],numer:44,nvcc:44,nvptx:[13,45,84],nvvm:84,object:[0,6,10,35,38,59,60,75,79,100,101,109,126,143,154],objects:75,obtain:[44,49],ocaml:58,occurr:43,offici:[45,68],offset:[75,122],offsetof:[145,153],often:59,one:[54,59,98],ongo:123,onli:[98,100],onlyreadsmemori:2,opaqu:75,open:[54,104],opencl:0,oper:[0,23,56,75,100,141,142,151,152],operand:[0,75,80,111,112,124],opt:[41,43,57,85,125],optim:[0,3,13,41,44,54,63,70,78,82,85,98,109,132,139,145,149,153],option:[11,16,17,18,20,21,22,23,24,25,26,27,28,30,31,32,34,35,36,37,38,39,40,41,42,43,60,77,81,88,100,107,121],optioncategori:43,optparserdef:114,orc:132,order:[0,3,5,15,56,75,128,129],organ:[74,113,121],other:[2,8,10,12,15,36,43,45,54,56,59,62,66,75,84,100,121,145,153],out:[11,59,131],output:[20,25,43,75,77,81,120,129],outsid:3,over:[15,56,100],overflow:[59,75],overload:44,overrid:2,overridden:83,overview:[2,6,12,15,46,47,50,51,58,60,61,72,74,75,80,84,97,101,105,111,112,120,121,130],own:100,owner:49,packag:97,packedvector:100,packet:13,page:[54,68],parallel:77,parallel_loop_access:75,param:46,paramattr_block:6,paramattr_code_entri:6,paramattr_code_entry_old:6,paramattr_group_block:6,paramattr_grp_code_entri:6,paramet:[75,84],parent:51,parenthes:15,pars:[13,43,137,147],parsecommandlineopt:43,parseenvironmentopt:43,parser:[13,43,137,140,147,150],partial:[98,123],partit:98,pass:[2,11,46,55,56,80,83,85,98,100,112,125,139,149],passmanag:125,patch:[49,60,68,111],patchpoint:111,patent:49,patleaf:62,pattern:16,pcmarker:75,pdb2yaml:36,pdb:[36,88,89,93,94,95,96],pdbutil:36,per:133,perform:[56,123],person:75,pgo:1,phabric:99,phase:[13,78,124],phi:[75,82],philosophi:[9,78,109],physic:13,pick:100,pipelin:62,placement:[82,98,101],placesafepoint:112,plan:[102,103,125],platform:[11,45,54,121,126],plugin:[58,63],point:[0,22,46,53,58,75,111],pointer:[2,15,59,75,100,112,123],pointstoconstantmemori:2,poison:75,polici:49,polymorph:100,pool:80,port:62,portabl:[15,54,113,145,153],posit:43,possibl:[15,43,83],post:[98,102],postdom:98,postdomfronti:98,postdomin:98,postdomtre:98,pow:75,power:62,powerpc:[13,45],powi:75,practic:56,pragma:123,pre:[20,105],preassign:13,precis:[75,82,98],predecessor:100,predic:[15,62,80],preemption:75,prefer:[15,56],prefetch:75,prefix:[16,75],preincrement:15,preliminari:124,prepar:79,prerequisit:[44,66,124],present:83,pretti:36,preview:102,primer:12,primit:[6,116],print:[2,27,98,125],printer:[98,124],privat:15,probabl:7,probe:53,problem:[5,60,61,77,112,115,125,142,144,152],process:[13,68,83,103,105,130,135],processor:0,prof:75,profdata:37,profil:[37,77,98],program:[13,22,101,104,118,130],programm:100,programmat:100,progress:62,project:[11,12,26,60,63,74,101,102,104],prolog:[0,13],prologu:75,promis:46,promot:[98,124],propag:[98,100],properli:15,properti:[0,56,109,145,153],propos:[102,109,130],proto:57,prototyp:98,provid:15,prune:98,pseudo:47,pseudolow:114,ptr:[75,84],ptrtoint:[59,75],ptx:84,ptxa:84,put:143,qemu:66,qualif:68,qualifi:54,qualiti:49,queri:98,question:[14,54],queue:0,quick:[11,43,47,58,121,125],quickli:60,quickstart:[63,110,121],random:[39,57,83,107],rang:[15,47,75,100],rational:[59,75],raw_ostream:15,read:[58,78,83,84,102,124],read_regist:75,readabl:15,readcyclecount:75,reader:38,readobj:38,realli:54,reassoci:98,record:[0,6,36,47,86,87,126,128],recover:100,redistribut:54,reduc:[75,98],reduct:[17,75,98,123],redund:98,ref:98,refer:[43,58,74,75,80,98,100,102,103,117],reflect:84,reg2mem:98,regbankselect:62,region:[47,98,125],regionpass:125,regist:[0,13,54,56,62,80,84,98,124,125],registeranalysisgroup:125,registerbankinfo:62,registerinfo:114,registr:[124,125],registri:125,regress:[68,121],reject:54,rel:75,relat:[103,124],relationship:100,releas:[3,68,104,105],releasememori:125,relev:45,reliabl:13,reloc:[0,53,112],remap:79,remot:135,remov:98,removeus:83,replac:[62,98,100],replacedirectcal:83,replacewithnewvalu:2,report:[28,68,70,105,106],repositori:102,repres:[13,122],represent:[2,46,47,54,75],request:[68,99],requir:[2,13,43,46,58,59,60,61,101,121,125],resolut:78,resourc:[45,62],respons:[2,43,98],rest:[137,147],restrict:[51,56],result:[2,20,112],resum:[46,75,77],ret:75,returnaddress:75,revers:123,review:[49,99],revis:102,rewritestatepointsforgc:112,rgpassmanag:125,rich:81,right:100,rint:75,risc:45,roadmap:103,root:58,rotat:98,round:[0,75],routin:100,rtti:[15,69],rule:[59,62,68,69,75],run:[20,57,67,77,84,118,120,125],runonbasicblock:125,runonfunct:125,runonloop:125,runonmachinefunct:125,runonmodul:[83,125],runonregion:125,runonscc:125,runtim:[51,75,123,126],sadd:75,safe:[58,100],safepoint:112,safeti:[145,153],same:[16,100],sampl:[47,72],sampler:0,save:46,scalar:[98,129],scalarenumerationtrait:129,scalarevolut:98,scale:7,scatter:[75,123],scc:98,sccp:98,scev:[2,98],schedul:[13,124],scope:[0,12,75,109,116],scratch:0,script:[12,105],scudo:107,sdiv:75,sdnode:62,search:83,section:[0,53,55,88,110,111,128],see:[15,17,18,20,21,22,23,24,25,30,31,32,35],segment:[13,108],seh:51,select:[9,13,20,43,62,75],selectiondag:[13,52,62,124],selector:124,self:54,semant:[46,56,75,84,111,112,113],send:60,sentinel:100,sequenc:[0,129],sequenti:100,sequentiallyconsist:3,seri:7,serial:62,server:88,set:[0,2,43,69,98,100,124,125],setjmp:51,setup:[69,138,144,148],setvector:100,setversionprint:43,sext:[56,75],sgpr:0,shadow:58,share:97,shl:75,should:[50,54,83],show:[28,37,54],shufflevector:75,sibl:13,sideeffect:75,sign:[6,99],signal:0,simpl:[75,84,98,100],simplifi:[15,80,98,100],simplifycfg:[54,98],sin:75,singl:[0,75,98,102],sink:98,site:100,sitofp:75,size:[13,46,50,100,108],sizeof:[145,153],sjlj:51,skip:85,slightli:100,slot:98,slp:123,smallbitvector:100,smallptrset:100,smallset:100,smallstr:100,smallvector:100,smax:75,smem:0,smin:75,smrd:0,smul:75,soft:[66,113],softwar:[60,61],solut:[77,83],solver:104,sop1:0,sop2:0,sopc:0,sopp:0,sort:[36,100],sourc:[0,11,15,40,47,54,60,75,101,104,109,144],space:[0,13,15,59,84],sparc:45,spars:98,sparsebitvector:100,sparsemultiset:100,sparseset:100,special:[75,84],specialis:75,specif:[11,13,21,23,53,56,109,113,121,145,153],specifi:[2,43,56,58,75,125],sphinx:110,sqrt:75,sreg:84,srem:75,sroa:98,ssa:[13,54,98],ssa_copi:75,ssub:75,stabl:50,stack:[13,53,58,75,98,108,111,112,127,145,153],stackguard:75,stacklet:108,stackmap:111,stackprotector:75,stackrestor:75,stacksav:75,stage:1,stai:49,standard:[6,15,23,44,46,60,75,100,109,113],start:[11,13,43,47,58,60,61,75,77,85,121,125,131],startup:77,stash:102,stat:100,state:[0,83],stateless:98,statement:8,statepoint:[58,75,112],statist:[100,125],statu:[16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,38,39,40,41,42,99,112],std:[15,44,100],stderr:98,steen:2,step:[0,64,102,124,127],still:56,storag:[43,75,100],store:[13,54,56,75,98],strategi:[58,75],straw:102,stream:[36,88,89,90,91,92,93,94,95,96],strength:98,stress:39,string:[47,75,100],stringerror:100,stringmap:100,stringref:100,stringset:100,strip:98,strtab_block:6,struct:[15,59,75],structur:[29,46,57,75,80,82,83,100,120,121,123],studio:61,stuff:54,style:[2,15,53,69,75,101],sub:[47,75,102],subclass:[100,124],subcommand:36,subdirectori:101,submit:[49,70],subregist:80,subsect:110,substitut:[20,121],substream:[88,91],subsubsect:110,subsystem:130,subtarget:[114,124],subvers:[60,99],successor:[80,100],suit:[11,20,60,105,120,121],summari:[5,25,36,59,60],superblock:92,suppli:77,support:[8,13,15,44,54,62,75,77,111,112,124,139,149],suspend:46,svn:[60,99],switchinst:[8,98],symbol:[0,18,35,36,40,78,80,86,89,91,94,98],sync:0,synopsi:[16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],syntax:[16,46,53,75,84,111,112,116,117,118,137,147,155],system:[0,60,61,75,113,116],systemz:[45,104],tab:15,tabl:[13,35,51,80,102,109,122,130,154],tablegen:[13,114,115,116,117,118,119],tag:[47,68,100,109,129],tail:[13,98],tailcallelim:98,target:[0,13,22,42,49,53,59,62,66,75,77,80,84,98,104,124,143,145,153],targetdata:98,targetframelow:13,targetinstrinfo:[13,124],targetjitinfo:13,targetlow:13,targetmachin:13,targetregisterinfo:[13,124],targetsubtarget:13,task:[68,100],tbaa:75,tblgen:42,tell:59,templat:[75,100,110,116],termin:75,terminolog:[7,60],test:[11,17,20,49,60,66,68,75,77,80,105,120,121,122],tester:20,text:[0,43],than:59,thi:[54,56,59,77,83,102,104,110,142,144,152],thing:[54,56],thought:[138,148],thread:[0,75,98,100],threshold:127,through:15,thumb:69,tidbit:[145,153],time:[15,63,70,78,82,144],timelin:68,tinyptrvector:100,tip:[4,56,145,153],tire:[141,151],togeth:143,toi:77,token:[51,75],tool:[9,10,17,19,33,37,54,57,60,61,100,126,127],toolchain:60,top:[43,117],topic:[11,100,154],tpi:[90,95],trace:[77,126,127,128],tradeoff:82,trampolin:75,transform:[2,46,62,98],transit:[51,75,112],trap:[0,75],travers:100,treat:[15,100],tree:[98,101,137,147],trick:[145,153],trip:123,tripl:[0,13,75,84],trivial:[139,149],trophi:77,trunc:75,tscwrap:128,tune:21,turn:[15,54,100],tutori:[16,84,136,145,146,153,154],twine:100,two:[13,59],type:[12,15,36,47,52,56,59,62,75,87,88,98,100,116,117,122,123,124,129],type_block:6,type_code_arrai:6,type_code_doubl:6,type_code_float:6,type_code_fp128:6,type_code_funct:6,type_code_function_old:6,type_code_half:6,type_code_integ:6,type_code_label:6,type_code_metadata:6,type_code_numentri:6,type_code_opaqu:6,type_code_point:6,type_code_ppc_fp128:6,type_code_struct_anon:6,type_code_struct_nam:6,type_code_vector:6,type_code_void:6,type_code_x86_fp80:6,type_code_x86_mmx:6,typeid:51,uadd:75,udiv:75,uglygep:59,uitofp:75,umax:75,umbrella:102,umin:75,umul:75,unabbrev_record:6,unari:[141,151],undef:54,undefin:[75,84],underli:59,understand:54,unifi:98,uniqu:129,uniquevector:100,unit:[13,144],univers:54,unknown:123,unnecessari:15,unord:[3,75],unpack:60,unpredict:75,unreach:[54,75],unrol:[75,98,123],unspecifi:0,unswitch:98,unus:[98,113],unwindless:98,updat:[2,68,82,102],urem:75,usag:[9,11,37,50,63,73,77,85,107,111,123],use:[15,54,59,77,82,98,100],used:[11,13,75,98],useful:[2,100,145,153],user:[0,21,77,84,98,100,129,130,141,142,151,152],uses:100,using:[9,15,51,57,61,63,66,67,122,132],usub:75,util:[26,57,60,98,112,129],va_arg:75,va_copi:75,va_end:75,va_start:75,valid:[105,129],valu:[0,43,54,59,75,77,80,83,85,98,100,109,116,117,129],value_symtab_block:6,valuemap:100,valuesymbolt:100,variabl:[6,11,12,13,15,16,53,75,98,101,108,109,123,142,144,152],variant:102,variou:98,vbr:6,vector:[59,62,75,98,100,103,123],vendor:0,verif:[10,112],verifi:[16,31,54,98],versa:100,version:[15,48,68,77],vgpr:0,via:[99,120],vice:100,view:[12,98,100],virtual:[13,15,54,62,113,122],visibl:75,visual:[11,61],vla:59,vliw:13,volatil:75,vplan:103,wai:[59,100],walker:82,wallclocktim:128,want:83,warn:[15,52],waymark:100,web:99,websit:68,weight:[7,8,37],well:75,what:[9,54,56,58,59,77,83,102,106,125],when:[9,15,54,56,77],where:54,wherev:15,whether:43,which:[2,50,59],why:[50,54,59,77,83,102,142,144,152],wide:130,width:[6,15,56,75],window:[45,51,53,77],wise:75,without:[54,102],won:110,word:6,work:[0,59,60,62,83,109,112,126],workflow:[102,103],world:125,would:83,wrapper:[6,12],write:[2,13,15,43,54,57,58,59,101,102,114,120,121,124,125],write_regist:75,writer:45,written:54,x86:[13,45,53,104],x86_64:67,x86_mmx:75,x86evex2vex:114,xcore:45,xor:75,xrai:[126,127,128],yaml2obj:155,yaml2pdb:36,yaml:129,you:[106,110],your:[11,64,69,100,125,126],yourself:82,zero:51,zext:[56,75],zig:104}})
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT1.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT1.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT1.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT1.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,608 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>1. Building a JIT: Starting out with KaleidoscopeJIT — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers" href="BuildingAJIT2.html" />
+    <link rel="prev" title="8. Kaleidoscope: Conclusion and other useful LLVM tidbits" href="OCamlLangImpl8.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT2.html" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="OCamlLangImpl8.html" title="8. Kaleidoscope: Conclusion and other useful LLVM tidbits"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="building-a-jit-starting-out-with-kaleidoscopejit">
+<h1>1. Building a JIT: Starting out with KaleidoscopeJIT<a class="headerlink" href="#building-a-jit-starting-out-with-kaleidoscopejit" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-1-introduction" id="id11">Chapter 1 Introduction</a></li>
+<li><a class="reference internal" href="#jit-api-basics" id="id12">JIT API Basics</a></li>
+<li><a class="reference internal" href="#kaleidoscopejit" id="id13">KaleidoscopeJIT</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id14">Full Code Listing</a></li>
+</ul>
+</div>
+<div class="section" id="chapter-1-introduction">
+<h2><a class="toc-backref" href="#id11">1.1. Chapter 1 Introduction</a><a class="headerlink" href="#chapter-1-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 1 of the “Building an ORC-based JIT in LLVM” tutorial. This
+tutorial runs through the implementation of a JIT compiler using LLVM’s
+On-Request-Compilation (ORC) APIs. It begins with a simplified version of the
+KaleidoscopeJIT class used in the
+<a class="reference external" href="LangImpl01.html">Implementing a language with LLVM</a> tutorials and then
+introduces new features like optimization, lazy compilation and remote
+execution.</p>
+<p>The goal of this tutorial is to introduce you to LLVM’s ORC JIT APIs, show how
+these APIs interact with other parts of LLVM, and to teach you how to recombine
+them to build a custom JIT that is suited to your use-case.</p>
+<p>The structure of the tutorial is:</p>
+<ul class="simple">
+<li>Chapter #1: Investigate the simple KaleidoscopeJIT class. This will
+introduce some of the basic concepts of the ORC JIT APIs, including the
+idea of an ORC <em>Layer</em>.</li>
+<li><a class="reference external" href="BuildingAJIT2.html">Chapter #2</a>: Extend the basic KaleidoscopeJIT by adding
+a new layer that will optimize IR and generated code.</li>
+<li><a class="reference external" href="BuildingAJIT3.html">Chapter #3</a>: Further extend the JIT by adding a
+Compile-On-Demand layer to lazily compile IR.</li>
+<li><a class="reference external" href="BuildingAJIT4.html">Chapter #4</a>: Improve the laziness of our JIT by
+replacing the Compile-On-Demand layer with a custom layer that uses the ORC
+Compile Callbacks API directly to defer IR-generation until functions are
+called.</li>
+<li><a class="reference external" href="BuildingAJIT5.html">Chapter #5</a>: Add process isolation by JITing code into
+a remote process with reduced privileges using the JIT Remote APIs.</li>
+</ul>
+<p>To provide input for our JIT we will use the Kaleidoscope REPL from
+<a class="reference external" href="LangImpl07.html">Chapter 7</a> of the “Implementing a language in LLVM tutorial”,
+with one minor modification: We will remove the FunctionPassManager from the
+code for that chapter and replace it with optimization support in our JIT class
+in Chapter #2.</p>
+<p>Finally, a word on API generations: ORC is the 3rd generation of LLVM JIT API.
+It was preceded by MCJIT, and before that by the (now deleted) legacy JIT.
+These tutorials don’t assume any experience with these earlier APIs, but
+readers acquainted with them will see many familiar elements. Where appropriate
+we will make this connection with the earlier APIs explicit to help people who
+are transitioning from them to ORC.</p>
+</div>
+<div class="section" id="jit-api-basics">
+<h2><a class="toc-backref" href="#id12">1.2. JIT API Basics</a><a class="headerlink" href="#jit-api-basics" title="Permalink to this headline">¶</a></h2>
+<p>The purpose of a JIT compiler is to compile code “on-the-fly” as it is needed,
+rather than compiling whole programs to disk ahead of time as a traditional
+compiler does. To support that aim our initial, bare-bones JIT API will be:</p>
+<ol class="arabic simple">
+<li>Handle addModule(Module &M) – Make the given IR module available for
+execution.</li>
+<li>JITSymbol findSymbol(const std::string &Name) – Search for pointers to
+symbols (functions or variables) that have been added to the JIT.</li>
+<li>void removeModule(Handle H) – Remove a module from the JIT, releasing any
+memory that had been used for the compiled code.</li>
+</ol>
+<p>A basic use-case for this API, executing the ‘main’ function from a module,
+will look like:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span> <span class="o">=</span> <span class="n">buildModule</span><span class="p">();</span>
+<span class="n">JIT</span> <span class="n">J</span><span class="p">;</span>
+<span class="n">Handle</span> <span class="n">H</span> <span class="o">=</span> <span class="n">J</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="o">*</span><span class="n">M</span><span class="p">);</span>
+<span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">Main</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span><span class="p">[])</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">(</span><span class="o">*</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span><span class="p">[]))</span><span class="n">J</span><span class="p">.</span><span class="n">getSymbolAddress</span><span class="p">(</span><span class="s">"main"</span><span class="p">);</span>
+<span class="kt">int</span> <span class="n">Result</span> <span class="o">=</span> <span class="n">Main</span><span class="p">();</span>
+<span class="n">J</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The APIs that we build in these tutorials will all be variations on this simple
+theme. Behind the API we will refine the implementation of the JIT to add
+support for optimization and lazy compilation. Eventually we will extend the
+API itself to allow higher-level program representations (e.g. ASTs) to be
+added to the JIT.</p>
+</div>
+<div class="section" id="kaleidoscopejit">
+<h2><a class="toc-backref" href="#id13">1.3. KaleidoscopeJIT</a><a class="headerlink" href="#kaleidoscopejit" title="Permalink to this headline">¶</a></h2>
+<p>In the previous section we described our API, now we examine a simple
+implementation of it: The KaleidoscopeJIT class <a class="footnote-reference" href="#id7" id="id1">[1]</a> that was used in the
+<a class="reference external" href="LangImpl01.html">Implementing a language with LLVM</a> tutorials. We will use
+the REPL code from <a class="reference external" href="LangImpl07.html">Chapter 7</a> of that tutorial to supply the
+input for our JIT: Each time the user enters an expression the REPL will add a
+new IR module containing the code for that expression to the JIT. If the
+expression is a top-level expression like ‘1+1’ or ‘sin(x)’, the REPL will also
+use the findSymbol method of our JIT class find and execute the code for the
+expression, and then use the removeModule method to remove the code again
+(since there’s no way to re-invoke an anonymous expression). In later chapters
+of this tutorial we’ll modify the REPL to enable new interactions with our JIT
+class, but for now we will take this setup for granted and focus our attention on
+the implementation of our JIT itself.</p>
+<p>Our KaleidoscopeJIT class is defined in the KaleidoscopeJIT.h header. After the
+usual include guards and #includes <a class="footnote-reference" href="#id8" id="id4">[2]</a>, we get to the definition of our class:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Our class begins with four members: A TargetMachine, TM, which will be used to
+build our LLVM compiler instance; A DataLayout, DL, which will be used for
+symbol mangling (more on that later), and two ORC <em>layers</em>: an
+RTDyldObjectLinkingLayer and a CompileLayer. We’ll be talking more about layers
+in the next chapter, but for now you can think of them as analogous to LLVM
+Passes: they wrap up useful JIT utilities behind an easy to compose interface.
+The first layer, ObjectLayer, is the foundation of our JIT: it takes in-memory
+object files produced by a compiler and links them on the fly to make them
+executable. This JIT-on-top-of-a-linker design was introduced in MCJIT, however
+the linker was hidden inside the MCJIT class. In ORC we expose the linker so
+that clients can access and configure it directly if they need to. In this
+tutorial our ObjectLayer will just be used to support the next layer in our
+stack: the CompileLayer, which will be responsible for taking LLVM IR, compiling
+it, and passing the resulting in-memory object files down to the object linking
+layer below.</p>
+<p>That’s it for member variables, after that we have a single typedef:
+ModuleHandle. This is the handle type that will be returned from our JIT’s
+addModule method, and can be passed to the removeModule method to remove a
+module. The IRCompileLayer class already provides a convenient handle type
+(IRCompileLayer::ModuleHandleT), so we just alias our ModuleHandle to this.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+    <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+      <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+      <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">))</span> <span class="p">{</span>
+  <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+</pre></div>
+</div>
+<p>Next up we have our class constructor. We begin by initializing TM using the
+EngineBuilder::selectTarget helper method which constructs a TargetMachine for
+the current process. Then we use our newly created TargetMachine to initialize
+DL, our DataLayout. After that we need to initialize our ObjectLayer. The
+ObjectLayer requires a function object that will build a JIT memory manager for
+each module that is added (a JIT memory manager manages memory allocations,
+memory permissions, and registration of exception handlers for JIT’d code). For
+this we use a lambda that returns a SectionMemoryManager, an off-the-shelf
+utility that provides all the basic memory management functionality required for
+this chapter. Next we initialize our CompileLayer. The CompileLayer needs two
+things: (1) A reference to our object layer, and (2) a compiler instance to use
+to perform the actual compilation from IR to object files. We use the
+off-the-shelf SimpleCompiler instance for now. Finally, in the body of the
+constructor, we call the DynamicLibrary::LoadLibraryPermanently method with a
+nullptr argument. Normally the LoadLibraryPermanently method is called with the
+path of a dynamic library to load, but when passed a null pointer it will ‘load’
+the host process itself, making its exported symbols available for execution.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">ModuleHandle</span> <span class="nf">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// Build our symbol resolver:</span>
+  <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+  <span class="c1">//           the same "logical dylib".</span>
+  <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+  <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+      <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">CompileLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+          <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+        <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+      <span class="p">},</span>
+      <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">SymAddr</span> <span class="o">=</span>
+              <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+          <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="n">SymAddr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+      <span class="p">});</span>
+
+  <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+  <span class="c1">// created SectionMemoryManager.</span>
+  <span class="k">return</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                         <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Now we come to the first of our JIT API methods: addModule. This method is
+responsible for adding IR to the JIT and making it available for execution. In
+this initial implementation of our JIT we will make our modules “available for
+execution” by adding them straight to the CompileLayer, which will immediately
+compile them. In later chapters we will teach our JIT to defer compilation
+of individual functions until they’re actually called.</p>
+<p>To add our module to the CompileLayer we need to supply both the module and a
+symbol resolver. The symbol resolver is responsible for supplying the JIT with
+an address for each <em>external symbol</em> in the module we are adding. External
+symbols are any symbol not defined within the module itself, including calls to
+functions outside the JIT and calls to functions defined in other modules that
+have already been added to the JIT. (It may seem as though modules added to the
+JIT should know about one another by default, but since we would still have to
+supply a symbol resolver for references to code outside the JIT it turns out to
+be easier to re-use this one mechanism for all symbol resolution.) This has the
+added benefit that the user has full control over the symbol resolution
+process. Should we search for definitions within the JIT first, then fall back
+on external definitions? Or should we prefer external definitions where
+available and only JIT code if we don’t already have an available
+implementation? By using a single symbol resolution scheme we are free to choose
+whatever makes the most sense for any given use case.</p>
+<p>Building a symbol resolver is made especially easy by the <em>createLambdaResolver</em>
+function. This function takes two lambdas <a class="footnote-reference" href="#id9" id="id5">[3]</a> and returns a JITSymbolResolver
+instance. The first lambda is used as the implementation of the resolver’s
+findSymbolInLogicalDylib method, which searches for symbol definitions that
+should be thought of as being part of the same “logical” dynamic library as this
+Module. If you are familiar with static linking: this means that
+findSymbolInLogicalDylib should expose symbols with common linkage and hidden
+visibility. If all this sounds foreign you can ignore the details and just
+remember that this is the first method that the linker will use to try to find a
+symbol definition. If the findSymbolInLogicalDylib method returns a null result
+then the linker will call the second symbol resolver method, called findSymbol,
+which searches for symbols that should be thought of as external to (but
+visibile from) the module and its logical dylib. In this tutorial we will adopt
+the following simple scheme: All modules added to the JIT will behave as if they
+were linked into a single, ever-growing logical dylib. To implement this our
+first lambda (the one defining findSymbolInLogicalDylib) will just search for
+JIT’d code by calling the CompileLayer’s findSymbol method. If we don’t find a
+symbol in the JIT itself we’ll fall back to our second lambda, which implements
+findSymbol. This will use the RTDyldMemoryManager::getSymbolAddressInProcess
+method to search for the symbol within the program itself. If we can’t find a
+symbol definition via either of these paths, the JIT will refuse to accept our
+module, returning a “symbol not found” error.</p>
+<p>Now that we’ve built our symbol resolver, we’re ready to add our module to the
+JIT. We do this by calling the CompileLayer’s addModule method. The addModule
+method returns an <code class="docutils literal"><span class="pre">Expected<CompileLayer::ModuleHandle></span></code>, since in more
+advanced JIT configurations it could fail. In our basic configuration we know
+that it will always succeed so we use the cantFail utility to assert that no
+error occurred, and extract the handle value. Since we have already typedef’d
+our ModuleHandle type to be the same as the CompileLayer’s handle type, we can
+return the unwrapped handle directly.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">JITSymbol</span> <span class="nf">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+  <span class="n">raw_string_ostream</span> <span class="n">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+  <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">CompileLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="n">JITTargetAddress</span> <span class="nf">getSymbolAddress</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">return</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">).</span><span class="n">getAddress</span><span class="p">());</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">cantFail</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Now that we can add code to our JIT, we need a way to find the symbols we’ve
+added to it. To do that we call the findSymbol method on our CompileLayer, but
+with a twist: We have to <em>mangle</em> the name of the symbol we’re searching for
+first. The ORC JIT components use mangled symbols internally the same way a
+static compiler and linker would, rather than using plain IR symbol names. This
+allows JIT’d code to interoperate easily with precompiled code in the
+application or shared libraries. The kind of mangling will depend on the
+DataLayout, which in turn depends on the target platform. To allow us to remain
+portable and search based on the un-mangled name, we just re-produce this
+mangling ourselves.</p>
+<p>Next we have a convenience function, getSymbolAddress, which returns the address
+of a given symbol. Like CompileLayer’s addModule function, JITSymbol’s getAddress
+function is allowed to fail <a class="footnote-reference" href="#id10" id="id6">[4]</a>, however we know that it will not in our simple
+example, so we wrap it in a call to cantFail.</p>
+<p>We now come to the last method in our JIT API: removeModule. This method is
+responsible for destructing the MemoryManager and SymbolResolver that were
+added with a given module, freeing any resources they were using in the
+process. In our Kaleidoscope demo we rely on this method to remove the module
+representing the most recent top-level expression, preventing it from being
+treated as a duplicate definition when the next top-level expression is
+entered. It is generally good to free any module that you know you won’t need
+to call further, just to free up the resources dedicated to it. However, you
+don’t strictly need to do this: All resources will be cleaned up when your
+JIT class is destructed, if they haven’t been freed before then. Like
+<code class="docutils literal"><span class="pre">CompileLayer::addModule</span></code> and <code class="docutils literal"><span class="pre">JITSymbol::getAddress</span></code>, removeModule may
+fail in general but will never fail in our example, so we wrap it in a call to
+cantFail.</p>
+<p>This brings us to the end of Chapter 1 of Building a JIT. You now have a basic
+but fully functioning JIT stack that you can use to take LLVM IR and make it
+executable within the context of your JIT process. In the next chapter we’ll
+look at how to extend this JIT to produce better quality code, and in the
+process take a deeper look at the ORC layer concept.</p>
+<p><a class="reference external" href="BuildingAJIT2.html">Next: Extending the KaleidoscopeJIT</a></p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id14">1.4. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example. To build this
+example, use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy
+<span class="c1"># Run</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">//===- KaleidoscopeJIT.h - A simple JIT for Kaleidoscope --------*- C++ -*-===//</span>
+<span class="c1">//</span>
+<span class="c1">//                     The LLVM Compiler Infrastructure</span>
+<span class="c1">//</span>
+<span class="c1">// This file is distributed under the University of Illinois Open Source</span>
+<span class="c1">// License. See LICENSE.TXT for details.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">//</span>
+<span class="c1">// Contains a simple JIT definition for use in the kaleidoscope tutorials.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="n">ModuleHandle</span> <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Build our symbol resolver:</span>
+    <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+    <span class="c1">//           the same "logical dylib".</span>
+    <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+    <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">CompileLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">},</span>
+        <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">SymAddr</span> <span class="o">=</span>
+                <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="n">SymAddr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">});</span>
+
+    <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+    <span class="c1">// created SectionMemoryManager.</span>
+    <span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                           <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+    <span class="n">raw_string_ostream</span> <span class="nf">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+    <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">CompileLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">JITTargetAddress</span> <span class="n">getSymbolAddress</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">).</span><span class="n">getAddress</span><span class="p">());</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">cantFail</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end namespace orc</span>
+<span class="p">}</span> <span class="c1">// end namespace llvm</span>
+
+<span class="cp">#endif </span><span class="c1">// LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+</pre></div>
+</div>
+<table class="docutils footnote" frame="void" id="id7" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Actually we use a cut-down version of KaleidoscopeJIT that makes a
+simplifying assumption: symbols cannot be re-defined. This will make it
+impossible to re-define symbols in the REPL, but will make our symbol
+lookup logic simpler. Re-introducing support for symbol redefinition is
+left as an exercise for the reader. (The KaleidoscopeJIT.h used in the
+original tutorials will be a helpful reference).</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id8" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id4">[2]</a></td><td><table border="1" class="first last docutils">
+<colgroup>
+<col width="38%" />
+<col width="62%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">File</th>
+<th class="head">Reason for inclusion</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>STLExtras.h</td>
+<td>LLVM utilities that are useful when working
+with the STL.</td>
+</tr>
+<tr class="row-odd"><td>ExecutionEngine.h</td>
+<td>Access to the EngineBuilder::selectTarget
+method.</td>
+</tr>
+<tr class="row-even"><td>RTDyldMemoryManager.h</td>
+<td>Access to the
+RTDyldMemoryManager::getSymbolAddressInProcess
+method.</td>
+</tr>
+<tr class="row-odd"><td>CompileUtils.h</td>
+<td>Provides the SimpleCompiler class.</td>
+</tr>
+<tr class="row-even"><td>IRCompileLayer.h</td>
+<td>Provides the IRCompileLayer class.</td>
+</tr>
+<tr class="row-odd"><td>LambdaResolver.h</td>
+<td>Access the createLambdaResolver function,
+which provides easy construction of symbol
+resolvers.</td>
+</tr>
+<tr class="row-even"><td>RTDyldObjectLinkingLayer.h</td>
+<td>Provides the RTDyldObjectLinkingLayer class.</td>
+</tr>
+<tr class="row-odd"><td>Mangler.h</td>
+<td>Provides the Mangler class for platform
+specific name-mangling.</td>
+</tr>
+<tr class="row-even"><td>DynamicLibrary.h</td>
+<td>Provides the DynamicLibrary class, which
+makes symbols in the host process searchable.</td>
+</tr>
+<tr class="row-odd"><td>raw_ostream.h</td>
+<td>A fast output stream class. We use the
+raw_string_ostream subclass for symbol
+mangling</td>
+</tr>
+<tr class="row-even"><td>TargetMachine.h</td>
+<td>LLVM target machine description class.</td>
+</tr>
+</tbody>
+</table>
+</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id9" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id5">[3]</a></td><td>Actually they don’t have to be lambdas, any object with a call operator
+will do, including plain old functions or std::functions.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id10" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id6">[4]</a></td><td><code class="docutils literal"><span class="pre">JITSymbol::getAddress</span></code> will force the JIT to compile the definition of
+the symbol if it hasn’t already been compiled, and since the compilation
+process could fail getAddress must be able to return this failure.</td></tr>
+</tbody>
+</table>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT2.html" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="OCamlLangImpl8.html" title="8. Kaleidoscope: Conclusion and other useful LLVM tidbits"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT2.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT2.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT2.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT2.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,556 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>2. Building a JIT: Adding Optimizations – An introduction to ORC Layers — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="3. Building a JIT: Per-function Lazy Compilation" href="BuildingAJIT3.html" />
+    <link rel="prev" title="1. Building a JIT: Starting out with KaleidoscopeJIT" href="BuildingAJIT1.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT3.html" title="3. Building a JIT: Per-function Lazy Compilation"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT1.html" title="1. Building a JIT: Starting out with KaleidoscopeJIT"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="building-a-jit-adding-optimizations-an-introduction-to-orc-layers">
+<h1>2. Building a JIT: Adding Optimizations – An introduction to ORC Layers<a class="headerlink" href="#building-a-jit-adding-optimizations-an-introduction-to-orc-layers" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-2-introduction" id="id4">Chapter 2 Introduction</a></li>
+<li><a class="reference internal" href="#optimizing-modules-using-the-irtransformlayer" id="id5">Optimizing Modules using the IRTransformLayer</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id6">Full Code Listing</a></li>
+</ul>
+</div>
+<p><strong>This tutorial is under active development. It is incomplete and details may
+change frequently.</strong> Nonetheless we invite you to try it out as it stands, and
+we welcome any feedback.</p>
+<div class="section" id="chapter-2-introduction">
+<h2><a class="toc-backref" href="#id4">2.1. Chapter 2 Introduction</a><a class="headerlink" href="#chapter-2-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 2 of the “Building an ORC-based JIT in LLVM” tutorial. In
+<a class="reference external" href="BuildingAJIT1.html">Chapter 1</a> of this series we examined a basic JIT
+class, KaleidoscopeJIT, that could take LLVM IR modules as input and produce
+executable code in memory. KaleidoscopeJIT was able to do this with relatively
+little code by composing two off-the-shelf <em>ORC layers</em>: IRCompileLayer and
+ObjectLinkingLayer, to do much of the heavy lifting.</p>
+<p>In this layer we’ll learn more about the ORC layer concept by using a new layer,
+IRTransformLayer, to add IR optimization support to KaleidoscopeJIT.</p>
+</div>
+<div class="section" id="optimizing-modules-using-the-irtransformlayer">
+<h2><a class="toc-backref" href="#id5">2.2. Optimizing Modules using the IRTransformLayer</a><a class="headerlink" href="#optimizing-modules-using-the-irtransformlayer" title="Permalink to this headline">¶</a></h2>
+<p>In <a class="reference external" href="LangImpl04.html">Chapter 4</a> of the “Implementing a language with LLVM”
+tutorial series the llvm <em>FunctionPassManager</em> is introduced as a means for
+optimizing LLVM IR. Interested readers may read that chapter for details, but
+in short: to optimize a Module we create an llvm::FunctionPassManager
+instance, configure it with a set of optimizations, then run the PassManager on
+a Module to mutate it into a (hopefully) more optimized but semantically
+equivalent form. In the original tutorial series the FunctionPassManager was
+created outside the KaleidoscopeJIT and modules were optimized before being
+added to it. In this Chapter we will make optimization a phase of our JIT
+instead. For now this will provide us a motivation to learn more about ORC
+layers, but in the long term making optimization part of our JIT will yield an
+important benefit: When we begin lazily compiling code (i.e. deferring
+compilation of each function until the first time it’s run), having
+optimization managed by our JIT will allow us to optimize lazily too, rather
+than having to do all our optimization up-front.</p>
+<p>To add optimization support to our JIT we will take the KaleidoscopeJIT from
+Chapter 1 and compose an ORC <em>IRTransformLayer</em> on top. We will look at how the
+IRTransformLayer works in more detail below, but the interface is simple: the
+constructor for this layer takes a reference to the layer below (as all layers
+do) plus an <em>IR optimization function</em> that it will apply to each Module that
+is added via addModule:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span><span class="o"><></span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">)</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+        <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                      <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                      <span class="p">})</span> <span class="p">{</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+</pre></div>
+</div>
+<p>Our extended KaleidoscopeJIT class starts out the same as it did in Chapter 1,
+but after the CompileLayer we introduce a typedef for our optimization function.
+In this case we use a std::function (a handy wrapper for “function-like” things)
+from a single unique_ptr<Module> input to a std::unique_ptr<Module> output. With
+our optimization function typedef in place we can declare our OptimizeLayer,
+which sits on top of our CompileLayer.</p>
+<p>To initialize our OptimizeLayer we pass it a reference to the CompileLayer
+below (standard practice for layers), and we initialize the OptimizeFunction
+using a lambda that calls out to an “optimizeModule” function that we will
+define below.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// ...</span>
+<span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+    <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+      <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+    <span class="p">},</span>
+<span class="c1">// ...</span>
+</pre></div>
+</div>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// ...</span>
+<span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                        <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+<span class="c1">// ...</span>
+</pre></div>
+</div>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// ...</span>
+<span class="k">return</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+<span class="c1">// ...</span>
+</pre></div>
+</div>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// ...</span>
+<span class="n">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+<span class="c1">// ...</span>
+</pre></div>
+</div>
+<p>Next we need to replace references to ‘CompileLayer’ with references to
+OptimizeLayer in our key methods: addModule, findSymbol, and removeModule. In
+addModule we need to be careful to replace both references: the findSymbol call
+inside our resolver, and the call through to addModule.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// Create a function pass manager.</span>
+  <span class="k">auto</span> <span class="n">FPM</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">legacy</span><span class="o">::</span><span class="n">FunctionPassManager</span><span class="o">></span><span class="p">(</span><span class="n">M</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+  <span class="c1">// Add some optimizations.</span>
+  <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createInstructionCombiningPass</span><span class="p">());</span>
+  <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createReassociatePass</span><span class="p">());</span>
+  <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createGVNPass</span><span class="p">());</span>
+  <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createCFGSimplificationPass</span><span class="p">());</span>
+  <span class="n">FPM</span><span class="o">-></span><span class="n">doInitialization</span><span class="p">();</span>
+
+  <span class="c1">// Run the optimizations over all functions in the module being added to</span>
+  <span class="c1">// the JIT.</span>
+  <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">F</span> <span class="p">:</span> <span class="o">*</span><span class="n">M</span><span class="p">)</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">run</span><span class="p">(</span><span class="n">F</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">M</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>At the bottom of our JIT we add a private method to do the actual optimization:
+<em>optimizeModule</em>. This function sets up a FunctionPassManager, adds some passes
+to it, runs it over every function in the module, and then returns the mutated
+module. The specific optimizations are the same ones used in
+<a class="reference external" href="LangImpl04.html">Chapter 4</a> of the “Implementing a language with LLVM”
+tutorial series. Readers may visit that chapter for a more in-depth
+discussion of these, and of IR optimization in general.</p>
+<p>And that’s it in terms of changes to KaleidoscopeJIT: When a module is added via
+addModule the OptimizeLayer will call our optimizeModule function before passing
+the transformed module on to the CompileLayer below. Of course, we could have
+called optimizeModule directly in our addModule function and not gone to the
+bother of using the IRTransformLayer, but doing so gives us another opportunity
+to see how layers compose. It also provides a neat entry point to the <em>layer</em>
+concept itself, because IRTransformLayer turns out to be one of the simplest
+implementations of the layer concept that can be devised:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">template</span> <span class="o"><</span><span class="k">typename</span> <span class="n">BaseLayerT</span><span class="p">,</span> <span class="k">typename</span> <span class="n">TransformFtor</span><span class="o">></span>
+<span class="k">class</span> <span class="nc">IRTransformLayer</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandleT</span> <span class="o">=</span> <span class="k">typename</span> <span class="n">BaseLayerT</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="p">(</span><span class="n">BaseLayerT</span> <span class="o">&</span><span class="n">BaseLayer</span><span class="p">,</span>
+                   <span class="n">TransformFtor</span> <span class="n">Transform</span> <span class="o">=</span> <span class="n">TransformFtor</span><span class="p">())</span>
+    <span class="o">:</span> <span class="n">BaseLayer</span><span class="p">(</span><span class="n">BaseLayer</span><span class="p">),</span> <span class="n">Transform</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Transform</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="n">Expected</span><span class="o"><</span><span class="n">ModuleHandleT</span><span class="o">></span>
+  <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">,</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">JITSymbolResolver</span><span class="o">></span> <span class="n">Resolver</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">BaseLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">Transform</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">)),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">));</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandleT</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span> <span class="n">BaseLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">);</span> <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">ExportedSymbolsOnly</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">BaseLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="n">ExportedSymbolsOnly</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbolIn</span><span class="p">(</span><span class="n">ModuleHandleT</span> <span class="n">H</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">,</span>
+                         <span class="kt">bool</span> <span class="n">ExportedSymbolsOnly</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">BaseLayer</span><span class="p">.</span><span class="n">findSymbolIn</span><span class="p">(</span><span class="n">H</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">ExportedSymbolsOnly</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">emitAndFinalize</span><span class="p">(</span><span class="n">ModuleHandleT</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">BaseLayer</span><span class="p">.</span><span class="n">emitAndFinalize</span><span class="p">(</span><span class="n">H</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TransformFtor</span><span class="o">&</span> <span class="n">getTransform</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">Transform</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="k">const</span> <span class="n">TransformFtor</span><span class="o">&</span> <span class="n">getTransform</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">Transform</span><span class="p">;</span> <span class="p">}</span>
+
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">BaseLayerT</span> <span class="o">&</span><span class="n">BaseLayer</span><span class="p">;</span>
+  <span class="n">TransformFtor</span> <span class="n">Transform</span><span class="p">;</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<p>This is the whole definition of IRTransformLayer, from
+<code class="docutils literal"><span class="pre">llvm/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h</span></code>, stripped of its
+comments. It is a template class with two template arguments: <code class="docutils literal"><span class="pre">BaesLayerT</span></code> and
+<code class="docutils literal"><span class="pre">TransformFtor</span></code> that provide the type of the base layer and the type of the
+“transform functor” (in our case a std::function) respectively. This class is
+concerned with two very simple jobs: (1) Running every IR Module that is added
+with addModule through the transform functor, and (2) conforming to the ORC
+layer interface. The interface consists of one typedef and five methods:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="77%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Interface</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ModuleHandleT</td>
+<td>Provides a handle that can be used to identify a module
+set when calling findSymbolIn, removeModule, or
+emitAndFinalize.</td>
+</tr>
+<tr class="row-odd"><td>addModule</td>
+<td>Takes a given set of Modules and makes them “available
+for execution. This means that symbols in those modules
+should be searchable via findSymbol and findSymbolIn, and
+the address of the symbols should be read/writable (for
+data symbols), or executable (for function symbols) after
+JITSymbol::getAddress() is called. Note: This means that
+addModule doesn’t have to compile (or do any other
+work) up-front. It <em>can</em>, like IRCompileLayer, act
+eagerly, but it can also simply record the module and
+take no further action until somebody calls
+JITSymbol::getAddress(). In IRTransformLayer’s case
+addModule eagerly applies the transform functor to
+each module in the set, then passes the resulting set
+of mutated modules down to the layer below.</td>
+</tr>
+<tr class="row-even"><td>removeModule</td>
+<td>Removes a set of modules from the JIT. Code or data
+defined in these modules will no longer be available, and
+the memory holding the JIT’d definitions will be freed.</td>
+</tr>
+<tr class="row-odd"><td>findSymbol</td>
+<td>Searches for the named symbol in all modules that have
+previously been added via addModule (and not yet
+removed by a call to removeModule). In
+IRTransformLayer we just pass the query on to the layer
+below. In our REPL this is our default way to search for
+function definitions.</td>
+</tr>
+<tr class="row-even"><td>findSymbolIn</td>
+<td>Searches for the named symbol in the module set indicated
+by the given ModuleHandleT. This is just an optimized
+search, better for lookup-speed when you know exactly
+a symbol definition should be found. In IRTransformLayer
+we just pass this query on to the layer below. In our
+REPL we use this method to search for functions
+representing top-level expressions, since we know exactly
+where we’ll find them: in the top-level expression module
+we just added.</td>
+</tr>
+<tr class="row-odd"><td>emitAndFinalize</td>
+<td>Forces all of the actions required to make the code and
+data in a module set (represented by a ModuleHandleT)
+accessible. Behaves as if some symbol in the set had been
+searched for and JITSymbol::getSymbolAddress called. This
+is rarely needed, but can be useful when dealing with
+layers that usually behave lazily if the user wants to
+trigger early compilation (for example, to use idle CPU
+time to eagerly compile code in the background).</td>
+</tr>
+</tbody>
+</table>
+<p>This interface attempts to capture the natural operations of a JIT (with some
+wrinkles like emitAndFinalize for performance), similar to the basic JIT API
+operations we identified in Chapter 1. Conforming to the layer concept allows
+classes to compose neatly by implementing their behaviors in terms of the these
+same operations, carried out on the layer below. For example, an eager layer
+(like IRTransformLayer) can implement addModule by running each module in the
+set through its transform up-front and immediately passing the result to the
+layer below. A lazy layer, by contrast, could implement addModule by
+squirreling away the modules doing no other up-front work, but applying the
+transform (and calling addModule on the layer below) when the client calls
+findSymbol instead. The JIT’d program behavior will be the same either way, but
+these choices will have different performance characteristics: Doing work
+eagerly means the JIT takes longer up-front, but proceeds smoothly once this is
+done. Deferring work allows the JIT to get up-and-running quickly, but will
+force the JIT to pause and wait whenever some code or data is needed that hasn’t
+already been processed.</p>
+<p>Our current REPL is eager: Each function definition is optimized and compiled as
+soon as it’s typed in. If we were to make the transform layer lazy (but not
+change things otherwise) we could defer optimization until the first time we
+reference a function in a top-level expression (see if you can figure out why,
+then check out the answer below <a class="footnote-reference" href="#id3" id="id2">[1]</a>). In the next chapter, however we’ll
+introduce fully lazy compilation, in which function’s aren’t compiled until
+they’re first called at run-time. At this point the trade-offs get much more
+interesting: the lazier we are, the quicker we can start executing the first
+function, but the more often we’ll have to pause to compile newly encountered
+functions. If we only code-gen lazily, but optimize eagerly, we’ll have a slow
+startup (which everything is optimized) but relatively short pauses as each
+function just passes through code-gen. If we both optimize and code-gen lazily
+we can start executing the first function more quickly, but we’ll have longer
+pauses as each function has to be both optimized and code-gen’d when it’s first
+executed. Things become even more interesting if we consider interproceedural
+optimizations like inlining, which must be performed eagerly. These are
+complex trade-offs, and there is no one-size-fits all solution to them, but by
+providing composable layers we leave the decisions to the person implementing
+the JIT, and make it easy for them to experiment with different configurations.</p>
+<p><a class="reference external" href="BuildingAJIT3.html">Next: Adding Per-function Lazy Compilation</a></p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id6">2.3. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example with an
+IRTransformLayer added to enable optimization. To build this example, use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy
+<span class="c1"># Run</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">//===- KaleidoscopeJIT.h - A simple JIT for Kaleidoscope --------*- C++ -*-===//</span>
+<span class="c1">//</span>
+<span class="c1">//                     The LLVM Compiler Infrastructure</span>
+<span class="c1">//</span>
+<span class="c1">// This file is distributed under the University of Illinois Open Source</span>
+<span class="c1">// License. See LICENSE.TXT for details.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">//</span>
+<span class="c1">// Contains a simple JIT definition for use in the kaleidoscope tutorials.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRTransformLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/LegacyPassManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar/GVN.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+        <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                      <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                      <span class="p">})</span> <span class="p">{</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="n">ModuleHandle</span> <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Build our symbol resolver:</span>
+    <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+    <span class="c1">//           the same "logical dylib".</span>
+    <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+    <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">},</span>
+        <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">SymAddr</span> <span class="o">=</span>
+                <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="n">SymAddr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">});</span>
+
+    <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+    <span class="c1">// created SectionMemoryManager.</span>
+    <span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                            <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+    <span class="n">raw_string_ostream</span> <span class="nf">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+    <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+  <span class="p">}</span>
+
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a function pass manager.</span>
+    <span class="k">auto</span> <span class="n">FPM</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">legacy</span><span class="o">::</span><span class="n">FunctionPassManager</span><span class="o">></span><span class="p">(</span><span class="n">M</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+    <span class="c1">// Add some optimizations.</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createInstructionCombiningPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createReassociatePass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createGVNPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createCFGSimplificationPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">doInitialization</span><span class="p">();</span>
+
+    <span class="c1">// Run the optimizations over all functions in the module being added to</span>
+    <span class="c1">// the JIT.</span>
+    <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">F</span> <span class="p">:</span> <span class="o">*</span><span class="n">M</span><span class="p">)</span>
+      <span class="n">FPM</span><span class="o">-></span><span class="n">run</span><span class="p">(</span><span class="n">F</span><span class="p">);</span>
+
+    <span class="k">return</span> <span class="n">M</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end namespace orc</span>
+<span class="p">}</span> <span class="c1">// end namespace llvm</span>
+
+<span class="cp">#endif </span><span class="c1">// LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+</pre></div>
+</div>
+<table class="docutils footnote" frame="void" id="id3" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td>When we add our top-level expression to the JIT, any calls to functions
+that we defined earlier will appear to the RTDyldObjectLinkingLayer as
+external symbols. The RTDyldObjectLinkingLayer will call the SymbolResolver
+that we defined in addModule, which in turn calls findSymbol on the
+OptimizeLayer, at which point even a lazy transform layer will have to
+do its work.</td></tr>
+</tbody>
+</table>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT3.html" title="3. Building a JIT: Per-function Lazy Compilation"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT1.html" title="1. Building a JIT: Starting out with KaleidoscopeJIT"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT3.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT3.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT3.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT3.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,413 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>3. Building a JIT: Per-function Lazy Compilation — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs" href="BuildingAJIT4.html" />
+    <link rel="prev" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers" href="BuildingAJIT2.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT4.html" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT2.html" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="building-a-jit-per-function-lazy-compilation">
+<h1>3. Building a JIT: Per-function Lazy Compilation<a class="headerlink" href="#building-a-jit-per-function-lazy-compilation" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-3-introduction" id="id1">Chapter 3 Introduction</a></li>
+<li><a class="reference internal" href="#lazy-compilation" id="id2">Lazy Compilation</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id3">Full Code Listing</a></li>
+</ul>
+</div>
+<p><strong>This tutorial is under active development. It is incomplete and details may
+change frequently.</strong> Nonetheless we invite you to try it out as it stands, and
+we welcome any feedback.</p>
+<div class="section" id="chapter-3-introduction">
+<h2><a class="toc-backref" href="#id1">3.1. Chapter 3 Introduction</a><a class="headerlink" href="#chapter-3-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 3 of the “Building an ORC-based JIT in LLVM” tutorial. This
+chapter discusses lazy JITing and shows you how to enable it by adding an ORC
+CompileOnDemand layer the JIT from <a class="reference external" href="BuildingAJIT2.html">Chapter 2</a>.</p>
+</div>
+<div class="section" id="lazy-compilation">
+<h2><a class="toc-backref" href="#id2">3.2. Lazy Compilation</a><a class="headerlink" href="#lazy-compilation" title="Permalink to this headline">¶</a></h2>
+<p>When we add a module to the KaleidoscopeJIT class from Chapter 2 it is
+immediately optimized, compiled and linked for us by the IRTransformLayer,
+IRCompileLayer and RTDyldObjectLinkingLayer respectively. This scheme, where all the
+work to make a Module executable is done up front, is simple to understand and
+its performance characteristics are easy to reason about. However, it will lead
+to very high startup times if the amount of code to be compiled is large, and
+may also do a lot of unnecessary compilation if only a few compiled functions
+are ever called at runtime. A truly “just-in-time” compiler should allow us to
+defer the compilation of any given function until the moment that function is
+first called, improving launch times and eliminating redundant work. In fact,
+the ORC APIs provide us with a layer to lazily compile LLVM IR:
+<em>CompileOnDemandLayer</em>.</p>
+<p>The CompileOnDemandLayer class conforms to the layer interface described in
+Chapter 2, but its addModule method behaves quite differently from the layers
+we have seen so far: rather than doing any work up front, it just scans the
+Modules being added and arranges for each function in them to be compiled the
+first time it is called. To do this, the CompileOnDemandLayer creates two small
+utilities for each function that it scans: a <em>stub</em> and a <em>compile
+callback</em>. The stub is a pair of a function pointer (which will be pointed at
+the function’s implementation once the function has been compiled) and an
+indirect jump through the pointer. By fixing the address of the indirect jump
+for the lifetime of the program we can give the function a permanent “effective
+address”, one that can be safely used for indirection and function pointer
+comparison even if the function’s implementation is never compiled, or if it is
+compiled more than once (due to, for example, recompiling the function at a
+higher optimization level) and changes address. The second utility, the compile
+callback, represents a re-entry point from the program into the compiler that
+will trigger compilation and then execution of a function. By initializing the
+function’s stub to point at the function’s compile callback, we enable lazy
+compilation: The first attempted call to the function will follow the function
+pointer and trigger the compile callback instead. The compile callback will
+compile the function, update the function pointer for the stub, then execute
+the function. On all subsequent calls to the function, the function pointer
+will point at the already-compiled function, so there is no further overhead
+from the compiler. We will look at this process in more detail in the next
+chapter of this tutorial, but for now we’ll trust the CompileOnDemandLayer to
+set all the stubs and callbacks up for us. All we need to do is to add the
+CompileOnDemandLayer to the top of our stack and we’ll get the benefits of
+lazy compilation. We just need a few changes to the source:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="p">...</span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="p">...</span>
+
+<span class="p">...</span>
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">JITCompileCallbackManager</span><span class="o">></span> <span class="n">CompileCallbackManager</span><span class="p">;</span>
+  <span class="n">CompileOnDemandLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">></span> <span class="n">CODLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">CODLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>First we need to include the CompileOnDemandLayer.h header, then add two new
+members: a std::unique_ptr<JITCompileCallbackManager> and a CompileOnDemandLayer,
+to our class. The CompileCallbackManager member is used by the CompileOnDemandLayer
+to create the compile callback needed for each function.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+    <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+      <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+      <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+      <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                    <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                      <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                    <span class="p">}),</span>
+      <span class="n">CompileCallbackManager</span><span class="p">(</span>
+          <span class="n">orc</span><span class="o">::</span><span class="n">createLocalCompileCallbackManager</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">(),</span> <span class="mi">0</span><span class="p">)),</span>
+      <span class="n">CODLayer</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">,</span>
+               <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">Function</span> <span class="o">&</span><span class="n">F</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">set</span><span class="o"><</span><span class="n">Function</span><span class="o">*></span><span class="p">({</span><span class="o">&</span><span class="n">F</span><span class="p">});</span> <span class="p">},</span>
+               <span class="o">*</span><span class="n">CompileCallbackManager</span><span class="p">,</span>
+               <span class="n">orc</span><span class="o">::</span><span class="n">createLocalIndirectStubsManagerBuilder</span><span class="p">(</span>
+                 <span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">()))</span> <span class="p">{</span>
+  <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Next we have to update our constructor to initialize the new members. To create
+an appropriate compile callback manager we use the
+createLocalCompileCallbackManager function, which takes a TargetMachine and a
+JITTargetAddress to call if it receives a request to compile an unknown
+function.  In our simple JIT this situation is unlikely to come up, so we’ll
+cheat and just pass ‘0’ here. In a production quality JIT you could give the
+address of a function that throws an exception in order to unwind the JIT’d
+code’s stack.</p>
+<p>Now we can construct our CompileOnDemandLayer. Following the pattern from
+previous layers we start by passing a reference to the next layer down in our
+stack – the OptimizeLayer. Next we need to supply a ‘partitioning function’:
+when a not-yet-compiled function is called, the CompileOnDemandLayer will call
+this function to ask us what we would like to compile. At a minimum we need to
+compile the function being called (given by the argument to the partitioning
+function), but we could also request that the CompileOnDemandLayer compile other
+functions that are unconditionally called (or highly likely to be called) from
+the function being called. For KaleidoscopeJIT we’ll keep it simple and just
+request compilation of the function that was called. Next we pass a reference to
+our CompileCallbackManager. Finally, we need to supply an “indirect stubs
+manager builder”: a utility function that constructs IndirectStubManagers, which
+are in turn used to build the stubs for the functions in each module. The
+CompileOnDemandLayer will call the indirect stub manager builder once for each
+call to addModule, and use the resulting indirect stubs manager to create
+stubs for all functions in all modules in the set. If/when the module set is
+removed from the JIT the indirect stubs manager will be deleted, freeing any
+memory allocated to the stubs. We supply this function by using the
+createLocalIndirectStubsManagerBuilder utility.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// ...</span>
+        <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">CODLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+<span class="c1">// ...</span>
+<span class="k">return</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">CODLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Ms</span><span class="p">),</span>
+                                   <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+<span class="c1">// ...</span>
+
+<span class="c1">// ...</span>
+<span class="k">return</span> <span class="n">CODLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+<span class="c1">// ...</span>
+
+<span class="c1">// ...</span>
+<span class="n">CODLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">);</span>
+<span class="c1">// ...</span>
+</pre></div>
+</div>
+<p>Finally, we need to replace the references to OptimizeLayer in our addModule,
+findSymbol, and removeModule methods. With that, we’re up and running.</p>
+<p><strong>To be done:</strong></p>
+<p>** Chapter conclusion.**</p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id3">3.3. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example with a CompileOnDemand
+layer added to enable lazy function-at-a-time compilation. To build this example, use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy
+<span class="c1"># Run</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">//===- KaleidoscopeJIT.h - A simple JIT for Kaleidoscope --------*- C++ -*-===//</span>
+<span class="c1">//</span>
+<span class="c1">//                     The LLVM Compiler Infrastructure</span>
+<span class="c1">//</span>
+<span class="c1">// This file is distributed under the University of Illinois Open Source</span>
+<span class="c1">// License. See LICENSE.TXT for details.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">//</span>
+<span class="c1">// Contains a simple JIT definition for use in the kaleidoscope tutorials.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RuntimeDyld.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRTransformLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/LegacyPassManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar/GVN.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><set></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">JITCompileCallbackManager</span><span class="o">></span> <span class="n">CompileCallbackManager</span><span class="p">;</span>
+  <span class="n">CompileOnDemandLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">></span> <span class="n">CODLayer</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">CODLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span> <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+        <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                      <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                      <span class="p">}),</span>
+        <span class="n">CompileCallbackManager</span><span class="p">(</span>
+            <span class="n">orc</span><span class="o">::</span><span class="n">createLocalCompileCallbackManager</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">(),</span> <span class="mi">0</span><span class="p">)),</span>
+        <span class="n">CODLayer</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">,</span>
+                 <span class="p">[](</span><span class="n">Function</span> <span class="o">&</span><span class="n">F</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">set</span><span class="o"><</span><span class="n">Function</span><span class="o">*></span><span class="p">({</span><span class="o">&</span><span class="n">F</span><span class="p">});</span> <span class="p">},</span>
+                 <span class="o">*</span><span class="n">CompileCallbackManager</span><span class="p">,</span>
+                 <span class="n">orc</span><span class="o">::</span><span class="n">createLocalIndirectStubsManagerBuilder</span><span class="p">(</span>
+                   <span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">()))</span> <span class="p">{</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="n">ModuleHandle</span> <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Build our symbol resolver:</span>
+    <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+    <span class="c1">//           the same "logical dylib".</span>
+    <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+    <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">CODLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">},</span>
+        <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">SymAddr</span> <span class="o">=</span>
+                <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="n">SymAddr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">});</span>
+
+    <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+    <span class="c1">// created SectionMemoryManager.</span>
+    <span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">CODLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+    <span class="n">raw_string_ostream</span> <span class="nf">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+    <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">CODLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">cantFail</span><span class="p">(</span><span class="n">CODLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+  <span class="p">}</span>
+
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a function pass manager.</span>
+    <span class="k">auto</span> <span class="n">FPM</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">legacy</span><span class="o">::</span><span class="n">FunctionPassManager</span><span class="o">></span><span class="p">(</span><span class="n">M</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+    <span class="c1">// Add some optimizations.</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createInstructionCombiningPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createReassociatePass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createGVNPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createCFGSimplificationPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">doInitialization</span><span class="p">();</span>
+
+    <span class="c1">// Run the optimizations over all functions in the module being added to</span>
+    <span class="c1">// the JIT.</span>
+    <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">F</span> <span class="p">:</span> <span class="o">*</span><span class="n">M</span><span class="p">)</span>
+      <span class="n">FPM</span><span class="o">-></span><span class="n">run</span><span class="p">(</span><span class="n">F</span><span class="p">);</span>
+
+    <span class="k">return</span> <span class="n">M</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end namespace orc</span>
+<span class="p">}</span> <span class="c1">// end namespace llvm</span>
+
+<span class="cp">#endif </span><span class="c1">// LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+</pre></div>
+</div>
+<p><a class="reference external" href="BuildingAJIT4.html">Next: Extreme Laziness – Using Compile Callbacks to JIT directly from ASTs</a></p>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT4.html" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT2.html" title="2. Building a JIT: Adding Optimizations – An introduction to ORC Layers"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT4.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT4.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT4.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT4.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,371 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance" href="BuildingAJIT5.html" />
+    <link rel="prev" title="3. Building a JIT: Per-function Lazy Compilation" href="BuildingAJIT3.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT5.html" title="5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT3.html" title="3. Building a JIT: Per-function Lazy Compilation"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="building-a-jit-extreme-laziness-using-compile-callbacks-to-jit-from-asts">
+<h1>4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs<a class="headerlink" href="#building-a-jit-extreme-laziness-using-compile-callbacks-to-jit-from-asts" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-4-introduction" id="id1">Chapter 4 Introduction</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id2">Full Code Listing</a></li>
+</ul>
+</div>
+<p><strong>This tutorial is under active development. It is incomplete and details may
+change frequently.</strong> Nonetheless we invite you to try it out as it stands, and
+we welcome any feedback.</p>
+<div class="section" id="chapter-4-introduction">
+<h2><a class="toc-backref" href="#id1">4.1. Chapter 4 Introduction</a><a class="headerlink" href="#chapter-4-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 4 of the “Building an ORC-based JIT in LLVM” tutorial. This
+chapter introduces the Compile Callbacks and Indirect Stubs APIs and shows how
+they can be used to replace the CompileOnDemand layer from
+<a class="reference external" href="BuildingAJIT3.html">Chapter 3</a> with a custom lazy-JITing scheme that JITs
+directly from Kaleidoscope ASTs.</p>
+<p><strong>To be done:</strong></p>
+<p><strong>(1) Describe the drawbacks of JITing from IR (have to compile to IR first,
+which reduces the benefits of laziness).</strong></p>
+<p><strong>(2) Describe CompileCallbackManagers and IndirectStubManagers in detail.</strong></p>
+<p><strong>(3) Run through the implementation of addFunctionAST.</strong></p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id2">4.2. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example that JITs lazily from
+Kaleidoscope ASTS. To build this example, use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy
+<span class="c1"># Run</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">//===- KaleidoscopeJIT.h - A simple JIT for Kaleidoscope --------*- C++ -*-===//</span>
+<span class="c1">//</span>
+<span class="c1">//                     The LLVM Compiler Infrastructure</span>
+<span class="c1">//</span>
+<span class="c1">// This file is distributed under the University of Illinois Open Source</span>
+<span class="c1">// License. See LICENSE.TXT for details.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">//</span>
+<span class="c1">// Contains a simple JIT definition for use in the kaleidoscope tutorials.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/SectionMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IndirectionUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRTransformLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/LegacyPassManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/Error.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar/GVN.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cassert></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdlib></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">PrototypeAST</span><span class="p">;</span>
+<span class="k">class</span> <span class="nc">ExprAST</span><span class="p">;</span>
+
+<span class="c1">/// FunctionAST - This class represents a function definition itself.</span>
+<span class="k">class</span> <span class="nc">FunctionAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">FunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Proto</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">)),</span> <span class="n">Body</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Body</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="k">const</span> <span class="n">PrototypeAST</span><span class="o">&</span> <span class="n">getProto</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+  <span class="n">llvm</span><span class="o">::</span><span class="n">Function</span> <span class="o">*</span><span class="n">codegen</span><span class="p">();</span>
+<span class="p">};</span>
+
+<span class="c1">/// This will compile FnAST to IR, rename the function to add the given</span>
+<span class="c1">/// suffix (needed to prevent a name-clash with the function's stub),</span>
+<span class="c1">/// and then take ownership of the module that the function was compiled</span>
+<span class="c1">/// into.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">llvm</span><span class="o">::</span><span class="n">Module</span><span class="o">></span>
+<span class="n">irgenAndTakeOwnership</span><span class="p">(</span><span class="n">FunctionAST</span> <span class="o">&</span><span class="n">FnAST</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Suffix</span><span class="p">);</span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">JITCompileCallbackManager</span><span class="o">></span> <span class="n">CompileCallbackMgr</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">IndirectStubsManager</span><span class="o">></span> <span class="n">IndirectStubsMgr</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">()</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">()),</span>
+        <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([]()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o"><</span><span class="n">SectionMemoryManager</span><span class="o">></span><span class="p">();</span> <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+        <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                      <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                      <span class="p">}),</span>
+        <span class="n">CompileCallbackMgr</span><span class="p">(</span>
+            <span class="n">orc</span><span class="o">::</span><span class="n">createLocalCompileCallbackManager</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">(),</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">auto</span> <span class="n">IndirectStubsMgrBuilder</span> <span class="o">=</span>
+      <span class="n">orc</span><span class="o">::</span><span class="n">createLocalIndirectStubsManagerBuilder</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">getTargetTriple</span><span class="p">());</span>
+    <span class="n">IndirectStubsMgr</span> <span class="o">=</span> <span class="n">IndirectStubsMgrBuilder</span><span class="p">();</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="n">ModuleHandle</span> <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Build our symbol resolver:</span>
+    <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+    <span class="c1">//           the same "logical dylib".</span>
+    <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+    <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">findStub</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">},</span>
+        <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">SymAddr</span> <span class="o">=</span>
+                <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="n">SymAddr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">});</span>
+
+    <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+    <span class="c1">// created SectionMemoryManager.</span>
+    <span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                            <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+  <span class="p">}</span>
+
+  <span class="n">Error</span> <span class="n">addFunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">FnAST</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a CompileCallback - this is the re-entry point into the compiler</span>
+    <span class="c1">// for functions that haven't been compiled yet.</span>
+    <span class="k">auto</span> <span class="n">CCInfo</span> <span class="o">=</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">CompileCallbackMgr</span><span class="o">-></span><span class="n">getCompileCallback</span><span class="p">());</span>
+
+    <span class="c1">// Create an indirect stub. This serves as the functions "canonical</span>
+    <span class="c1">// definition" - an unchanging (constant address) entry point to the</span>
+    <span class="c1">// function implementation.</span>
+    <span class="c1">// Initially we point the stub's function-pointer at the compile callback</span>
+    <span class="c1">// that we just created. In the compile action for the callback (see below)</span>
+    <span class="c1">// we will update the stub's function pointer to point at the function</span>
+    <span class="c1">// implementation that we just implemented.</span>
+    <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Err</span> <span class="o">=</span> <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">createStub</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">FnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()),</span>
+                                                <span class="n">CCInfo</span><span class="p">.</span><span class="n">getAddress</span><span class="p">(),</span>
+                                                <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">))</span>
+      <span class="k">return</span> <span class="n">Err</span><span class="p">;</span>
+
+    <span class="c1">// Move ownership of FnAST to a shared pointer - C++11 lambdas don't support</span>
+    <span class="c1">// capture-by-move, which is be required for unique_ptr.</span>
+    <span class="k">auto</span> <span class="n">SharedFnAST</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">FnAST</span><span class="p">));</span>
+
+    <span class="c1">// Set the action to compile our AST. This lambda will be run if/when</span>
+    <span class="c1">// execution hits the compile callback (via the stub).</span>
+    <span class="c1">//</span>
+    <span class="c1">// The steps to compile are:</span>
+    <span class="c1">// (1) IRGen the function.</span>
+    <span class="c1">// (2) Add the IR module to the JIT to make it executable like any other</span>
+    <span class="c1">//     module.</span>
+    <span class="c1">// (3) Use findSymbol to get the address of the compiled function.</span>
+    <span class="c1">// (4) Update the stub pointer to point at the implementation so that</span>
+    <span class="c1">///    subsequent calls go directly to it and bypass the compiler.</span>
+    <span class="c1">// (5) Return the address of the implementation: this lambda will actually</span>
+    <span class="c1">//     be run inside an attempted call to the function, and we need to</span>
+    <span class="c1">//     continue on to the implementation to complete the attempted call.</span>
+    <span class="c1">//     The JIT runtime (the resolver block) will use the return address of</span>
+    <span class="c1">//     this function as the address to continue at once it has reset the</span>
+    <span class="c1">//     CPU state to what it was immediately before the call.</span>
+    <span class="n">CCInfo</span><span class="p">.</span><span class="n">setCompileAction</span><span class="p">(</span>
+      <span class="p">[</span><span class="k">this</span><span class="p">,</span> <span class="n">SharedFnAST</span><span class="p">]()</span> <span class="p">{</span>
+        <span class="k">auto</span> <span class="n">M</span> <span class="o">=</span> <span class="n">irgenAndTakeOwnership</span><span class="p">(</span><span class="o">*</span><span class="n">SharedFnAST</span><span class="p">,</span> <span class="s">"$impl"</span><span class="p">);</span>
+        <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+        <span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">findSymbol</span><span class="p">(</span><span class="n">SharedFnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()</span> <span class="o">+</span> <span class="s">"$impl"</span><span class="p">);</span>
+        <span class="n">assert</span><span class="p">(</span><span class="n">Sym</span> <span class="o">&&</span> <span class="s">"Couldn't find compiled function?"</span><span class="p">);</span>
+        <span class="n">JITTargetAddress</span> <span class="n">SymAddr</span> <span class="o">=</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">Sym</span><span class="p">.</span><span class="n">getAddress</span><span class="p">());</span>
+        <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Err</span> <span class="o">=</span>
+              <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">updatePointer</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">SharedFnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()),</span>
+                                              <span class="n">SymAddr</span><span class="p">))</span> <span class="p">{</span>
+          <span class="n">logAllUnhandledErrors</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Err</span><span class="p">),</span> <span class="n">errs</span><span class="p">(),</span>
+                                <span class="s">"Error updating function pointer: "</span><span class="p">);</span>
+          <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="n">SymAddr</span><span class="p">;</span>
+      <span class="p">});</span>
+
+    <span class="k">return</span> <span class="n">Error</span><span class="o">::</span><span class="n">success</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">Name</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+  <span class="p">}</span>
+
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">mangle</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+    <span class="n">raw_string_ostream</span> <span class="nf">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+    <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a function pass manager.</span>
+    <span class="k">auto</span> <span class="n">FPM</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">legacy</span><span class="o">::</span><span class="n">FunctionPassManager</span><span class="o">></span><span class="p">(</span><span class="n">M</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+    <span class="c1">// Add some optimizations.</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createInstructionCombiningPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createReassociatePass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createGVNPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createCFGSimplificationPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">doInitialization</span><span class="p">();</span>
+
+    <span class="c1">// Run the optimizations over all functions in the module being added to</span>
+    <span class="c1">// the JIT.</span>
+    <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">F</span> <span class="p">:</span> <span class="o">*</span><span class="n">M</span><span class="p">)</span>
+      <span class="n">FPM</span><span class="o">-></span><span class="n">run</span><span class="p">(</span><span class="n">F</span><span class="p">);</span>
+
+    <span class="k">return</span> <span class="n">M</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end namespace orc</span>
+<span class="p">}</span> <span class="c1">// end namespace llvm</span>
+
+<span class="cp">#endif </span><span class="c1">// LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+</pre></div>
+</div>
+<p><a class="reference external" href="BuildingAJIT5.html">Next: Remote-JITing – Process-isolation and laziness-at-a-distance</a></p>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="BuildingAJIT5.html" title="5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT3.html" title="3. Building a JIT: Per-function Lazy Compilation"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT5.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT5.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT5.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/BuildingAJIT5.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,510 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="LLVM 6.0.0 Release Notes" href="../ReleaseNotes.html" />
+    <link rel="prev" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs" href="BuildingAJIT4.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../ReleaseNotes.html" title="LLVM 6.0.0 Release Notes"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT4.html" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="building-a-jit-remote-jiting-process-isolation-and-laziness-at-a-distance">
+<h1>5. Building a JIT: Remote-JITing – Process Isolation and Laziness at a Distance<a class="headerlink" href="#building-a-jit-remote-jiting-process-isolation-and-laziness-at-a-distance" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-5-introduction" id="id1">Chapter 5 Introduction</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id2">Full Code Listing</a></li>
+</ul>
+</div>
+<p><strong>This tutorial is under active development. It is incomplete and details may
+change frequently.</strong> Nonetheless we invite you to try it out as it stands, and
+we welcome any feedback.</p>
+<div class="section" id="chapter-5-introduction">
+<h2><a class="toc-backref" href="#id1">5.1. Chapter 5 Introduction</a><a class="headerlink" href="#chapter-5-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 5 of the “Building an ORC-based JIT in LLVM” tutorial. This
+chapter introduces the ORC RemoteJIT Client/Server APIs and shows how to use
+them to build a JIT stack that will execute its code via a communications
+channel with a different process. This can be a separate process on the same
+machine, a process on a different machine, or even a process on a different
+platform/architecture. The code builds on top of the lazy-AST-compiling JIT
+stack from <a class="reference external" href="BuildingAJIT3.html">Chapter 4</a>.</p>
+<p><strong>To be done – this is going to be a long one:</strong></p>
+<p><strong>(1) Introduce channels, RPC, RemoteJIT Client and Server APIs</strong></p>
+<p><strong>(2) Describe the client code in greater detail. Discuss modifications of the
+KaleidoscopeJIT class, and the REPL itself.</strong></p>
+<p><strong>(3) Describe the server code.</strong></p>
+<p><strong>(4) Describe how to run the demo.</strong></p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id2">5.2. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example that JITs lazily from
+Kaleidoscope ASTS. To build this example, use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy
+clang++ -g Server/server.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core orcjit native<span class="sb">`</span> -O3 -o toy-server
+<span class="c1"># Run</span>
+./toy-server <span class="p">&</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code for the modified KaleidoscopeJIT:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">//===- KaleidoscopeJIT.h - A simple JIT for Kaleidoscope --------*- C++ -*-===//</span>
+<span class="c1">//</span>
+<span class="c1">//                     The LLVM Compiler Infrastructure</span>
+<span class="c1">//</span>
+<span class="c1">// This file is distributed under the University of Illinois Open Source</span>
+<span class="c1">// License. See LICENSE.TXT for details.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">//</span>
+<span class="c1">// Contains a simple JIT definition for use in the kaleidoscope tutorials.</span>
+<span class="c1">//</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="cp">#ifndef LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+<span class="cp">#define LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+
+<span class="cp">#include</span> <span class="cpf">"RemoteJITUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/SmallVector.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/Triple.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/ExecutionEngine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/JITSymbol.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/CompileUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IndirectionUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRCompileLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/IRTransformLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/LambdaResolver.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DataLayout.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/LegacyPassManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Mangler.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/Error.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Target/TargetMachine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Transforms/Scalar/GVN.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cassert></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdlib></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">PrototypeAST</span><span class="p">;</span>
+<span class="k">class</span> <span class="nc">ExprAST</span><span class="p">;</span>
+
+<span class="c1">/// FunctionAST - This class represents a function definition itself.</span>
+<span class="k">class</span> <span class="nc">FunctionAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">FunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Proto</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">)),</span> <span class="n">Body</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Body</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="k">const</span> <span class="n">PrototypeAST</span><span class="o">&</span> <span class="n">getProto</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+  <span class="n">llvm</span><span class="o">::</span><span class="n">Function</span> <span class="o">*</span><span class="n">codegen</span><span class="p">();</span>
+<span class="p">};</span>
+
+<span class="c1">/// This will compile FnAST to IR, rename the function to add the given</span>
+<span class="c1">/// suffix (needed to prevent a name-clash with the function's stub),</span>
+<span class="c1">/// and then take ownership of the module that the function was compiled</span>
+<span class="c1">/// into.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">llvm</span><span class="o">::</span><span class="n">Module</span><span class="o">></span>
+<span class="n">irgenAndTakeOwnership</span><span class="p">(</span><span class="n">FunctionAST</span> <span class="o">&</span><span class="n">FnAST</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Suffix</span><span class="p">);</span>
+
+<span class="k">namespace</span> <span class="n">llvm</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">orc</span> <span class="p">{</span>
+
+<span class="c1">// Typedef the remote-client API.</span>
+<span class="k">using</span> <span class="n">MyRemote</span> <span class="o">=</span> <span class="n">remote</span><span class="o">::</span><span class="n">OrcRemoteTargetClient</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">KaleidoscopeJIT</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">TargetMachine</span><span class="o">></span> <span class="n">TM</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">DataLayout</span> <span class="n">DL</span><span class="p">;</span>
+  <span class="n">RTDyldObjectLinkingLayer</span> <span class="n">ObjectLayer</span><span class="p">;</span>
+  <span class="n">IRCompileLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">),</span> <span class="n">SimpleCompiler</span><span class="o">></span> <span class="n">CompileLayer</span><span class="p">;</span>
+
+  <span class="k">using</span> <span class="n">OptimizeFunction</span> <span class="o">=</span>
+      <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">)</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">IRTransformLayer</span><span class="o"><</span><span class="k">decltype</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">),</span> <span class="n">OptimizeFunction</span><span class="o">></span> <span class="n">OptimizeLayer</span><span class="p">;</span>
+
+  <span class="n">JITCompileCallbackManager</span> <span class="o">*</span><span class="n">CompileCallbackMgr</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">IndirectStubsManager</span><span class="o">></span> <span class="n">IndirectStubsMgr</span><span class="p">;</span>
+  <span class="n">MyRemote</span> <span class="o">&</span><span class="n">Remote</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">using</span> <span class="n">ModuleHandle</span> <span class="o">=</span> <span class="k">decltype</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">)</span><span class="o">::</span><span class="n">ModuleHandleT</span><span class="p">;</span>
+
+  <span class="n">KaleidoscopeJIT</span><span class="p">(</span><span class="n">MyRemote</span> <span class="o">&</span><span class="n">Remote</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">TM</span><span class="p">(</span><span class="n">EngineBuilder</span><span class="p">().</span><span class="n">selectTarget</span><span class="p">(</span><span class="n">Triple</span><span class="p">(</span><span class="n">Remote</span><span class="p">.</span><span class="n">getTargetTriple</span><span class="p">()),</span> <span class="s">""</span><span class="p">,</span>
+                                        <span class="s">""</span><span class="p">,</span> <span class="n">SmallVector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="mi">0</span><span class="o">></span><span class="p">())),</span>
+        <span class="n">DL</span><span class="p">(</span><span class="n">TM</span><span class="o">-></span><span class="n">createDataLayout</span><span class="p">()),</span>
+        <span class="n">ObjectLayer</span><span class="p">([</span><span class="o">&</span><span class="n">Remote</span><span class="p">]()</span> <span class="p">{</span>
+            <span class="k">return</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">Remote</span><span class="p">.</span><span class="n">createRemoteMemoryManager</span><span class="p">());</span>
+          <span class="p">}),</span>
+        <span class="n">CompileLayer</span><span class="p">(</span><span class="n">ObjectLayer</span><span class="p">,</span> <span class="n">SimpleCompiler</span><span class="p">(</span><span class="o">*</span><span class="n">TM</span><span class="p">)),</span>
+        <span class="n">OptimizeLayer</span><span class="p">(</span><span class="n">CompileLayer</span><span class="p">,</span>
+                      <span class="p">[</span><span class="k">this</span><span class="p">](</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="k">return</span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+                      <span class="p">}),</span>
+        <span class="n">Remote</span><span class="p">(</span><span class="n">Remote</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">auto</span> <span class="n">CCMgrOrErr</span> <span class="o">=</span> <span class="n">Remote</span><span class="p">.</span><span class="n">enableCompileCallbacks</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">CCMgrOrErr</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">logAllUnhandledErrors</span><span class="p">(</span><span class="n">CCMgrOrErr</span><span class="p">.</span><span class="n">takeError</span><span class="p">(),</span> <span class="n">errs</span><span class="p">(),</span>
+                            <span class="s">"Error enabling remote compile callbacks:"</span><span class="p">);</span>
+      <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">CompileCallbackMgr</span> <span class="o">=</span> <span class="o">&*</span><span class="n">CCMgrOrErr</span><span class="p">;</span>
+    <span class="n">IndirectStubsMgr</span> <span class="o">=</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">Remote</span><span class="p">.</span><span class="n">createIndirectStubsManager</span><span class="p">());</span>
+    <span class="n">llvm</span><span class="o">::</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">TargetMachine</span> <span class="o">&</span><span class="n">getTargetMachine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">TM</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="n">ModuleHandle</span> <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Build our symbol resolver:</span>
+    <span class="c1">// Lambda 1: Look back into the JIT itself to find symbols that are part of</span>
+    <span class="c1">//           the same "logical dylib".</span>
+    <span class="c1">// Lambda 2: Search for external symbols in the host process.</span>
+    <span class="k">auto</span> <span class="n">Resolver</span> <span class="o">=</span> <span class="n">createLambdaResolver</span><span class="p">(</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">findStub</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="nb">false</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">Sym</span><span class="p">;</span>
+          <span class="k">return</span> <span class="nf">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">},</span>
+        <span class="p">[</span><span class="o">&</span><span class="p">](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">AddrOrErr</span> <span class="o">=</span> <span class="n">Remote</span><span class="p">.</span><span class="n">getSymbolAddress</span><span class="p">(</span><span class="n">Name</span><span class="p">))</span>
+            <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="o">*</span><span class="n">AddrOrErr</span><span class="p">,</span> <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">);</span>
+          <span class="k">else</span> <span class="p">{</span>
+            <span class="n">logAllUnhandledErrors</span><span class="p">(</span><span class="n">AddrOrErr</span><span class="p">.</span><span class="n">takeError</span><span class="p">(),</span> <span class="n">errs</span><span class="p">(),</span>
+                                  <span class="s">"Error resolving remote symbol:"</span><span class="p">);</span>
+            <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="k">return</span> <span class="n">JITSymbol</span><span class="p">(</span><span class="k">nullptr</span><span class="p">);</span>
+        <span class="p">});</span>
+
+    <span class="c1">// Add the set to the JIT with the resolver we created above and a newly</span>
+    <span class="c1">// created SectionMemoryManager.</span>
+    <span class="k">return</span> <span class="nf">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">),</span>
+                                            <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Resolver</span><span class="p">)));</span>
+  <span class="p">}</span>
+
+  <span class="n">Error</span> <span class="n">addFunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">FnAST</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a CompileCallback - this is the re-entry point into the compiler</span>
+    <span class="c1">// for functions that haven't been compiled yet.</span>
+    <span class="k">auto</span> <span class="n">CCInfo</span> <span class="o">=</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">CompileCallbackMgr</span><span class="o">-></span><span class="n">getCompileCallback</span><span class="p">());</span>
+
+    <span class="c1">// Create an indirect stub. This serves as the functions "canonical</span>
+    <span class="c1">// definition" - an unchanging (constant address) entry point to the</span>
+    <span class="c1">// function implementation.</span>
+    <span class="c1">// Initially we point the stub's function-pointer at the compile callback</span>
+    <span class="c1">// that we just created. In the compile action for the callback (see below)</span>
+    <span class="c1">// we will update the stub's function pointer to point at the function</span>
+    <span class="c1">// implementation that we just implemented.</span>
+    <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Err</span> <span class="o">=</span> <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">createStub</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">FnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()),</span>
+                                                <span class="n">CCInfo</span><span class="p">.</span><span class="n">getAddress</span><span class="p">(),</span>
+                                                <span class="n">JITSymbolFlags</span><span class="o">::</span><span class="n">Exported</span><span class="p">))</span>
+      <span class="k">return</span> <span class="n">Err</span><span class="p">;</span>
+
+    <span class="c1">// Move ownership of FnAST to a shared pointer - C++11 lambdas don't support</span>
+    <span class="c1">// capture-by-move, which is be required for unique_ptr.</span>
+    <span class="k">auto</span> <span class="n">SharedFnAST</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">FnAST</span><span class="p">));</span>
+
+    <span class="c1">// Set the action to compile our AST. This lambda will be run if/when</span>
+    <span class="c1">// execution hits the compile callback (via the stub).</span>
+    <span class="c1">//</span>
+    <span class="c1">// The steps to compile are:</span>
+    <span class="c1">// (1) IRGen the function.</span>
+    <span class="c1">// (2) Add the IR module to the JIT to make it executable like any other</span>
+    <span class="c1">//     module.</span>
+    <span class="c1">// (3) Use findSymbol to get the address of the compiled function.</span>
+    <span class="c1">// (4) Update the stub pointer to point at the implementation so that</span>
+    <span class="c1">///    subsequent calls go directly to it and bypass the compiler.</span>
+    <span class="c1">// (5) Return the address of the implementation: this lambda will actually</span>
+    <span class="c1">//     be run inside an attempted call to the function, and we need to</span>
+    <span class="c1">//     continue on to the implementation to complete the attempted call.</span>
+    <span class="c1">//     The JIT runtime (the resolver block) will use the return address of</span>
+    <span class="c1">//     this function as the address to continue at once it has reset the</span>
+    <span class="c1">//     CPU state to what it was immediately before the call.</span>
+    <span class="n">CCInfo</span><span class="p">.</span><span class="n">setCompileAction</span><span class="p">(</span>
+      <span class="p">[</span><span class="k">this</span><span class="p">,</span> <span class="n">SharedFnAST</span><span class="p">]()</span> <span class="p">{</span>
+        <span class="k">auto</span> <span class="n">M</span> <span class="o">=</span> <span class="n">irgenAndTakeOwnership</span><span class="p">(</span><span class="o">*</span><span class="n">SharedFnAST</span><span class="p">,</span> <span class="s">"$impl"</span><span class="p">);</span>
+        <span class="n">addModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">M</span><span class="p">));</span>
+        <span class="k">auto</span> <span class="n">Sym</span> <span class="o">=</span> <span class="n">findSymbol</span><span class="p">(</span><span class="n">SharedFnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()</span> <span class="o">+</span> <span class="s">"$impl"</span><span class="p">);</span>
+        <span class="n">assert</span><span class="p">(</span><span class="n">Sym</span> <span class="o">&&</span> <span class="s">"Couldn't find compiled function?"</span><span class="p">);</span>
+        <span class="n">JITTargetAddress</span> <span class="n">SymAddr</span> <span class="o">=</span> <span class="n">cantFail</span><span class="p">(</span><span class="n">Sym</span><span class="p">.</span><span class="n">getAddress</span><span class="p">());</span>
+        <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Err</span> <span class="o">=</span>
+              <span class="n">IndirectStubsMgr</span><span class="o">-></span><span class="n">updatePointer</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">SharedFnAST</span><span class="o">-></span><span class="n">getName</span><span class="p">()),</span>
+                                              <span class="n">SymAddr</span><span class="p">))</span> <span class="p">{</span>
+          <span class="n">logAllUnhandledErrors</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Err</span><span class="p">),</span> <span class="n">errs</span><span class="p">(),</span>
+                                <span class="s">"Error updating function pointer: "</span><span class="p">);</span>
+          <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="n">SymAddr</span><span class="p">;</span>
+      <span class="p">});</span>
+
+    <span class="k">return</span> <span class="n">Error</span><span class="o">::</span><span class="n">success</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">Error</span> <span class="n">executeRemoteExpr</span><span class="p">(</span><span class="n">JITTargetAddress</span> <span class="n">ExprAddr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">Remote</span><span class="p">.</span><span class="n">callVoidVoid</span><span class="p">(</span><span class="n">ExprAddr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">JITSymbol</span> <span class="n">findSymbol</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">findSymbol</span><span class="p">(</span><span class="n">mangle</span><span class="p">(</span><span class="n">Name</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="kt">void</span> <span class="n">removeModule</span><span class="p">(</span><span class="n">ModuleHandle</span> <span class="n">H</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">cantFail</span><span class="p">(</span><span class="n">OptimizeLayer</span><span class="p">.</span><span class="n">removeModule</span><span class="p">(</span><span class="n">H</span><span class="p">));</span>
+  <span class="p">}</span>
+
+<span class="k">private</span><span class="o">:</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">mangle</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">MangledName</span><span class="p">;</span>
+    <span class="n">raw_string_ostream</span> <span class="nf">MangledNameStream</span><span class="p">(</span><span class="n">MangledName</span><span class="p">);</span>
+    <span class="n">Mangler</span><span class="o">::</span><span class="n">getNameWithPrefix</span><span class="p">(</span><span class="n">MangledNameStream</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">DL</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">MangledNameStream</span><span class="p">.</span><span class="n">str</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">optimizeModule</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">M</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Create a function pass manager.</span>
+    <span class="k">auto</span> <span class="n">FPM</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">legacy</span><span class="o">::</span><span class="n">FunctionPassManager</span><span class="o">></span><span class="p">(</span><span class="n">M</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+    <span class="c1">// Add some optimizations.</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createInstructionCombiningPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createReassociatePass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createGVNPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">add</span><span class="p">(</span><span class="n">createCFGSimplificationPass</span><span class="p">());</span>
+    <span class="n">FPM</span><span class="o">-></span><span class="n">doInitialization</span><span class="p">();</span>
+
+    <span class="c1">// Run the optimizations over all functions in the module being added to</span>
+    <span class="c1">// the JIT.</span>
+    <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">F</span> <span class="p">:</span> <span class="o">*</span><span class="n">M</span><span class="p">)</span>
+      <span class="n">FPM</span><span class="o">-></span><span class="n">run</span><span class="p">(</span><span class="n">F</span><span class="p">);</span>
+
+    <span class="k">return</span> <span class="n">M</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end namespace orc</span>
+<span class="p">}</span> <span class="c1">// end namespace llvm</span>
+
+<span class="cp">#endif </span><span class="c1">// LLVM_EXECUTIONENGINE_ORC_KALEIDOSCOPEJIT_H</span>
+</pre></div>
+</div>
+<p>And the code for the JIT server:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"../RemoteJITUtils.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/RTDyldMemoryManager.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ExecutionEngine/Orc/OrcABISupport.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/CommandLine.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/DynamicLibrary.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/Error.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/raw_ostream.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/Support/TargetSelect.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdint></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdio></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstring></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><netinet/in.h></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><sys/socket.h></span><span class="cp"></span>
+
+<span class="k">using</span> <span class="k">namespace</span> <span class="n">llvm</span><span class="p">;</span>
+<span class="k">using</span> <span class="k">namespace</span> <span class="n">llvm</span><span class="o">::</span><span class="n">orc</span><span class="p">;</span>
+
+<span class="c1">// Command line argument for TCP port.</span>
+<span class="n">cl</span><span class="o">::</span><span class="n">opt</span><span class="o"><</span><span class="kt">uint32_t</span><span class="o">></span> <span class="n">Port</span><span class="p">(</span><span class="s">"port"</span><span class="p">,</span>
+                       <span class="n">cl</span><span class="o">::</span><span class="n">desc</span><span class="p">(</span><span class="s">"TCP port to listen on"</span><span class="p">),</span>
+                       <span class="n">cl</span><span class="o">::</span><span class="n">init</span><span class="p">(</span><span class="mi">20000</span><span class="p">));</span>
+
+<span class="n">ExitOnError</span> <span class="n">ExitOnErr</span><span class="p">;</span>
+
+<span class="k">using</span> <span class="n">MainFun</span> <span class="o">=</span> <span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span><span class="p">[]);</span>
+
+<span class="k">template</span> <span class="o"><</span><span class="k">typename</span> <span class="n">NativePtrT</span><span class="o">></span>
+<span class="n">NativePtrT</span> <span class="n">MakeNative</span><span class="p">(</span><span class="kt">uint64_t</span> <span class="n">P</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">return</span> <span class="k">reinterpret_cast</span><span class="o"><</span><span class="n">NativePtrT</span><span class="o">></span><span class="p">(</span><span class="k">static_cast</span><span class="o"><</span><span class="kt">uintptr_t</span><span class="o">></span><span class="p">(</span><span class="n">P</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">extern</span> <span class="s">"C"</span>
+<span class="kt">void</span> <span class="n">printExprResult</span><span class="p">(</span><span class="kt">double</span> <span class="n">Val</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">"Expression evaluated to: %f</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">Val</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">// --- LAZY COMPILE TEST ---</span>
+<span class="kt">int</span> <span class="n">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">ExitOnErr</span><span class="p">.</span><span class="n">setBanner</span><span class="p">(</span><span class="s">"jit_server: "</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">ExitOnErr</span><span class="p">.</span><span class="n">setBanner</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="s">": "</span><span class="p">);</span>
+
+  <span class="c1">// --- Initialize LLVM ---</span>
+  <span class="n">cl</span><span class="o">::</span><span class="n">ParseCommandLineOptions</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="s">"LLVM lazy JIT example.</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+
+  <span class="n">InitializeNativeTarget</span><span class="p">();</span>
+  <span class="n">InitializeNativeTargetAsmPrinter</span><span class="p">();</span>
+  <span class="n">InitializeNativeTargetAsmParser</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sys</span><span class="o">::</span><span class="n">DynamicLibrary</span><span class="o">::</span><span class="n">LoadLibraryPermanently</span><span class="p">(</span><span class="k">nullptr</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">errs</span><span class="p">()</span> <span class="o"><<</span> <span class="s">"Error loading program symbols.</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="c1">// --- Initialize remote connection ---</span>
+
+  <span class="kt">int</span> <span class="n">sockfd</span> <span class="o">=</span> <span class="n">socket</span><span class="p">(</span><span class="n">PF_INET</span><span class="p">,</span> <span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">sockaddr_in</span> <span class="n">servAddr</span><span class="p">,</span> <span class="n">clientAddr</span><span class="p">;</span>
+  <span class="kt">socklen_t</span> <span class="n">clientAddrLen</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">clientAddr</span><span class="p">);</span>
+  <span class="n">memset</span><span class="p">(</span><span class="o">&</span><span class="n">servAddr</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">servAddr</span><span class="p">));</span>
+  <span class="n">servAddr</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">PF_INET</span><span class="p">;</span>
+  <span class="n">servAddr</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">INADDR_ANY</span><span class="p">;</span>
+  <span class="n">servAddr</span><span class="p">.</span><span class="n">sin_port</span> <span class="o">=</span> <span class="n">htons</span><span class="p">(</span><span class="n">Port</span><span class="p">);</span>
+
+  <span class="p">{</span>
+    <span class="c1">// avoid "Address already in use" error.</span>
+    <span class="kt">int</span> <span class="n">yes</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">setsockopt</span><span class="p">(</span><span class="n">sockfd</span><span class="p">,</span><span class="n">SOL_SOCKET</span><span class="p">,</span><span class="n">SO_REUSEADDR</span><span class="p">,</span><span class="o">&</span><span class="n">yes</span><span class="p">,</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">))</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">errs</span><span class="p">()</span> <span class="o"><<</span> <span class="s">"Error calling setsockopt.</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
+      <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">bind</span><span class="p">(</span><span class="n">sockfd</span><span class="p">,</span> <span class="k">reinterpret_cast</span><span class="o"><</span><span class="n">sockaddr</span><span class="o">*></span><span class="p">(</span><span class="o">&</span><span class="n">servAddr</span><span class="p">),</span>
+           <span class="k">sizeof</span><span class="p">(</span><span class="n">servAddr</span><span class="p">))</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">errs</span><span class="p">()</span> <span class="o"><<</span> <span class="s">"Error on binding.</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">listen</span><span class="p">(</span><span class="n">sockfd</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+  <span class="kt">int</span> <span class="n">newsockfd</span> <span class="o">=</span> <span class="n">accept</span><span class="p">(</span><span class="n">sockfd</span><span class="p">,</span> <span class="k">reinterpret_cast</span><span class="o"><</span><span class="n">sockaddr</span><span class="o">*></span><span class="p">(</span><span class="o">&</span><span class="n">clientAddr</span><span class="p">),</span>
+                         <span class="o">&</span><span class="n">clientAddrLen</span><span class="p">);</span>
+
+  <span class="k">auto</span> <span class="n">SymbolLookup</span> <span class="o">=</span>
+    <span class="p">[](</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">return</span> <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">getSymbolAddressInProcess</span><span class="p">(</span><span class="n">Name</span><span class="p">);</span>
+    <span class="p">};</span>
+
+  <span class="k">auto</span> <span class="n">RegisterEHFrames</span> <span class="o">=</span>
+    <span class="p">[](</span><span class="kt">uint8_t</span> <span class="o">*</span><span class="n">Addr</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">Size</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">registerEHFramesInProcess</span><span class="p">(</span><span class="n">Addr</span><span class="p">,</span> <span class="n">Size</span><span class="p">);</span>
+    <span class="p">};</span>
+
+  <span class="k">auto</span> <span class="n">DeregisterEHFrames</span> <span class="o">=</span>
+    <span class="p">[](</span><span class="kt">uint8_t</span> <span class="o">*</span><span class="n">Addr</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">Size</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">RTDyldMemoryManager</span><span class="o">::</span><span class="n">deregisterEHFramesInProcess</span><span class="p">(</span><span class="n">Addr</span><span class="p">,</span> <span class="n">Size</span><span class="p">);</span>
+    <span class="p">};</span>
+
+  <span class="n">FDRPCChannel</span> <span class="nf">TCPChannel</span><span class="p">(</span><span class="n">newsockfd</span><span class="p">,</span> <span class="n">newsockfd</span><span class="p">);</span>
+
+  <span class="k">using</span> <span class="n">MyServerT</span> <span class="o">=</span> <span class="n">remote</span><span class="o">::</span><span class="n">OrcRemoteTargetServer</span><span class="o"><</span><span class="n">FDRPCChannel</span><span class="p">,</span> <span class="n">OrcX86_64_SysV</span><span class="o">></span><span class="p">;</span>
+
+  <span class="n">MyServerT</span> <span class="nf">Server</span><span class="p">(</span><span class="n">TCPChannel</span><span class="p">,</span> <span class="n">SymbolLookup</span><span class="p">,</span> <span class="n">RegisterEHFrames</span><span class="p">,</span> <span class="n">DeregisterEHFrames</span><span class="p">);</span>
+
+  <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">Server</span><span class="p">.</span><span class="n">receivedTerminate</span><span class="p">())</span>
+    <span class="n">ExitOnErr</span><span class="p">(</span><span class="n">Server</span><span class="p">.</span><span class="n">handleOne</span><span class="p">());</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../ReleaseNotes.html" title="LLVM 6.0.0 Release Notes"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="BuildingAJIT4.html" title="4. Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/LangImpl01.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/LangImpl01.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/LangImpl01.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/LangImpl01.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,367 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>1. Kaleidoscope: Tutorial Introduction and the Lexer — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="2. Kaleidoscope: Implementing a Parser and AST" href="LangImpl02.html" />
+    <link rel="prev" title="LLVM Tutorial: Table of Contents" href="index.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="LangImpl02.html" title="2. Kaleidoscope: Implementing a Parser and AST"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="LLVM Tutorial: Table of Contents"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="kaleidoscope-tutorial-introduction-and-the-lexer">
+<h1>1. Kaleidoscope: Tutorial Introduction and the Lexer<a class="headerlink" href="#kaleidoscope-tutorial-introduction-and-the-lexer" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#tutorial-introduction" id="id1">Tutorial Introduction</a></li>
+<li><a class="reference internal" href="#the-basic-language" id="id2">The Basic Language</a></li>
+<li><a class="reference internal" href="#the-lexer" id="id3">The Lexer</a></li>
+</ul>
+</div>
+<div class="section" id="tutorial-introduction">
+<h2><a class="toc-backref" href="#id1">1.1. Tutorial Introduction</a><a class="headerlink" href="#tutorial-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to the “Implementing a language with LLVM” tutorial. This
+tutorial runs through the implementation of a simple language, showing
+how fun and easy it can be. This tutorial will get you up and started as
+well as help to build a framework you can extend to other languages. The
+code in this tutorial can also be used as a playground to hack on other
+LLVM specific things.</p>
+<p>The goal of this tutorial is to progressively unveil our language,
+describing how it is built up over time. This will let us cover a fairly
+broad range of language design and LLVM-specific usage issues, showing
+and explaining the code for it all along the way, without overwhelming
+you with tons of details up front.</p>
+<p>It is useful to point out ahead of time that this tutorial is really
+about teaching compiler techniques and LLVM specifically, <em>not</em> about
+teaching modern and sane software engineering principles. In practice,
+this means that we’ll take a number of shortcuts to simplify the
+exposition. For example, the code uses global variables
+all over the place, doesn’t use nice design patterns like
+<a class="reference external" href="http://en.wikipedia.org/wiki/Visitor_pattern">visitors</a>, etc... but
+it is very simple. If you dig in and use the code as a basis for future
+projects, fixing these deficiencies shouldn’t be hard.</p>
+<p>I’ve tried to put this tutorial together in a way that makes chapters
+easy to skip over if you are already familiar with or are uninterested
+in the various pieces. The structure of the tutorial is:</p>
+<ul class="simple">
+<li><a class="reference external" href="#language">Chapter #1</a>: Introduction to the Kaleidoscope
+language, and the definition of its Lexer - This shows where we are
+going and the basic functionality that we want it to do. In order to
+make this tutorial maximally understandable and hackable, we choose
+to implement everything in C++ instead of using lexer and parser
+generators. LLVM obviously works just fine with such tools, feel free
+to use one if you prefer.</li>
+<li><a class="reference external" href="LangImpl02.html">Chapter #2</a>: Implementing a Parser and AST -
+With the lexer in place, we can talk about parsing techniques and
+basic AST construction. This tutorial describes recursive descent
+parsing and operator precedence parsing. Nothing in Chapters 1 or 2
+is LLVM-specific, the code doesn’t even link in LLVM at this point.
+:)</li>
+<li><a class="reference external" href="LangImpl03.html">Chapter #3</a>: Code generation to LLVM IR - With
+the AST ready, we can show off how easy generation of LLVM IR really
+is.</li>
+<li><a class="reference external" href="LangImpl04.html">Chapter #4</a>: Adding JIT and Optimizer Support
+- Because a lot of people are interested in using LLVM as a JIT,
+we’ll dive right into it and show you the 3 lines it takes to add JIT
+support. LLVM is also useful in many other ways, but this is one
+simple and “sexy” way to show off its power. :)</li>
+<li><a class="reference external" href="LangImpl05.html">Chapter #5</a>: Extending the Language: Control
+Flow - With the language up and running, we show how to extend it
+with control flow operations (if/then/else and a ‘for’ loop). This
+gives us a chance to talk about simple SSA construction and control
+flow.</li>
+<li><a class="reference external" href="LangImpl06.html">Chapter #6</a>: Extending the Language:
+User-defined Operators - This is a silly but fun chapter that talks
+about extending the language to let the user program define their own
+arbitrary unary and binary operators (with assignable precedence!).
+This lets us build a significant piece of the “language” as library
+routines.</li>
+<li><a class="reference external" href="LangImpl07.html">Chapter #7</a>: Extending the Language: Mutable
+Variables - This chapter talks about adding user-defined local
+variables along with an assignment operator. The interesting part
+about this is how easy and trivial it is to construct SSA form in
+LLVM: no, LLVM does <em>not</em> require your front-end to construct SSA
+form!</li>
+<li><a class="reference external" href="LangImpl08.html">Chapter #8</a>: Compiling to Object Files - This
+chapter explains how to take LLVM IR and compile it down to object
+files.</li>
+<li><a class="reference external" href="LangImpl09.html">Chapter #9</a>: Extending the Language: Debug
+Information - Having built a decent little programming language with
+control flow, functions and mutable variables, we consider what it
+takes to add debug information to standalone executables. This debug
+information will allow you to set breakpoints in Kaleidoscope
+functions, print out argument variables, and call functions - all
+from within the debugger!</li>
+<li><a class="reference external" href="LangImpl10.html">Chapter #10</a>: Conclusion and other useful LLVM
+tidbits - This chapter wraps up the series by talking about
+potential ways to extend the language, but also includes a bunch of
+pointers to info about “special topics” like adding garbage
+collection support, exceptions, debugging, support for “spaghetti
+stacks”, and a bunch of other tips and tricks.</li>
+</ul>
+<p>By the end of the tutorial, we’ll have written a bit less than 1000 lines
+of non-comment, non-blank, lines of code. With this small amount of
+code, we’ll have built up a very reasonable compiler for a non-trivial
+language including a hand-written lexer, parser, AST, as well as code
+generation support with a JIT compiler. While other systems may have
+interesting “hello world” tutorials, I think the breadth of this
+tutorial is a great testament to the strengths of LLVM and why you
+should consider it if you’re interested in language or compiler design.</p>
+<p>A note about this tutorial: we expect you to extend the language and
+play with it on your own. Take the code and go crazy hacking away at it,
+compilers don’t need to be scary creatures - it can be a lot of fun to
+play with languages!</p>
+</div>
+<div class="section" id="the-basic-language">
+<h2><a class="toc-backref" href="#id2">1.2. The Basic Language</a><a class="headerlink" href="#the-basic-language" title="Permalink to this headline">¶</a></h2>
+<p>This tutorial will be illustrated with a toy language that we’ll call
+“<a class="reference external" href="http://en.wikipedia.org/wiki/Kaleidoscope">Kaleidoscope</a>” (derived
+from “meaning beautiful, form, and view”). Kaleidoscope is a procedural
+language that allows you to define functions, use conditionals, math,
+etc. Over the course of the tutorial, we’ll extend Kaleidoscope to
+support the if/then/else construct, a for loop, user defined operators,
+JIT compilation with a simple command line interface, etc.</p>
+<p>Because we want to keep things simple, the only datatype in Kaleidoscope
+is a 64-bit floating point type (aka ‘double’ in C parlance). As such,
+all values are implicitly double precision and the language doesn’t
+require type declarations. This gives the language a very nice and
+simple syntax. For example, the following simple example computes
+<a class="reference external" href="http://en.wikipedia.org/wiki/Fibonacci_number">Fibonacci numbers:</a></p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Compute the x'th fibonacci number.</span>
+<span class="k">def</span> <span class="nf">fib</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+  <span class="k">if</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">3</span> <span class="n">then</span>
+    <span class="mi">1</span>
+  <span class="k">else</span>
+    <span class="n">fib</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">fib</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
+
+<span class="c1"># This expression will compute the 40th number.</span>
+<span class="n">fib</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>We also allow Kaleidoscope to call into standard library functions (the
+LLVM JIT makes this completely trivial). This means that you can use the
+‘extern’ keyword to define a function before you use it (this is also
+useful for mutually recursive functions). For example:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">extern</span> <span class="n">sin</span><span class="p">(</span><span class="n">arg</span><span class="p">);</span>
+<span class="n">extern</span> <span class="n">cos</span><span class="p">(</span><span class="n">arg</span><span class="p">);</span>
+<span class="n">extern</span> <span class="n">atan2</span><span class="p">(</span><span class="n">arg1</span> <span class="n">arg2</span><span class="p">);</span>
+
+<span class="n">atan2</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="o">.</span><span class="mi">4</span><span class="p">),</span> <span class="n">cos</span><span class="p">(</span><span class="mi">42</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>A more interesting example is included in Chapter 6 where we write a
+little Kaleidoscope application that <a class="reference external" href="LangImpl06.html#kicking-the-tires">displays a Mandelbrot
+Set</a> at various levels of magnification.</p>
+<p>Lets dive into the implementation of this language!</p>
+</div>
+<div class="section" id="the-lexer">
+<h2><a class="toc-backref" href="#id3">1.3. The Lexer</a><a class="headerlink" href="#the-lexer" title="Permalink to this headline">¶</a></h2>
+<p>When it comes to implementing a language, the first thing needed is the
+ability to process a text file and recognize what it says. The
+traditional way to do this is to use a
+“<a class="reference external" href="http://en.wikipedia.org/wiki/Lexical_analysis">lexer</a>” (aka
+‘scanner’) to break the input up into “tokens”. Each token returned by
+the lexer includes a token code and potentially some metadata (e.g. the
+numeric value of a number). First, we define the possibilities:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// The lexer returns tokens [0-255] if it is an unknown character, otherwise one</span>
+<span class="c1">// of these for known things.</span>
+<span class="k">enum</span> <span class="n">Token</span> <span class="p">{</span>
+  <span class="n">tok_eof</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+
+  <span class="c1">// commands</span>
+  <span class="n">tok_def</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
+  <span class="n">tok_extern</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span>
+
+  <span class="c1">// primary</span>
+  <span class="n">tok_identifier</span> <span class="o">=</span> <span class="o">-</span><span class="mi">4</span><span class="p">,</span>
+  <span class="n">tok_number</span> <span class="o">=</span> <span class="o">-</span><span class="mi">5</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdentifierStr</span><span class="p">;</span> <span class="c1">// Filled in if tok_identifier</span>
+<span class="k">static</span> <span class="kt">double</span> <span class="n">NumVal</span><span class="p">;</span>             <span class="c1">// Filled in if tok_number</span>
+</pre></div>
+</div>
+<p>Each token returned by our lexer will either be one of the Token enum
+values or it will be an ‘unknown’ character like ‘+’, which is returned
+as its ASCII value. If the current token is an identifier, the
+<code class="docutils literal"><span class="pre">IdentifierStr</span></code> global variable holds the name of the identifier. If
+the current token is a numeric literal (like 1.0), <code class="docutils literal"><span class="pre">NumVal</span></code> holds its
+value. Note that we use global variables for simplicity, this is not the
+best choice for a real language implementation :).</p>
+<p>The actual implementation of the lexer is a single function named
+<code class="docutils literal"><span class="pre">gettok</span></code>. The <code class="docutils literal"><span class="pre">gettok</span></code> function is called to return the next token
+from standard input. Its definition starts as:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// gettok - Return the next token from standard input.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">gettok</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">static</span> <span class="kt">int</span> <span class="n">LastChar</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span>
+
+  <span class="c1">// Skip any whitespace.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">isspace</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span>
+    <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+</pre></div>
+</div>
+<p><code class="docutils literal"><span class="pre">gettok</span></code> works by calling the C <code class="docutils literal"><span class="pre">getchar()</span></code> function to read
+characters one at a time from standard input. It eats them as it
+recognizes them and stores the last character read, but not processed,
+in LastChar. The first thing that it has to do is ignore whitespace
+between tokens. This is accomplished with the loop above.</p>
+<p>The next thing <code class="docutils literal"><span class="pre">gettok</span></code> needs to do is recognize identifiers and
+specific keywords like “def”. Kaleidoscope does this with this simple
+loop:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="p">(</span><span class="n">isalpha</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// identifier: [a-zA-Z][a-zA-Z0-9]*</span>
+  <span class="n">IdentifierStr</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">isalnum</span><span class="p">((</span><span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">())))</span>
+    <span class="n">IdentifierStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"def"</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">tok_def</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"extern"</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">tok_extern</span><span class="p">;</span>
+  <span class="k">return</span> <span class="n">tok_identifier</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Note that this code sets the ‘<code class="docutils literal"><span class="pre">IdentifierStr</span></code>‘ global whenever it
+lexes an identifier. Also, since language keywords are matched by the
+same loop, we handle them here inline. Numeric values are similar:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">)</span> <span class="p">{</span>   <span class="c1">// Number: [0-9.]+</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">NumStr</span><span class="p">;</span>
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">NumStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+    <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">);</span>
+
+  <span class="n">NumVal</span> <span class="o">=</span> <span class="n">strtod</span><span class="p">(</span><span class="n">NumStr</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">tok_number</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This is all pretty straight-forward code for processing input. When
+reading a numeric value from input, we use the C <code class="docutils literal"><span class="pre">strtod</span></code> function to
+convert it to a numeric value that we store in <code class="docutils literal"><span class="pre">NumVal</span></code>. Note that
+this isn’t doing sufficient error checking: it will incorrectly read
+“1.23.45.67” and handle it as if you typed in “1.23”. Feel free to
+extend it :). Next we handle comments:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'#'</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// Comment until end of line.</span>
+  <span class="k">do</span>
+    <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\n'</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\r'</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">gettok</span><span class="p">();</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>We handle comments by skipping to the end of the line and then return
+the next token. Finally, if the input doesn’t match one of the above
+cases, it is either an operator character like ‘+’ or the end of the
+file. These are handled with this code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span>  <span class="c1">// Check for end of file.  Don't eat the EOF.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="n">EOF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">tok_eof</span><span class="p">;</span>
+
+  <span class="c1">// Otherwise, just return the character as its ascii value.</span>
+  <span class="kt">int</span> <span class="n">ThisChar</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+  <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+  <span class="k">return</span> <span class="n">ThisChar</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>With this, we have the complete lexer for the basic Kaleidoscope
+language (the <a class="reference external" href="LangImpl02.html#full-code-listing">full code listing</a> for the Lexer
+is available in the <a class="reference external" href="LangImpl02.html">next chapter</a> of the tutorial).
+Next we’ll <a class="reference external" href="LangImpl02.html">build a simple parser that uses this to build an Abstract
+Syntax Tree</a>. When we have that, we’ll include a
+driver so that you can use the lexer and parser together.</p>
+<p><a class="reference external" href="LangImpl02.html">Next: Implementing a Parser and AST</a></p>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="LangImpl02.html" title="2. Kaleidoscope: Implementing a Parser and AST"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="LLVM Tutorial: Table of Contents"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/LangImpl02.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/LangImpl02.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/LangImpl02.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/LangImpl02.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,1213 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>2. Kaleidoscope: Implementing a Parser and AST — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="3. Kaleidoscope: Code generation to LLVM IR" href="LangImpl03.html" />
+    <link rel="prev" title="1. Kaleidoscope: Tutorial Introduction and the Lexer" href="LangImpl01.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="LangImpl03.html" title="3. Kaleidoscope: Code generation to LLVM IR"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="LangImpl01.html" title="1. Kaleidoscope: Tutorial Introduction and the Lexer"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="kaleidoscope-implementing-a-parser-and-ast">
+<h1>2. Kaleidoscope: Implementing a Parser and AST<a class="headerlink" href="#kaleidoscope-implementing-a-parser-and-ast" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-2-introduction" id="id2">Chapter 2 Introduction</a></li>
+<li><a class="reference internal" href="#the-abstract-syntax-tree-ast" id="id3">The Abstract Syntax Tree (AST)</a></li>
+<li><a class="reference internal" href="#parser-basics" id="id4">Parser Basics</a></li>
+<li><a class="reference internal" href="#basic-expression-parsing" id="id5">Basic Expression Parsing</a></li>
+<li><a class="reference internal" href="#binary-expression-parsing" id="id6">Binary Expression Parsing</a></li>
+<li><a class="reference internal" href="#parsing-the-rest" id="id7">Parsing the Rest</a></li>
+<li><a class="reference internal" href="#the-driver" id="id8">The Driver</a></li>
+<li><a class="reference internal" href="#conclusions" id="id9">Conclusions</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id10">Full Code Listing</a></li>
+</ul>
+</div>
+<div class="section" id="chapter-2-introduction">
+<h2><a class="toc-backref" href="#id2">2.1. Chapter 2 Introduction</a><a class="headerlink" href="#chapter-2-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 2 of the “<a class="reference external" href="index.html">Implementing a language with
+LLVM</a>” tutorial. This chapter shows you how to use the
+lexer, built in <a class="reference external" href="LangImpl01.html">Chapter 1</a>, to build a full
+<a class="reference external" href="http://en.wikipedia.org/wiki/Parsing">parser</a> for our Kaleidoscope
+language. Once we have a parser, we’ll define and build an <a class="reference external" href="http://en.wikipedia.org/wiki/Abstract_syntax_tree">Abstract
+Syntax Tree</a> (AST).</p>
+<p>The parser we will build uses a combination of <a class="reference external" href="http://en.wikipedia.org/wiki/Recursive_descent_parser">Recursive Descent
+Parsing</a> and
+<a class="reference external" href="http://en.wikipedia.org/wiki/Operator-precedence_parser">Operator-Precedence
+Parsing</a> to
+parse the Kaleidoscope language (the latter for binary expressions and
+the former for everything else). Before we get to parsing though, lets
+talk about the output of the parser: the Abstract Syntax Tree.</p>
+</div>
+<div class="section" id="the-abstract-syntax-tree-ast">
+<h2><a class="toc-backref" href="#id3">2.2. The Abstract Syntax Tree (AST)</a><a class="headerlink" href="#the-abstract-syntax-tree-ast" title="Permalink to this headline">¶</a></h2>
+<p>The AST for a program captures its behavior in such a way that it is
+easy for later stages of the compiler (e.g. code generation) to
+interpret. We basically want one object for each construct in the
+language, and the AST should closely model the language. In
+Kaleidoscope, we have expressions, a prototype, and a function object.
+We’ll start with expressions first:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// ExprAST - Base class for all expression nodes.</span>
+<span class="k">class</span> <span class="nc">ExprAST</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">virtual</span> <span class="o">~</span><span class="n">ExprAST</span><span class="p">()</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// NumberExprAST - Expression class for numeric literals like "1.0".</span>
+<span class="k">class</span> <span class="nc">NumberExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">double</span> <span class="n">Val</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">NumberExprAST</span><span class="p">(</span><span class="kt">double</span> <span class="n">Val</span><span class="p">)</span> <span class="o">:</span> <span class="n">Val</span><span class="p">(</span><span class="n">Val</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<p>The code above shows the definition of the base ExprAST class and one
+subclass which we use for numeric literals. The important thing to note
+about this code is that the NumberExprAST class captures the numeric
+value of the literal as an instance variable. This allows later phases
+of the compiler to know what the stored numeric value is.</p>
+<p>Right now we only create the AST, so there are no useful accessor
+methods on them. It would be very easy to add a virtual method to pretty
+print the code, for example. Here are the other expression AST node
+definitions that we’ll use in the basic form of the Kaleidoscope
+language:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// VariableExprAST - Expression class for referencing a variable, like "a".</span>
+<span class="k">class</span> <span class="nc">VariableExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">VariableExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">Name</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// BinaryExprAST - Expression class for a binary operator.</span>
+<span class="k">class</span> <span class="nc">BinaryExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="n">Op</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span> <span class="n">RHS</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">BinaryExprAST</span><span class="p">(</span><span class="kt">char</span> <span class="n">op</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span>
+                <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">RHS</span><span class="p">)</span>
+    <span class="o">:</span> <span class="n">Op</span><span class="p">(</span><span class="n">op</span><span class="p">),</span> <span class="n">LHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">)),</span> <span class="n">RHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// CallExprAST - Expression class for function calls.</span>
+<span class="k">class</span> <span class="nc">CallExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Callee</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">CallExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Callee</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">)</span>
+    <span class="o">:</span> <span class="n">Callee</span><span class="p">(</span><span class="n">Callee</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<p>This is all (intentionally) rather straight-forward: variables capture
+the variable name, binary operators capture their opcode (e.g. ‘+’), and
+calls capture a function name as well as a list of any argument
+expressions. One thing that is nice about our AST is that it captures
+the language features without talking about the syntax of the language.
+Note that there is no discussion about precedence of binary operators,
+lexical structure, etc.</p>
+<p>For our basic language, these are all of the expression nodes we’ll
+define. Because it doesn’t have conditional control flow, it isn’t
+Turing-complete; we’ll fix that in a later installment. The two things
+we need next are a way to talk about the interface to a function, and a
+way to talk about functions themselves:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// PrototypeAST - This class represents the "prototype" for a function,</span>
+<span class="c1">/// which captures its name, and its argument names (thus implicitly the number</span>
+<span class="c1">/// of arguments the function takes).</span>
+<span class="k">class</span> <span class="nc">PrototypeAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">PrototypeAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">name</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">)</span>
+    <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">getName</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">Name</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="c1">/// FunctionAST - This class represents a function definition itself.</span>
+<span class="k">class</span> <span class="nc">FunctionAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">FunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">)</span>
+    <span class="o">:</span> <span class="n">Proto</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">)),</span> <span class="n">Body</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Body</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<p>In Kaleidoscope, functions are typed with just a count of their
+arguments. Since all values are double precision floating point, the
+type of each argument doesn’t need to be stored anywhere. In a more
+aggressive and realistic language, the “ExprAST” class would probably
+have a type field.</p>
+<p>With this scaffolding, we can now talk about parsing expressions and
+function bodies in Kaleidoscope.</p>
+</div>
+<div class="section" id="parser-basics">
+<h2><a class="toc-backref" href="#id4">2.3. Parser Basics</a><a class="headerlink" href="#parser-basics" title="Permalink to this headline">¶</a></h2>
+<p>Now that we have an AST to build, we need to define the parser code to
+build it. The idea here is that we want to parse something like “x+y”
+(which is returned as three tokens by the lexer) into an AST that could
+be generated with calls like this:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">auto</span> <span class="n">LHS</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">VariableExprAST</span><span class="o">></span><span class="p">(</span><span class="s">"x"</span><span class="p">);</span>
+<span class="k">auto</span> <span class="n">RHS</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">VariableExprAST</span><span class="o">></span><span class="p">(</span><span class="s">"y"</span><span class="p">);</span>
+<span class="k">auto</span> <span class="n">Result</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">BinaryExprAST</span><span class="o">></span><span class="p">(</span><span class="sc">'+'</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">),</span>
+                                              <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>In order to do this, we’ll start by defining some basic helper routines:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// CurTok/getNextToken - Provide a simple token buffer.  CurTok is the current</span>
+<span class="c1">/// token the parser is looking at.  getNextToken reads another token from the</span>
+<span class="c1">/// lexer and updates CurTok with its results.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="n">CurTok</span><span class="p">;</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">getNextToken</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">return</span> <span class="n">CurTok</span> <span class="o">=</span> <span class="n">gettok</span><span class="p">();</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This implements a simple token buffer around the lexer. This allows us
+to look one token ahead at what the lexer is returning. Every function
+in our parser will assume that CurTok is the current token that needs to
+be parsed.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// LogError* - These are little helper functions for error handling.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LogError</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"LogError: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">LogErrorP</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">LogError</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal"><span class="pre">LogError</span></code> routines are simple helper routines that our parser will
+use to handle errors. The error recovery in our parser will not be the
+best and is not particular user-friendly, but it will be enough for our
+tutorial. These routines make it easier to handle errors in routines
+that have various return types: they always return null.</p>
+<p>With these basic helper functions, we can implement the first piece of
+our grammar: numeric literals.</p>
+</div>
+<div class="section" id="basic-expression-parsing">
+<h2><a class="toc-backref" href="#id5">2.4. Basic Expression Parsing</a><a class="headerlink" href="#basic-expression-parsing" title="Permalink to this headline">¶</a></h2>
+<p>We start with numeric literals, because they are the simplest to
+process. For each production in our grammar, we’ll define a function
+which parses that production. For numeric literals, we have:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// numberexpr ::= number</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseNumberExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">Result</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">NumberExprAST</span><span class="o">></span><span class="p">(</span><span class="n">NumVal</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// consume the number</span>
+  <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Result</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This routine is very simple: it expects to be called when the current
+token is a <code class="docutils literal"><span class="pre">tok_number</span></code> token. It takes the current number value,
+creates a <code class="docutils literal"><span class="pre">NumberExprAST</span></code> node, advances the lexer to the next token,
+and finally returns.</p>
+<p>There are some interesting aspects to this. The most important one is
+that this routine eats all of the tokens that correspond to the
+production and returns the lexer buffer with the next token (which is
+not part of the grammar production) ready to go. This is a fairly
+standard way to go for recursive descent parsers. For a better example,
+the parenthesis operator is defined like this:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// parenexpr ::= '(' expression ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseParenExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat (.</span>
+  <span class="k">auto</span> <span class="n">V</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">V</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"expected ')'"</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat ).</span>
+  <span class="k">return</span> <span class="n">V</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This function illustrates a number of interesting things about the
+parser:</p>
+<p>1) It shows how we use the LogError routines. When called, this function
+expects that the current token is a ‘(‘ token, but after parsing the
+subexpression, it is possible that there is no ‘)’ waiting. For example,
+if the user types in “(4 x” instead of “(4)”, the parser should emit an
+error. Because errors can occur, the parser needs a way to indicate that
+they happened: in our parser, we return null on an error.</p>
+<p>2) Another interesting aspect of this function is that it uses recursion
+by calling <code class="docutils literal"><span class="pre">ParseExpression</span></code> (we will soon see that
+<code class="docutils literal"><span class="pre">ParseExpression</span></code> can call <code class="docutils literal"><span class="pre">ParseParenExpr</span></code>). This is powerful
+because it allows us to handle recursive grammars, and keeps each
+production very simple. Note that parentheses do not cause construction
+of AST nodes themselves. While we could do it this way, the most
+important role of parentheses are to guide the parser and provide
+grouping. Once the parser constructs the AST, parentheses are not
+needed.</p>
+<p>The next simple production is for handling variable references and
+function calls:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// identifierexpr</span>
+<span class="c1">///   ::= identifier</span>
+<span class="c1">///   ::= identifier '(' expression* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseIdentifierExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+
+  <span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat identifier.</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span> <span class="c1">// Simple variable ref.</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">VariableExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">);</span>
+
+  <span class="c1">// Call.</span>
+  <span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat (</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Arg</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+        <span class="n">Args</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Arg</span><span class="p">));</span>
+      <span class="k">else</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">==</span> <span class="sc">')'</span><span class="p">)</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">','</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"Expected ')' or ',' in argument list"</span><span class="p">);</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Eat the ')'.</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">CallExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This routine follows the same style as the other routines. (It expects
+to be called if the current token is a <code class="docutils literal"><span class="pre">tok_identifier</span></code> token). It
+also has recursion and error handling. One interesting aspect of this is
+that it uses <em>look-ahead</em> to determine if the current identifier is a
+stand alone variable reference or if it is a function call expression.
+It handles this by checking to see if the token after the identifier is
+a ‘(‘ token, constructing either a <code class="docutils literal"><span class="pre">VariableExprAST</span></code> or
+<code class="docutils literal"><span class="pre">CallExprAST</span></code> node as appropriate.</p>
+<p>Now that we have all of our simple expression-parsing logic in place, we
+can define a helper function to wrap it together into one entry point.
+We call this class of expressions “primary” expressions, for reasons
+that will become more clear <a class="reference external" href="LangImpl6.html#user-defined-unary-operators">later in the
+tutorial</a>. In order to parse an arbitrary
+primary expression, we need to determine what sort of expression it is:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// primary</span>
+<span class="c1">///   ::= identifierexpr</span>
+<span class="c1">///   ::= numberexpr</span>
+<span class="c1">///   ::= parenexpr</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParsePrimary</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">default</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"unknown token when expecting an expression"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="nl">tok_identifier</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseIdentifierExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="nl">tok_number</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseNumberExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="sc">'('</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">ParseParenExpr</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Now that you see the definition of this function, it is more obvious why
+we can assume the state of CurTok in the various functions. This uses
+look-ahead to determine which sort of expression is being inspected, and
+then parses it with a function call.</p>
+<p>Now that basic expressions are handled, we need to handle binary
+expressions. They are a bit more complex.</p>
+</div>
+<div class="section" id="binary-expression-parsing">
+<h2><a class="toc-backref" href="#id6">2.5. Binary Expression Parsing</a><a class="headerlink" href="#binary-expression-parsing" title="Permalink to this headline">¶</a></h2>
+<p>Binary expressions are significantly harder to parse because they are
+often ambiguous. For example, when given the string “x+y*z”, the parser
+can choose to parse it as either “(x+y)*z” or “x+(y*z)”. With common
+definitions from mathematics, we expect the later parse, because “*”
+(multiplication) has higher <em>precedence</em> than “+” (addition).</p>
+<p>There are many ways to handle this, but an elegant and efficient way is
+to use <a class="reference external" href="http://en.wikipedia.org/wiki/Operator-precedence_parser">Operator-Precedence
+Parsing</a>.
+This parsing technique uses the precedence of binary operators to guide
+recursion. To start with, we need a table of precedences:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// BinopPrecedence - This holds the precedence for each binary operator that is</span>
+<span class="c1">/// defined.</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">char</span><span class="p">,</span> <span class="kt">int</span><span class="o">></span> <span class="n">BinopPrecedence</span><span class="p">;</span>
+
+<span class="c1">/// GetTokPrecedence - Get the precedence of the pending binary operator token.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">GetTokPrecedence</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">isascii</span><span class="p">(</span><span class="n">CurTok</span><span class="p">))</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="c1">// Make sure it's a declared binop.</span>
+  <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">BinopPrecedence</span><span class="p">[</span><span class="n">CurTok</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="k">return</span> <span class="n">TokPrec</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Install standard binary operators.</span>
+  <span class="c1">// 1 is lowest precedence.</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'<'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'+'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'-'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'*'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>  <span class="c1">// highest.</span>
+  <span class="p">...</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>For the basic form of Kaleidoscope, we will only support 4 binary
+operators (this can obviously be extended by you, our brave and intrepid
+reader). The <code class="docutils literal"><span class="pre">GetTokPrecedence</span></code> function returns the precedence for
+the current token, or -1 if the token is not a binary operator. Having a
+map makes it easy to add new operators and makes it clear that the
+algorithm doesn’t depend on the specific operators involved, but it
+would be easy enough to eliminate the map and do the comparisons in the
+<code class="docutils literal"><span class="pre">GetTokPrecedence</span></code> function. (Or just use a fixed-size array).</p>
+<p>With the helper above defined, we can now start parsing binary
+expressions. The basic idea of operator precedence parsing is to break
+down an expression with potentially ambiguous binary operators into
+pieces. Consider, for example, the expression “a+b+(c+d)*e*f+g”.
+Operator precedence parsing considers this as a stream of primary
+expressions separated by binary operators. As such, it will first parse
+the leading primary expression “a”, then it will see the pairs [+, b]
+[+, (c+d)] [*, e] [*, f] and [+, g]. Note that because parentheses are
+primary expressions, the binary expression parser doesn’t need to worry
+about nested subexpressions like (c+d) at all.</p>
+<p>To start, an expression is a primary expression potentially followed by
+a sequence of [binop,primaryexpr] pairs:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// expression</span>
+<span class="c1">///   ::= primary binoprhs</span>
+<span class="c1">///</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseExpression</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">LHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">LHS</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="nf">ParseBinOpRHS</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p><code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code> is the function that parses the sequence of pairs for
+us. It takes a precedence and a pointer to an expression for the part
+that has been parsed so far. Note that “x” is a perfectly valid
+expression: As such, “binoprhs” is allowed to be empty, in which case it
+returns the expression that is passed into it. In our example above, the
+code passes the expression for “a” into <code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code> and the
+current token is “+”.</p>
+<p>The precedence value passed into <code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code> indicates the
+<em>minimal operator precedence</em> that the function is allowed to eat. For
+example, if the current pair stream is [+, x] and <code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code> is
+passed in a precedence of 40, it will not consume any tokens (because
+the precedence of ‘+’ is only 20). With this in mind, <code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code>
+starts with:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// binoprhs</span>
+<span class="c1">///   ::= ('+' primary)*</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="kt">int</span> <span class="n">ExprPrec</span><span class="p">,</span>
+                                              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// If this is a binop, find its precedence.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+
+    <span class="c1">// If this is a binop that binds at least as tightly as the current binop,</span>
+    <span class="c1">// consume it, otherwise we are done.</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">ExprPrec</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">LHS</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This code gets the precedence of the current token and checks to see if
+if is too low. Because we defined invalid tokens to have a precedence of
+-1, this check implicitly knows that the pair-stream ends when the token
+stream runs out of binary operators. If this check succeeds, we know
+that the token is a binary operator and that it will be included in this
+expression:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// Okay, we know this is a binop.</span>
+<span class="kt">int</span> <span class="n">BinOp</span> <span class="o">=</span> <span class="n">CurTok</span><span class="p">;</span>
+<span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat binop</span>
+
+<span class="c1">// Parse the primary expression after the binary operator.</span>
+<span class="k">auto</span> <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>As such, this code eats (and remembers) the binary operator and then
+parses the primary expression that follows. This builds up the whole
+pair, the first of which is [+, b] for the running example.</p>
+<p>Now that we parsed the left-hand side of an expression and one pair of
+the RHS sequence, we have to decide which way the expression associates.
+In particular, we could have “(a+b) binop unparsed” or “a + (b binop
+unparsed)”. To determine this, we look ahead at “binop” to determine its
+precedence and compare it to BinOp’s precedence (which is ‘+’ in this
+case):</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// If BinOp binds less tightly with RHS than the operator after RHS, let</span>
+<span class="c1">// the pending operator take RHS as its LHS.</span>
+<span class="kt">int</span> <span class="n">NextPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+<span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">NextPrec</span><span class="p">)</span> <span class="p">{</span>
+</pre></div>
+</div>
+<p>If the precedence of the binop to the right of “RHS” is lower or equal
+to the precedence of our current operator, then we know that the
+parentheses associate as “(a+b) binop ...”. In our example, the current
+operator is “+” and the next operator is “+”, we know that they have the
+same precedence. In this case we’ll create the AST node for “a+b”, and
+then continue parsing:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span>      <span class="p">...</span> <span class="k">if</span> <span class="n">body</span> <span class="n">omitted</span> <span class="p">...</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Merge LHS/RHS.</span>
+    <span class="n">LHS</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">BinaryExprAST</span><span class="o">></span><span class="p">(</span><span class="n">BinOp</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">),</span>
+                                           <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+  <span class="p">}</span>  <span class="c1">// loop around to the top of the while loop.</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In our example above, this will turn “a+b+” into “(a+b)” and execute the
+next iteration of the loop, with “+” as the current token. The code
+above will eat, remember, and parse “(c+d)” as the primary expression,
+which makes the current pair equal to [+, (c+d)]. It will then evaluate
+the ‘if’ conditional above with “*” as the binop to the right of the
+primary. In this case, the precedence of “*” is higher than the
+precedence of “+” so the if condition will be entered.</p>
+<p>The critical question left here is “how can the if condition parse the
+right hand side in full”? In particular, to build the AST correctly for
+our example, it needs to get all of “(c+d)*e*f” as the RHS expression
+variable. The code to do this is surprisingly simple (code from the
+above two blocks duplicated for context):</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span>    <span class="c1">// If BinOp binds less tightly with RHS than the operator after RHS, let</span>
+    <span class="c1">// the pending operator take RHS as its LHS.</span>
+    <span class="kt">int</span> <span class="n">NextPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">NextPrec</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="n">TokPrec</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="c1">// Merge LHS/RHS.</span>
+    <span class="n">LHS</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">BinaryExprAST</span><span class="o">></span><span class="p">(</span><span class="n">BinOp</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">),</span>
+                                           <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+  <span class="p">}</span>  <span class="c1">// loop around to the top of the while loop.</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>At this point, we know that the binary operator to the RHS of our
+primary has higher precedence than the binop we are currently parsing.
+As such, we know that any sequence of pairs whose operators are all
+higher precedence than “+” should be parsed together and returned as
+“RHS”. To do this, we recursively invoke the <code class="docutils literal"><span class="pre">ParseBinOpRHS</span></code> function
+specifying “TokPrec+1” as the minimum precedence required for it to
+continue. In our example above, this will cause it to return the AST
+node for “(c+d)*e*f” as RHS, which is then set as the RHS of the ‘+’
+expression.</p>
+<p>Finally, on the next iteration of the while loop, the “+g” piece is
+parsed and added to the AST. With this little bit of code (14
+non-trivial lines), we correctly handle fully general binary expression
+parsing in a very elegant way. This was a whirlwind tour of this code,
+and it is somewhat subtle. I recommend running through it with a few
+tough examples to see how it works.</p>
+<p>This wraps up handling of expressions. At this point, we can point the
+parser at an arbitrary token stream and build an expression from it,
+stopping at the first token that is not part of the expression. Next up
+we need to handle function definitions, etc.</p>
+</div>
+<div class="section" id="parsing-the-rest">
+<h2><a class="toc-backref" href="#id7">2.6. Parsing the Rest</a><a class="headerlink" href="#parsing-the-rest" title="Permalink to this headline">¶</a></h2>
+<p>The next thing missing is handling of function prototypes. In
+Kaleidoscope, these are used both for ‘extern’ function declarations as
+well as function body definitions. The code to do this is
+straight-forward and not very interesting (once you’ve survived
+expressions):</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// prototype</span>
+<span class="c1">///   ::= id '(' id* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParsePrototype</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected function name in prototype"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">FnName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected '(' in prototype"</span><span class="p">);</span>
+
+  <span class="c1">// Read the list of argument names.</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">ArgNames</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">getNextToken</span><span class="p">()</span> <span class="o">==</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="n">ArgNames</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">IdentifierStr</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected ')' in prototype"</span><span class="p">);</span>
+
+  <span class="c1">// success.</span>
+  <span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat ')'.</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="n">FnName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">ArgNames</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Given this, a function definition is very simple, just a prototype plus
+an expression to implement the body:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// definition ::= 'def' prototype expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseDefinition</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat def.</span>
+  <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">ParsePrototype</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">Proto</span><span class="p">)</span> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In addition, we support ‘extern’ to declare functions like ‘sin’ and
+‘cos’ as well as to support forward declaration of user functions. These
+‘extern’s are just prototypes with no body:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// external ::= 'extern' prototype</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParseExtern</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span>  <span class="c1">// eat extern.</span>
+  <span class="k">return</span> <span class="nf">ParsePrototype</span><span class="p">();</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Finally, we’ll also let the user type in arbitrary top-level expressions
+and evaluate them on the fly. We will handle this by defining anonymous
+nullary (zero argument) functions for them:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// toplevelexpr ::= expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseTopLevelExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span> <span class="p">{</span>
+    <span class="c1">// Make an anonymous proto.</span>
+    <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="s">""</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">());</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Now that we have all the pieces, let’s build a little driver that will
+let us actually <em>execute</em> this code we’ve built!</p>
+</div>
+<div class="section" id="the-driver">
+<h2><a class="toc-backref" href="#id8">2.7. The Driver</a><a class="headerlink" href="#the-driver" title="Permalink to this headline">¶</a></h2>
+<p>The driver for this simply invokes all of the parsing pieces with a
+top-level dispatch loop. There isn’t much interesting here, so I’ll just
+include the top-level loop. See <a class="reference external" href="#full-code-listing">below</a> for full code in the
+“Top-Level Parsing” section.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// top ::= definition | external | expression | ';'</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">MainLoop</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"ready> "</span><span class="p">);</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="nl">tok_eof</span><span class="p">:</span>
+      <span class="k">return</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">';'</span><span class="o">:</span> <span class="c1">// ignore top-level semicolons.</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_def</span><span class="p">:</span>
+      <span class="n">HandleDefinition</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_extern</span><span class="p">:</span>
+      <span class="n">HandleExtern</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">default</span><span class="o">:</span>
+      <span class="n">HandleTopLevelExpression</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The most interesting part of this is that we ignore top-level
+semicolons. Why is this, you ask? The basic reason is that if you type
+“4 + 5” at the command line, the parser doesn’t know whether that is the
+end of what you will type or not. For example, on the next line you
+could type “def foo...” in which case 4+5 is the end of a top-level
+expression. Alternatively you could type “* 6”, which would continue
+the expression. Having top-level semicolons allows you to type “4+5;”,
+and the parser will know you are done.</p>
+</div>
+<div class="section" id="conclusions">
+<h2><a class="toc-backref" href="#id9">2.8. Conclusions</a><a class="headerlink" href="#conclusions" title="Permalink to this headline">¶</a></h2>
+<p>With just under 400 lines of commented code (240 lines of non-comment,
+non-blank code), we fully defined our minimal language, including a
+lexer, parser, and AST builder. With this done, the executable will
+validate Kaleidoscope code and tell us if it is grammatically invalid.
+For example, here is a sample interaction:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span>$ ./a.out
+ready> def foo<span class="o">(</span>x y<span class="o">)</span> x+foo<span class="o">(</span>y, <span class="m">4</span>.0<span class="o">)</span><span class="p">;</span>
+Parsed a <span class="k">function</span> definition.
+ready> def foo<span class="o">(</span>x y<span class="o">)</span> x+y y<span class="p">;</span>
+Parsed a <span class="k">function</span> definition.
+Parsed a top-level expr
+ready> def foo<span class="o">(</span>x y<span class="o">)</span> x+y <span class="o">)</span><span class="p">;</span>
+Parsed a <span class="k">function</span> definition.
+Error: unknown token when expecting an expression
+ready> extern sin<span class="o">(</span>a<span class="o">)</span><span class="p">;</span>
+ready> Parsed an extern
+ready> ^D
+$
+</pre></div>
+</div>
+<p>There is a lot of room for extension here. You can define new AST nodes,
+extend the language in many ways, etc. In the <a class="reference external" href="LangImpl03.html">next
+installment</a>, we will describe how to generate LLVM
+Intermediate Representation (IR) from the AST.</p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id10">2.9. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for this and the previous chapter.
+Note that it is fully self-contained: you don’t need LLVM or any
+external libraries at all for this. (Besides the C and C++ standard
+libraries, of course.) To build this, just compile with:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g -O3 toy.cpp
+<span class="c1"># Run</span>
+./a.out
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cctype></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdio></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdlib></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><map></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Lexer</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="c1">// The lexer returns tokens [0-255] if it is an unknown character, otherwise one</span>
+<span class="c1">// of these for known things.</span>
+<span class="k">enum</span> <span class="n">Token</span> <span class="p">{</span>
+  <span class="n">tok_eof</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+
+  <span class="c1">// commands</span>
+  <span class="n">tok_def</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
+  <span class="n">tok_extern</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span>
+
+  <span class="c1">// primary</span>
+  <span class="n">tok_identifier</span> <span class="o">=</span> <span class="o">-</span><span class="mi">4</span><span class="p">,</span>
+  <span class="n">tok_number</span> <span class="o">=</span> <span class="o">-</span><span class="mi">5</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdentifierStr</span><span class="p">;</span> <span class="c1">// Filled in if tok_identifier</span>
+<span class="k">static</span> <span class="kt">double</span> <span class="n">NumVal</span><span class="p">;</span>             <span class="c1">// Filled in if tok_number</span>
+
+<span class="c1">/// gettok - Return the next token from standard input.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">gettok</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">static</span> <span class="kt">int</span> <span class="n">LastChar</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span>
+
+  <span class="c1">// Skip any whitespace.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">isspace</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span>
+    <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">isalpha</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// identifier: [a-zA-Z][a-zA-Z0-9]*</span>
+    <span class="n">IdentifierStr</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">isalnum</span><span class="p">((</span><span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">())))</span>
+      <span class="n">IdentifierStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"def"</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">tok_def</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"extern"</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">tok_extern</span><span class="p">;</span>
+    <span class="k">return</span> <span class="n">tok_identifier</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Number: [0-9.]+</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">NumStr</span><span class="p">;</span>
+    <span class="k">do</span> <span class="p">{</span>
+      <span class="n">NumStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+      <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+    <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">);</span>
+
+    <span class="n">NumVal</span> <span class="o">=</span> <span class="n">strtod</span><span class="p">(</span><span class="n">NumStr</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="k">nullptr</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">tok_number</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'#'</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Comment until end of line.</span>
+    <span class="k">do</span>
+      <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\n'</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\r'</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">gettok</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Check for end of file.  Don't eat the EOF.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="n">EOF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">tok_eof</span><span class="p">;</span>
+
+  <span class="c1">// Otherwise, just return the character as its ascii value.</span>
+  <span class="kt">int</span> <span class="n">ThisChar</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+  <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+  <span class="k">return</span> <span class="n">ThisChar</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Abstract Syntax Tree (aka Parse Tree)</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+<span class="c1">/// ExprAST - Base class for all expression nodes.</span>
+<span class="k">class</span> <span class="nc">ExprAST</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">virtual</span> <span class="o">~</span><span class="n">ExprAST</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// NumberExprAST - Expression class for numeric literals like "1.0".</span>
+<span class="k">class</span> <span class="nc">NumberExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">double</span> <span class="n">Val</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">NumberExprAST</span><span class="p">(</span><span class="kt">double</span> <span class="n">Val</span><span class="p">)</span> <span class="o">:</span> <span class="n">Val</span><span class="p">(</span><span class="n">Val</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// VariableExprAST - Expression class for referencing a variable, like "a".</span>
+<span class="k">class</span> <span class="nc">VariableExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">VariableExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">Name</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// BinaryExprAST - Expression class for a binary operator.</span>
+<span class="k">class</span> <span class="nc">BinaryExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="n">Op</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span> <span class="n">RHS</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">BinaryExprAST</span><span class="p">(</span><span class="kt">char</span> <span class="n">Op</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span>
+                <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">RHS</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Op</span><span class="p">(</span><span class="n">Op</span><span class="p">),</span> <span class="n">LHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">)),</span> <span class="n">RHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// CallExprAST - Expression class for function calls.</span>
+<span class="k">class</span> <span class="nc">CallExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Callee</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">CallExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Callee</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Callee</span><span class="p">(</span><span class="n">Callee</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="c1">/// PrototypeAST - This class represents the "prototype" for a function,</span>
+<span class="c1">/// which captures its name, and its argument names (thus implicitly the number</span>
+<span class="c1">/// of arguments the function takes).</span>
+<span class="k">class</span> <span class="nc">PrototypeAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">PrototypeAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">Name</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">getName</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">Name</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="c1">/// FunctionAST - This class represents a function definition itself.</span>
+<span class="k">class</span> <span class="nc">FunctionAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">FunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Proto</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">)),</span> <span class="n">Body</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Body</span><span class="p">))</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end anonymous namespace</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Parser</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="c1">/// CurTok/getNextToken - Provide a simple token buffer.  CurTok is the current</span>
+<span class="c1">/// token the parser is looking at.  getNextToken reads another token from the</span>
+<span class="c1">/// lexer and updates CurTok with its results.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="n">CurTok</span><span class="p">;</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">getNextToken</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">CurTok</span> <span class="o">=</span> <span class="n">gettok</span><span class="p">();</span> <span class="p">}</span>
+
+<span class="c1">/// BinopPrecedence - This holds the precedence for each binary operator that is</span>
+<span class="c1">/// defined.</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">char</span><span class="p">,</span> <span class="kt">int</span><span class="o">></span> <span class="n">BinopPrecedence</span><span class="p">;</span>
+
+<span class="c1">/// GetTokPrecedence - Get the precedence of the pending binary operator token.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">GetTokPrecedence</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">isascii</span><span class="p">(</span><span class="n">CurTok</span><span class="p">))</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="c1">// Make sure it's a declared binop.</span>
+  <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">BinopPrecedence</span><span class="p">[</span><span class="n">CurTok</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="k">return</span> <span class="n">TokPrec</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// LogError* - These are little helper functions for error handling.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LogError</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Error: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">LogErrorP</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">LogError</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseExpression</span><span class="p">();</span>
+
+<span class="c1">/// numberexpr ::= number</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseNumberExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">Result</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">NumberExprAST</span><span class="o">></span><span class="p">(</span><span class="n">NumVal</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// consume the number</span>
+  <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Result</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">/// parenexpr ::= '(' expression ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseParenExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat (.</span>
+  <span class="k">auto</span> <span class="n">V</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">V</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"expected ')'"</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat ).</span>
+  <span class="k">return</span> <span class="n">V</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// identifierexpr</span>
+<span class="c1">///   ::= identifier</span>
+<span class="c1">///   ::= identifier '(' expression* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseIdentifierExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat identifier.</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span> <span class="c1">// Simple variable ref.</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">VariableExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">);</span>
+
+  <span class="c1">// Call.</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat (</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Arg</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+        <span class="n">Args</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Arg</span><span class="p">));</span>
+      <span class="k">else</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">==</span> <span class="sc">')'</span><span class="p">)</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">','</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"Expected ')' or ',' in argument list"</span><span class="p">);</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Eat the ')'.</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">CallExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// primary</span>
+<span class="c1">///   ::= identifierexpr</span>
+<span class="c1">///   ::= numberexpr</span>
+<span class="c1">///   ::= parenexpr</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParsePrimary</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">default</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"unknown token when expecting an expression"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="nl">tok_identifier</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseIdentifierExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="nl">tok_number</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseNumberExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="sc">'('</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">ParseParenExpr</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// binoprhs</span>
+<span class="c1">///   ::= ('+' primary)*</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="kt">int</span> <span class="n">ExprPrec</span><span class="p">,</span>
+                                              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// If this is a binop, find its precedence.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+
+    <span class="c1">// If this is a binop that binds at least as tightly as the current binop,</span>
+    <span class="c1">// consume it, otherwise we are done.</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">ExprPrec</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">LHS</span><span class="p">;</span>
+
+    <span class="c1">// Okay, we know this is a binop.</span>
+    <span class="kt">int</span> <span class="n">BinOp</span> <span class="o">=</span> <span class="n">CurTok</span><span class="p">;</span>
+    <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat binop</span>
+
+    <span class="c1">// Parse the primary expression after the binary operator.</span>
+    <span class="k">auto</span> <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+      <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+    <span class="c1">// If BinOp binds less tightly with RHS than the operator after RHS, let</span>
+    <span class="c1">// the pending operator take RHS as its LHS.</span>
+    <span class="kt">int</span> <span class="n">NextPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">NextPrec</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="n">TokPrec</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Merge LHS/RHS.</span>
+    <span class="n">LHS</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">BinaryExprAST</span><span class="o">></span><span class="p">(</span><span class="n">BinOp</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">),</span>
+                                           <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// expression</span>
+<span class="c1">///   ::= primary binoprhs</span>
+<span class="c1">///</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseExpression</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">LHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">LHS</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="nf">ParseBinOpRHS</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// prototype</span>
+<span class="c1">///   ::= id '(' id* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParsePrototype</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected function name in prototype"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">FnName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected '(' in prototype"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">ArgNames</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">getNextToken</span><span class="p">()</span> <span class="o">==</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="n">ArgNames</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">IdentifierStr</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected ')' in prototype"</span><span class="p">);</span>
+
+  <span class="c1">// success.</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat ')'.</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="n">FnName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">ArgNames</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// definition ::= 'def' prototype expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseDefinition</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat def.</span>
+  <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">ParsePrototype</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">Proto</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// toplevelexpr ::= expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseTopLevelExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span> <span class="p">{</span>
+    <span class="c1">// Make an anonymous proto.</span>
+    <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="s">"__anon_expr"</span><span class="p">,</span>
+                                                 <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">());</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// external ::= 'extern' prototype</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParseExtern</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat extern.</span>
+  <span class="k">return</span> <span class="nf">ParsePrototype</span><span class="p">();</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Top-Level parsing</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleDefinition</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">ParseDefinition</span><span class="p">())</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Parsed a function definition.</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleExtern</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">ParseExtern</span><span class="p">())</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Parsed an extern</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleTopLevelExpression</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Evaluate a top-level expression into an anonymous function.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">ParseTopLevelExpr</span><span class="p">())</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Parsed a top-level expr</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// top ::= definition | external | expression | ';'</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">MainLoop</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"ready> "</span><span class="p">);</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="nl">tok_eof</span><span class="p">:</span>
+      <span class="k">return</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">';'</span><span class="o">:</span> <span class="c1">// ignore top-level semicolons.</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_def</span><span class="p">:</span>
+      <span class="n">HandleDefinition</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_extern</span><span class="p">:</span>
+      <span class="n">HandleExtern</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">default</span><span class="o">:</span>
+      <span class="n">HandleTopLevelExpression</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Main driver code.</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Install standard binary operators.</span>
+  <span class="c1">// 1 is lowest precedence.</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'<'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'+'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'-'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'*'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span> <span class="c1">// highest.</span>
+
+  <span class="c1">// Prime the first token.</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"ready> "</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="c1">// Run the main "interpreter loop" now.</span>
+  <span class="n">MainLoop</span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p><a class="reference external" href="LangImpl03.html">Next: Implementing Code Generation to LLVM IR</a></p>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="LangImpl03.html" title="3. Kaleidoscope: Code generation to LLVM IR"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="LangImpl01.html" title="1. Kaleidoscope: Tutorial Introduction and the Lexer"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/6.0.0/docs/tutorial/LangImpl03.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/6.0.0/docs/tutorial/LangImpl03.html?rev=326992&view=auto
==============================================================================
--- www-releases/trunk/6.0.0/docs/tutorial/LangImpl03.html (added)
+++ www-releases/trunk/6.0.0/docs/tutorial/LangImpl03.html Thu Mar  8 02:24:44 2018
@@ -0,0 +1,1215 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>3. Kaleidoscope: Code generation to LLVM IR — LLVM 6 documentation</title>
+    
+    <link rel="stylesheet" href="../_static/llvm-theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '6',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true,
+        SOURCELINK_SUFFIX: '.txt'
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="4. Kaleidoscope: Adding JIT and Optimizer Support" href="LangImpl04.html" />
+    <link rel="prev" title="2. Kaleidoscope: Implementing a Parser and AST" href="LangImpl02.html" />
+<style type="text/css">
+  table.right { float: right; margin-left: 20px; }
+  table.right td { border: 1px solid #ccc; }
+</style>
+
+  </head>
+  <body role="document">
+<div class="logo">
+  <a href="../index.html">
+    <img src="../_static/logo.png"
+         alt="LLVM Logo" width="250" height="88"/></a>
+</div>
+
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="LangImpl04.html" title="4. Kaleidoscope: Adding JIT and Optimizer Support"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="LangImpl02.html" title="2. Kaleidoscope: Implementing a Parser and AST"
+             accesskey="P">previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+
+
+    <div class="document">
+      <div class="documentwrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="kaleidoscope-code-generation-to-llvm-ir">
+<h1>3. Kaleidoscope: Code generation to LLVM IR<a class="headerlink" href="#kaleidoscope-code-generation-to-llvm-ir" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#chapter-3-introduction" id="id1">Chapter 3 Introduction</a></li>
+<li><a class="reference internal" href="#code-generation-setup" id="id2">Code Generation Setup</a></li>
+<li><a class="reference internal" href="#expression-code-generation" id="id3">Expression Code Generation</a></li>
+<li><a class="reference internal" href="#function-code-generation" id="id4">Function Code Generation</a></li>
+<li><a class="reference internal" href="#driver-changes-and-closing-thoughts" id="id5">Driver Changes and Closing Thoughts</a></li>
+<li><a class="reference internal" href="#full-code-listing" id="id6">Full Code Listing</a></li>
+</ul>
+</div>
+<div class="section" id="chapter-3-introduction">
+<h2><a class="toc-backref" href="#id1">3.1. Chapter 3 Introduction</a><a class="headerlink" href="#chapter-3-introduction" title="Permalink to this headline">¶</a></h2>
+<p>Welcome to Chapter 3 of the “<a class="reference external" href="index.html">Implementing a language with
+LLVM</a>” tutorial. This chapter shows you how to transform
+the <a class="reference external" href="LangImpl02.html">Abstract Syntax Tree</a>, built in Chapter 2, into
+LLVM IR. This will teach you a little bit about how LLVM does things, as
+well as demonstrate how easy it is to use. It’s much more work to build
+a lexer and parser than it is to generate LLVM IR code. :)</p>
+<p><strong>Please note</strong>: the code in this chapter and later require LLVM 3.7 or
+later. LLVM 3.6 and before will not work with it. Also note that you
+need to use a version of this tutorial that matches your LLVM release:
+If you are using an official LLVM release, use the version of the
+documentation included with your release or on the <a class="reference external" href="http://llvm.org/releases/">llvm.org releases
+page</a>.</p>
+</div>
+<div class="section" id="code-generation-setup">
+<h2><a class="toc-backref" href="#id2">3.2. Code Generation Setup</a><a class="headerlink" href="#code-generation-setup" title="Permalink to this headline">¶</a></h2>
+<p>In order to generate LLVM IR, we want some simple setup to get started.
+First we define virtual code generation (codegen) methods in each AST
+class:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">/// ExprAST - Base class for all expression nodes.</span>
+<span class="k">class</span> <span class="nc">ExprAST</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">virtual</span> <span class="o">~</span><span class="n">ExprAST</span><span class="p">()</span> <span class="p">{}</span>
+  <span class="k">virtual</span> <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">()</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// NumberExprAST - Expression class for numeric literals like "1.0".</span>
+<span class="k">class</span> <span class="nc">NumberExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">double</span> <span class="n">Val</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">NumberExprAST</span><span class="p">(</span><span class="kt">double</span> <span class="n">Val</span><span class="p">)</span> <span class="o">:</span> <span class="n">Val</span><span class="p">(</span><span class="n">Val</span><span class="p">)</span> <span class="p">{}</span>
+  <span class="k">virtual</span> <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">();</span>
+<span class="p">};</span>
+<span class="p">...</span>
+</pre></div>
+</div>
+<p>The codegen() method says to emit IR for that AST node along with all
+the things it depends on, and they all return an LLVM Value object.
+“Value” is the class used to represent a “<a class="reference external" href="http://en.wikipedia.org/wiki/Static_single_assignment_form">Static Single Assignment
+(SSA)</a>
+register” or “SSA value” in LLVM. The most distinct aspect of SSA values
+is that their value is computed as the related instruction executes, and
+it does not get a new value until (and if) the instruction re-executes.
+In other words, there is no way to “change” an SSA value. For more
+information, please read up on <a class="reference external" href="http://en.wikipedia.org/wiki/Static_single_assignment_form">Static Single
+Assignment</a>
+- the concepts are really quite natural once you grok them.</p>
+<p>Note that instead of adding virtual methods to the ExprAST class
+hierarchy, it could also make sense to use a <a class="reference external" href="http://en.wikipedia.org/wiki/Visitor_pattern">visitor
+pattern</a> or some other
+way to model this. Again, this tutorial won’t dwell on good software
+engineering practices: for our purposes, adding a virtual method is
+simplest.</p>
+<p>The second thing we want is an “LogError” method like we used for the
+parser, which will be used to report errors found during code generation
+(for example, use of an undeclared parameter):</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">LLVMContext</span> <span class="n">TheContext</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">IRBuilder</span><span class="o"><></span> <span class="n">Builder</span><span class="p">(</span><span class="n">TheContext</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">TheModule</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">Value</span> <span class="o">*></span> <span class="n">NamedValues</span><span class="p">;</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="nf">LogErrorV</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">LogError</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The static variables will be used during code generation. <code class="docutils literal"><span class="pre">TheContext</span></code>
+is an opaque object that owns a lot of core LLVM data structures, such as
+the type and constant value tables. We don’t need to understand it in
+detail, we just need a single instance to pass into APIs that require it.</p>
+<p>The <code class="docutils literal"><span class="pre">Builder</span></code> object is a helper object that makes it easy to generate
+LLVM instructions. Instances of the
+<a class="reference external" href="http://llvm.org/doxygen/IRBuilder_8h-source.html">IRBuilder</a>
+class template keep track of the current place to insert instructions
+and has methods to create new instructions.</p>
+<p><code class="docutils literal"><span class="pre">TheModule</span></code> is an LLVM construct that contains functions and global
+variables. In many ways, it is the top-level structure that the LLVM IR
+uses to contain code. It will own the memory for all of the IR that we
+generate, which is why the codegen() method returns a raw Value*,
+rather than a unique_ptr<Value>.</p>
+<p>The <code class="docutils literal"><span class="pre">NamedValues</span></code> map keeps track of which values are defined in the
+current scope and what their LLVM representation is. (In other words, it
+is a symbol table for the code). In this form of Kaleidoscope, the only
+things that can be referenced are function parameters. As such, function
+parameters will be in this map when generating code for their function
+body.</p>
+<p>With these basics in place, we can start talking about how to generate
+code for each expression. Note that this assumes that the <code class="docutils literal"><span class="pre">Builder</span></code>
+has been set up to generate code <em>into</em> something. For now, we’ll assume
+that this has already been done, and we’ll just use it to emit code.</p>
+</div>
+<div class="section" id="expression-code-generation">
+<h2><a class="toc-backref" href="#id3">3.3. Expression Code Generation</a><a class="headerlink" href="#expression-code-generation" title="Permalink to this headline">¶</a></h2>
+<p>Generating LLVM code for expression nodes is very straightforward: less
+than 45 lines of commented code for all four of our expression nodes.
+First we’ll do numeric literals:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Value</span> <span class="o">*</span><span class="n">NumberExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">return</span> <span class="n">ConstantFP</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">TheContext</span><span class="p">,</span> <span class="n">APFloat</span><span class="p">(</span><span class="n">Val</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In the LLVM IR, numeric constants are represented with the
+<code class="docutils literal"><span class="pre">ConstantFP</span></code> class, which holds the numeric value in an <code class="docutils literal"><span class="pre">APFloat</span></code>
+internally (<code class="docutils literal"><span class="pre">APFloat</span></code> has the capability of holding floating point
+constants of Arbitrary Precision). This code basically just creates
+and returns a <code class="docutils literal"><span class="pre">ConstantFP</span></code>. Note that in the LLVM IR that constants
+are all uniqued together and shared. For this reason, the API uses the
+“foo::get(...)” idiom instead of “new foo(..)” or “foo::Create(..)”.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Value</span> <span class="o">*</span><span class="n">VariableExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Look this variable up in the function.</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">V</span> <span class="o">=</span> <span class="n">NamedValues</span><span class="p">[</span><span class="n">Name</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">V</span><span class="p">)</span>
+    <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Unknown variable name"</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">V</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>References to variables are also quite simple using LLVM. In the simple
+version of Kaleidoscope, we assume that the variable has already been
+emitted somewhere and its value is available. In practice, the only
+values that can be in the <code class="docutils literal"><span class="pre">NamedValues</span></code> map are function arguments.
+This code simply checks to see that the specified name is in the map (if
+not, an unknown variable is being referenced) and returns the value for
+it. In future chapters, we’ll add support for <a class="reference external" href="LangImpl5.html#for-loop-expression">loop induction
+variables</a> in the symbol table, and for <a class="reference external" href="LangImpl7.html#user-defined-local-variables">local
+variables</a>.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Value</span> <span class="o">*</span><span class="n">BinaryExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">L</span> <span class="o">=</span> <span class="n">LHS</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">R</span> <span class="o">=</span> <span class="n">RHS</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">L</span> <span class="o">||</span> <span class="o">!</span><span class="n">R</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">Op</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="sc">'+'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFAdd</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"addtmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'-'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFSub</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"subtmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'*'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFMul</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"multmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'<'</span><span class="o">:</span>
+    <span class="n">L</span> <span class="o">=</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFCmpULT</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"cmptmp"</span><span class="p">);</span>
+    <span class="c1">// Convert bool 0/1 to double 0.0 or 1.0</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateUIToFP</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">),</span>
+                                <span class="s">"booltmp"</span><span class="p">);</span>
+  <span class="k">default</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"invalid binary operator"</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Binary operators start to get more interesting. The basic idea here is
+that we recursively emit code for the left-hand side of the expression,
+then the right-hand side, then we compute the result of the binary
+expression. In this code, we do a simple switch on the opcode to create
+the right LLVM instruction.</p>
+<p>In the example above, the LLVM builder class is starting to show its
+value. IRBuilder knows where to insert the newly created instruction,
+all you have to do is specify what instruction to create (e.g. with
+<code class="docutils literal"><span class="pre">CreateFAdd</span></code>), which operands to use (<code class="docutils literal"><span class="pre">L</span></code> and <code class="docutils literal"><span class="pre">R</span></code> here) and
+optionally provide a name for the generated instruction.</p>
+<p>One nice thing about LLVM is that the name is just a hint. For instance,
+if the code above emits multiple “addtmp” variables, LLVM will
+automatically provide each one with an increasing, unique numeric
+suffix. Local value names for instructions are purely optional, but it
+makes it much easier to read the IR dumps.</p>
+<p><a class="reference external" href="../LangRef.html#instruction-reference">LLVM instructions</a> are constrained by strict
+rules: for example, the Left and Right operators of an <a class="reference external" href="../LangRef.html#add-instruction">add
+instruction</a> must have the same type, and the
+result type of the add must match the operand types. Because all values
+in Kaleidoscope are doubles, this makes for very simple code for add,
+sub and mul.</p>
+<p>On the other hand, LLVM specifies that the <a class="reference external" href="../LangRef.html#fcmp-instruction">fcmp
+instruction</a> always returns an ‘i1’ value (a
+one bit integer). The problem with this is that Kaleidoscope wants the
+value to be a 0.0 or 1.0 value. In order to get these semantics, we
+combine the fcmp instruction with a <a class="reference external" href="../LangRef.html#uitofp-to-instruction">uitofp
+instruction</a>. This instruction converts its
+input integer into a floating point value by treating the input as an
+unsigned value. In contrast, if we used the <a class="reference external" href="../LangRef.html#sitofp-to-instruction">sitofp
+instruction</a>, the Kaleidoscope ‘<’ operator
+would return 0.0 and -1.0, depending on the input value.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Value</span> <span class="o">*</span><span class="n">CallExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Look up the name in the global module table.</span>
+  <span class="n">Function</span> <span class="o">*</span><span class="n">CalleeF</span> <span class="o">=</span> <span class="n">TheModule</span><span class="o">-></span><span class="n">getFunction</span><span class="p">(</span><span class="n">Callee</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">CalleeF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Unknown function referenced"</span><span class="p">);</span>
+
+  <span class="c1">// If argument mismatch error.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CalleeF</span><span class="o">-></span><span class="n">arg_size</span><span class="p">()</span> <span class="o">!=</span> <span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Incorrect # arguments passed"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">Value</span> <span class="o">*></span> <span class="n">ArgsV</span><span class="p">;</span>
+  <span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">e</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">ArgsV</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">Args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-></span><span class="n">codegen</span><span class="p">());</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ArgsV</span><span class="p">.</span><span class="n">back</span><span class="p">())</span>
+      <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateCall</span><span class="p">(</span><span class="n">CalleeF</span><span class="p">,</span> <span class="n">ArgsV</span><span class="p">,</span> <span class="s">"calltmp"</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Code generation for function calls is quite straightforward with LLVM. The code
+above initially does a function name lookup in the LLVM Module’s symbol table.
+Recall that the LLVM Module is the container that holds the functions we are
+JIT’ing. By giving each function the same name as what the user specifies, we
+can use the LLVM symbol table to resolve function names for us.</p>
+<p>Once we have the function to call, we recursively codegen each argument
+that is to be passed in, and create an LLVM <a class="reference external" href="../LangRef.html#call-instruction">call
+instruction</a>. Note that LLVM uses the native C
+calling conventions by default, allowing these calls to also call into
+standard library functions like “sin” and “cos”, with no additional
+effort.</p>
+<p>This wraps up our handling of the four basic expressions that we have so
+far in Kaleidoscope. Feel free to go in and add some more. For example,
+by browsing the <a class="reference external" href="../LangRef.html">LLVM language reference</a> you’ll find
+several other interesting instructions that are really easy to plug into
+our basic framework.</p>
+</div>
+<div class="section" id="function-code-generation">
+<h2><a class="toc-backref" href="#id4">3.4. Function Code Generation</a><a class="headerlink" href="#function-code-generation" title="Permalink to this headline">¶</a></h2>
+<p>Code generation for prototypes and functions must handle a number of
+details, which make their code less beautiful than expression code
+generation, but allows us to illustrate some important points. First,
+lets talk about code generation for prototypes: they are used both for
+function bodies and external function declarations. The code starts
+with:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Function</span> <span class="o">*</span><span class="n">PrototypeAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Make the function type:  double(double,double) etc.</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">Type</span><span class="o">*></span> <span class="n">Doubles</span><span class="p">(</span><span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span>
+                             <span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">));</span>
+  <span class="n">FunctionType</span> <span class="o">*</span><span class="n">FT</span> <span class="o">=</span>
+    <span class="n">FunctionType</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">),</span> <span class="n">Doubles</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+
+  <span class="n">Function</span> <span class="o">*</span><span class="n">F</span> <span class="o">=</span>
+    <span class="n">Function</span><span class="o">::</span><span class="n">Create</span><span class="p">(</span><span class="n">FT</span><span class="p">,</span> <span class="n">Function</span><span class="o">::</span><span class="n">ExternalLinkage</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">TheModule</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>This code packs a lot of power into a few lines. Note first that this
+function returns a “Function*” instead of a “Value*”. Because a
+“prototype” really talks about the external interface for a function
+(not the value computed by an expression), it makes sense for it to
+return the LLVM Function it corresponds to when codegen’d.</p>
+<p>The call to <code class="docutils literal"><span class="pre">FunctionType::get</span></code> creates the <code class="docutils literal"><span class="pre">FunctionType</span></code> that
+should be used for a given Prototype. Since all function arguments in
+Kaleidoscope are of type double, the first line creates a vector of “N”
+LLVM double types. It then uses the <code class="docutils literal"><span class="pre">Functiontype::get</span></code> method to
+create a function type that takes “N” doubles as arguments, returns one
+double as a result, and that is not vararg (the false parameter
+indicates this). Note that Types in LLVM are uniqued just like Constants
+are, so you don’t “new” a type, you “get” it.</p>
+<p>The final line above actually creates the IR Function corresponding to
+the Prototype. This indicates the type, linkage and name to use, as
+well as which module to insert into. “<a class="reference external" href="../LangRef.html#linkage">external
+linkage</a>” means that the function may be
+defined outside the current module and/or that it is callable by
+functions outside the module. The Name passed in is the name the user
+specified: since “<code class="docutils literal"><span class="pre">TheModule</span></code>” is specified, this name is registered
+in “<code class="docutils literal"><span class="pre">TheModule</span></code>“s symbol table.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// Set names for all arguments.</span>
+<span class="kt">unsigned</span> <span class="n">Idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">Arg</span> <span class="p">:</span> <span class="n">F</span><span class="o">-></span><span class="n">args</span><span class="p">())</span>
+  <span class="n">Arg</span><span class="p">.</span><span class="n">setName</span><span class="p">(</span><span class="n">Args</span><span class="p">[</span><span class="n">Idx</span><span class="o">++</span><span class="p">]);</span>
+
+<span class="k">return</span> <span class="n">F</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Finally, we set the name of each of the function’s arguments according to the
+names given in the Prototype. This step isn’t strictly necessary, but keeping
+the names consistent makes the IR more readable, and allows subsequent code to
+refer directly to the arguments for their names, rather than having to look up
+them up in the Prototype AST.</p>
+<p>At this point we have a function prototype with no body. This is how LLVM IR
+represents function declarations. For extern statements in Kaleidoscope, this
+is as far as we need to go. For function definitions however, we need to
+codegen and attach a function body.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">Function</span> <span class="o">*</span><span class="n">FunctionAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+    <span class="c1">// First, check for an existing function from a previous 'extern' declaration.</span>
+  <span class="n">Function</span> <span class="o">*</span><span class="n">TheFunction</span> <span class="o">=</span> <span class="n">TheModule</span><span class="o">-></span><span class="n">getFunction</span><span class="p">(</span><span class="n">Proto</span><span class="o">-></span><span class="n">getName</span><span class="p">());</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TheFunction</span><span class="p">)</span>
+    <span class="n">TheFunction</span> <span class="o">=</span> <span class="n">Proto</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TheFunction</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TheFunction</span><span class="o">-></span><span class="n">empty</span><span class="p">())</span>
+    <span class="k">return</span> <span class="p">(</span><span class="n">Function</span><span class="o">*</span><span class="p">)</span><span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Function cannot be redefined."</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>For function definitions, we start by searching TheModule’s symbol table for an
+existing version of this function, in case one has already been created using an
+‘extern’ statement. If Module::getFunction returns null then no previous version
+exists, so we’ll codegen one from the Prototype. In either case, we want to
+assert that the function is empty (i.e. has no body yet) before we start.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="c1">// Create a new basic block to start insertion into.</span>
+<span class="n">BasicBlock</span> <span class="o">*</span><span class="n">BB</span> <span class="o">=</span> <span class="n">BasicBlock</span><span class="o">::</span><span class="n">Create</span><span class="p">(</span><span class="n">TheContext</span><span class="p">,</span> <span class="s">"entry"</span><span class="p">,</span> <span class="n">TheFunction</span><span class="p">);</span>
+<span class="n">Builder</span><span class="p">.</span><span class="n">SetInsertPoint</span><span class="p">(</span><span class="n">BB</span><span class="p">);</span>
+
+<span class="c1">// Record the function arguments in the NamedValues map.</span>
+<span class="n">NamedValues</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">Arg</span> <span class="p">:</span> <span class="n">TheFunction</span><span class="o">-></span><span class="n">args</span><span class="p">())</span>
+  <span class="n">NamedValues</span><span class="p">[</span><span class="n">Arg</span><span class="p">.</span><span class="n">getName</span><span class="p">()]</span> <span class="o">=</span> <span class="o">&</span><span class="n">Arg</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Now we get to the point where the <code class="docutils literal"><span class="pre">Builder</span></code> is set up. The first line
+creates a new <a class="reference external" href="http://en.wikipedia.org/wiki/Basic_block">basic block</a>
+(named “entry”), which is inserted into <code class="docutils literal"><span class="pre">TheFunction</span></code>. The second line
+then tells the builder that new instructions should be inserted into the
+end of the new basic block. Basic blocks in LLVM are an important part
+of functions that define the <a class="reference external" href="http://en.wikipedia.org/wiki/Control_flow_graph">Control Flow
+Graph</a>. Since we
+don’t have any control flow, our functions will only contain one block
+at this point. We’ll fix this in <a class="reference external" href="LangImpl05.html">Chapter 5</a> :).</p>
+<p>Next we add the function arguments to the NamedValues map (after first clearing
+it out) so that they’re accessible to <code class="docutils literal"><span class="pre">VariableExprAST</span></code> nodes.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">*</span><span class="n">RetVal</span> <span class="o">=</span> <span class="n">Body</span><span class="o">-></span><span class="n">codegen</span><span class="p">())</span> <span class="p">{</span>
+  <span class="c1">// Finish off the function.</span>
+  <span class="n">Builder</span><span class="p">.</span><span class="n">CreateRet</span><span class="p">(</span><span class="n">RetVal</span><span class="p">);</span>
+
+  <span class="c1">// Validate the generated code, checking for consistency.</span>
+  <span class="n">verifyFunction</span><span class="p">(</span><span class="o">*</span><span class="n">TheFunction</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">TheFunction</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Once the insertion point has been set up and the NamedValues map populated,
+we call the <code class="docutils literal"><span class="pre">codegen()</span></code> method for the root expression of the function. If no
+error happens, this emits code to compute the expression into the entry block
+and returns the value that was computed. Assuming no error, we then create an
+LLVM <a class="reference external" href="../LangRef.html#ret-instruction">ret instruction</a>, which completes the function.
+Once the function is built, we call <code class="docutils literal"><span class="pre">verifyFunction</span></code>, which is
+provided by LLVM. This function does a variety of consistency checks on
+the generated code, to determine if our compiler is doing everything
+right. Using this is important: it can catch a lot of bugs. Once the
+function is finished and validated, we return it.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span>  <span class="c1">// Error reading body, remove function.</span>
+  <span class="n">TheFunction</span><span class="o">-></span><span class="n">eraseFromParent</span><span class="p">();</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The only piece left here is handling of the error case. For simplicity,
+we handle this by merely deleting the function we produced with the
+<code class="docutils literal"><span class="pre">eraseFromParent</span></code> method. This allows the user to redefine a function
+that they incorrectly typed in before: if we didn’t delete it, it would
+live in the symbol table, with a body, preventing future redefinition.</p>
+<p>This code does have a bug, though: If the <code class="docutils literal"><span class="pre">FunctionAST::codegen()</span></code> method
+finds an existing IR Function, it does not validate its signature against the
+definition’s own prototype. This means that an earlier ‘extern’ declaration will
+take precedence over the function definition’s signature, which can cause
+codegen to fail, for instance if the function arguments are named differently.
+There are a number of ways to fix this bug, see what you can come up with! Here
+is a testcase:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">extern</span> <span class="n">foo</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>     <span class="c1"># ok, defines foo.</span>
+<span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> <span class="n">b</span><span class="p">;</span>      <span class="c1"># Error: Unknown variable name. (decl using 'a' takes precedence).</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="driver-changes-and-closing-thoughts">
+<h2><a class="toc-backref" href="#id5">3.5. Driver Changes and Closing Thoughts</a><a class="headerlink" href="#driver-changes-and-closing-thoughts" title="Permalink to this headline">¶</a></h2>
+<p>For now, code generation to LLVM doesn’t really get us much, except that
+we can look at the pretty IR calls. The sample code inserts calls to
+codegen into the “<code class="docutils literal"><span class="pre">HandleDefinition</span></code>”, “<code class="docutils literal"><span class="pre">HandleExtern</span></code>” etc
+functions, and then dumps out the LLVM IR. This gives a nice way to look
+at the LLVM IR for simple functions. For example:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ready</span><span class="o">></span> <span class="mi">4</span><span class="o">+</span><span class="mi">5</span><span class="p">;</span>
+<span class="n">Read</span> <span class="n">top</span><span class="o">-</span><span class="n">level</span> <span class="n">expression</span><span class="p">:</span>
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@0</span><span class="p">()</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="mf">9.000000e+00</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Note how the parser turns the top-level expression into anonymous
+functions for us. This will be handy when we add <a class="reference external" href="LangImpl4.html#adding-a-jit-compiler">JIT
+support</a> in the next chapter. Also note that the
+code is very literally transcribed, no optimizations are being performed
+except simple constant folding done by IRBuilder. We will <a class="reference external" href="LangImpl4.html#trivial-constant-folding">add
+optimizations</a> explicitly in the next
+chapter.</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ready</span><span class="o">></span> <span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">a</span> <span class="n">b</span><span class="p">)</span> <span class="n">a</span><span class="o">*</span><span class="n">a</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="o">*</span><span class="n">b</span> <span class="o">+</span> <span class="n">b</span><span class="o">*</span><span class="n">b</span><span class="p">;</span>
+<span class="n">Read</span> <span class="n">function</span> <span class="n">definition</span><span class="p">:</span>
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@foo</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="n">double</span> <span class="o">%</span><span class="n">b</span><span class="p">)</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">multmp</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="o">%</span><span class="n">a</span>
+  <span class="o">%</span><span class="n">multmp1</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="mf">2.000000e+00</span><span class="p">,</span> <span class="o">%</span><span class="n">a</span>
+  <span class="o">%</span><span class="n">multmp2</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">multmp1</span><span class="p">,</span> <span class="o">%</span><span class="n">b</span>
+  <span class="o">%</span><span class="n">addtmp</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">multmp</span><span class="p">,</span> <span class="o">%</span><span class="n">multmp2</span>
+  <span class="o">%</span><span class="n">multmp3</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">b</span><span class="p">,</span> <span class="o">%</span><span class="n">b</span>
+  <span class="o">%</span><span class="n">addtmp4</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp</span><span class="p">,</span> <span class="o">%</span><span class="n">multmp3</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp4</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This shows some simple arithmetic. Notice the striking similarity to the
+LLVM builder calls that we use to create the instructions.</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ready</span><span class="o">></span> <span class="k">def</span> <span class="nf">bar</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="n">foo</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">)</span> <span class="o">+</span> <span class="n">bar</span><span class="p">(</span><span class="mi">31337</span><span class="p">);</span>
+<span class="n">Read</span> <span class="n">function</span> <span class="n">definition</span><span class="p">:</span>
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@bar</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">)</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">calltmp</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@foo</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="n">double</span> <span class="mf">4.000000e+00</span><span class="p">)</span>
+  <span class="o">%</span><span class="n">calltmp1</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@bar</span><span class="p">(</span><span class="n">double</span> <span class="mf">3.133700e+04</span><span class="p">)</span>
+  <span class="o">%</span><span class="n">addtmp</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">calltmp</span><span class="p">,</span> <span class="o">%</span><span class="n">calltmp1</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This shows some function calls. Note that this function will take a long
+time to execute if you call it. In the future we’ll add conditional
+control flow to actually make recursion useful :).</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ready</span><span class="o">></span> <span class="n">extern</span> <span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">);</span>
+<span class="n">Read</span> <span class="n">extern</span><span class="p">:</span>
+<span class="n">declare</span> <span class="n">double</span> <span class="nd">@cos</span><span class="p">(</span><span class="n">double</span><span class="p">)</span>
+
+<span class="n">ready</span><span class="o">></span> <span class="n">cos</span><span class="p">(</span><span class="mf">1.234</span><span class="p">);</span>
+<span class="n">Read</span> <span class="n">top</span><span class="o">-</span><span class="n">level</span> <span class="n">expression</span><span class="p">:</span>
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@1</span><span class="p">()</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">calltmp</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@cos</span><span class="p">(</span><span class="n">double</span> <span class="mf">1.234000e+00</span><span class="p">)</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">calltmp</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This shows an extern for the libm “cos” function, and a call to it.</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ready</span><span class="o">></span> <span class="o">^</span><span class="n">D</span>
+<span class="p">;</span> <span class="n">ModuleID</span> <span class="o">=</span> <span class="s1">'my cool jit'</span>
+
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@0</span><span class="p">()</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">addtmp</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="mf">4.000000e+00</span><span class="p">,</span> <span class="mf">5.000000e+00</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp</span>
+<span class="p">}</span>
+
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@foo</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="n">double</span> <span class="o">%</span><span class="n">b</span><span class="p">)</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">multmp</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="o">%</span><span class="n">a</span>
+  <span class="o">%</span><span class="n">multmp1</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="mf">2.000000e+00</span><span class="p">,</span> <span class="o">%</span><span class="n">a</span>
+  <span class="o">%</span><span class="n">multmp2</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">multmp1</span><span class="p">,</span> <span class="o">%</span><span class="n">b</span>
+  <span class="o">%</span><span class="n">addtmp</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">multmp</span><span class="p">,</span> <span class="o">%</span><span class="n">multmp2</span>
+  <span class="o">%</span><span class="n">multmp3</span> <span class="o">=</span> <span class="n">fmul</span> <span class="n">double</span> <span class="o">%</span><span class="n">b</span><span class="p">,</span> <span class="o">%</span><span class="n">b</span>
+  <span class="o">%</span><span class="n">addtmp4</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp</span><span class="p">,</span> <span class="o">%</span><span class="n">multmp3</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp4</span>
+<span class="p">}</span>
+
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@bar</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">)</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">calltmp</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@foo</span><span class="p">(</span><span class="n">double</span> <span class="o">%</span><span class="n">a</span><span class="p">,</span> <span class="n">double</span> <span class="mf">4.000000e+00</span><span class="p">)</span>
+  <span class="o">%</span><span class="n">calltmp1</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@bar</span><span class="p">(</span><span class="n">double</span> <span class="mf">3.133700e+04</span><span class="p">)</span>
+  <span class="o">%</span><span class="n">addtmp</span> <span class="o">=</span> <span class="n">fadd</span> <span class="n">double</span> <span class="o">%</span><span class="n">calltmp</span><span class="p">,</span> <span class="o">%</span><span class="n">calltmp1</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">addtmp</span>
+<span class="p">}</span>
+
+<span class="n">declare</span> <span class="n">double</span> <span class="nd">@cos</span><span class="p">(</span><span class="n">double</span><span class="p">)</span>
+
+<span class="n">define</span> <span class="n">double</span> <span class="nd">@1</span><span class="p">()</span> <span class="p">{</span>
+<span class="n">entry</span><span class="p">:</span>
+  <span class="o">%</span><span class="n">calltmp</span> <span class="o">=</span> <span class="n">call</span> <span class="n">double</span> <span class="nd">@cos</span><span class="p">(</span><span class="n">double</span> <span class="mf">1.234000e+00</span><span class="p">)</span>
+  <span class="n">ret</span> <span class="n">double</span> <span class="o">%</span><span class="n">calltmp</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>When you quit the current demo (by sending an EOF via CTRL+D on Linux
+or CTRL+Z and ENTER on Windows), it dumps out the IR for the entire
+module generated. Here you can see the big picture with all the
+functions referencing each other.</p>
+<p>This wraps up the third chapter of the Kaleidoscope tutorial. Up next,
+we’ll describe how to <a class="reference external" href="LangImpl04.html">add JIT codegen and optimizer
+support</a> to this so we can actually start running
+code!</p>
+</div>
+<div class="section" id="full-code-listing">
+<h2><a class="toc-backref" href="#id6">3.6. Full Code Listing</a><a class="headerlink" href="#full-code-listing" title="Permalink to this headline">¶</a></h2>
+<p>Here is the complete code listing for our running example, enhanced with
+the LLVM code generator. Because this uses the LLVM libraries, we need
+to link them in. To do this, we use the
+<a class="reference external" href="http://llvm.org/cmds/llvm-config.html">llvm-config</a> tool to inform
+our makefile/command line about which options to use:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Compile</span>
+clang++ -g -O3 toy.cpp <span class="sb">`</span>llvm-config --cxxflags --ldflags --system-libs --libs core<span class="sb">`</span> -o toy
+<span class="c1"># Run</span>
+./toy
+</pre></div>
+</div>
+<p>Here is the code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"llvm/ADT/APFloat.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/ADT/STLExtras.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/BasicBlock.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Constants.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/DerivedTypes.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Function.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/IRBuilder.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/LLVMContext.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Module.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Type.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">"llvm/IR/Verifier.h"</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><algorithm></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cctype></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdio></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><cstdlib></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><map></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><memory></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
+
+<span class="k">using</span> <span class="k">namespace</span> <span class="n">llvm</span><span class="p">;</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Lexer</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="c1">// The lexer returns tokens [0-255] if it is an unknown character, otherwise one</span>
+<span class="c1">// of these for known things.</span>
+<span class="k">enum</span> <span class="n">Token</span> <span class="p">{</span>
+  <span class="n">tok_eof</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+
+  <span class="c1">// commands</span>
+  <span class="n">tok_def</span> <span class="o">=</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span>
+  <span class="n">tok_extern</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span>
+
+  <span class="c1">// primary</span>
+  <span class="n">tok_identifier</span> <span class="o">=</span> <span class="o">-</span><span class="mi">4</span><span class="p">,</span>
+  <span class="n">tok_number</span> <span class="o">=</span> <span class="o">-</span><span class="mi">5</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdentifierStr</span><span class="p">;</span> <span class="c1">// Filled in if tok_identifier</span>
+<span class="k">static</span> <span class="kt">double</span> <span class="n">NumVal</span><span class="p">;</span>             <span class="c1">// Filled in if tok_number</span>
+
+<span class="c1">/// gettok - Return the next token from standard input.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">gettok</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">static</span> <span class="kt">int</span> <span class="n">LastChar</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span>
+
+  <span class="c1">// Skip any whitespace.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">isspace</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span>
+    <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">isalpha</span><span class="p">(</span><span class="n">LastChar</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// identifier: [a-zA-Z][a-zA-Z0-9]*</span>
+    <span class="n">IdentifierStr</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">isalnum</span><span class="p">((</span><span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">())))</span>
+      <span class="n">IdentifierStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"def"</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">tok_def</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">IdentifierStr</span> <span class="o">==</span> <span class="s">"extern"</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">tok_extern</span><span class="p">;</span>
+    <span class="k">return</span> <span class="n">tok_identifier</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Number: [0-9.]+</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">NumStr</span><span class="p">;</span>
+    <span class="k">do</span> <span class="p">{</span>
+      <span class="n">NumStr</span> <span class="o">+=</span> <span class="n">LastChar</span><span class="p">;</span>
+      <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+    <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">LastChar</span><span class="p">)</span> <span class="o">||</span> <span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'.'</span><span class="p">);</span>
+
+    <span class="n">NumVal</span> <span class="o">=</span> <span class="n">strtod</span><span class="p">(</span><span class="n">NumStr</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="k">nullptr</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">tok_number</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="sc">'#'</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// Comment until end of line.</span>
+    <span class="k">do</span>
+      <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\n'</span> <span class="o">&&</span> <span class="n">LastChar</span> <span class="o">!=</span> <span class="sc">'\r'</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">!=</span> <span class="n">EOF</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">gettok</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Check for end of file.  Don't eat the EOF.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">LastChar</span> <span class="o">==</span> <span class="n">EOF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">tok_eof</span><span class="p">;</span>
+
+  <span class="c1">// Otherwise, just return the character as its ascii value.</span>
+  <span class="kt">int</span> <span class="n">ThisChar</span> <span class="o">=</span> <span class="n">LastChar</span><span class="p">;</span>
+  <span class="n">LastChar</span> <span class="o">=</span> <span class="n">getchar</span><span class="p">();</span>
+  <span class="k">return</span> <span class="n">ThisChar</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Abstract Syntax Tree (aka Parse Tree)</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+<span class="c1">/// ExprAST - Base class for all expression nodes.</span>
+<span class="k">class</span> <span class="nc">ExprAST</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+  <span class="k">virtual</span> <span class="o">~</span><span class="n">ExprAST</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+
+  <span class="k">virtual</span> <span class="n">Value</span> <span class="o">*</span><span class="nf">codegen</span><span class="p">()</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// NumberExprAST - Expression class for numeric literals like "1.0".</span>
+<span class="k">class</span> <span class="nc">NumberExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">double</span> <span class="n">Val</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">NumberExprAST</span><span class="p">(</span><span class="kt">double</span> <span class="n">Val</span><span class="p">)</span> <span class="o">:</span> <span class="n">Val</span><span class="p">(</span><span class="n">Val</span><span class="p">)</span> <span class="p">{}</span>
+
+  <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">()</span> <span class="k">override</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// VariableExprAST - Expression class for referencing a variable, like "a".</span>
+<span class="k">class</span> <span class="nc">VariableExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">VariableExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">)</span> <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">Name</span><span class="p">)</span> <span class="p">{}</span>
+
+  <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">()</span> <span class="k">override</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// BinaryExprAST - Expression class for a binary operator.</span>
+<span class="k">class</span> <span class="nc">BinaryExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="n">Op</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span> <span class="n">RHS</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">BinaryExprAST</span><span class="p">(</span><span class="kt">char</span> <span class="n">Op</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">,</span>
+                <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">RHS</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Op</span><span class="p">(</span><span class="n">Op</span><span class="p">),</span> <span class="n">LHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">)),</span> <span class="n">RHS</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">()</span> <span class="k">override</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// CallExprAST - Expression class for function calls.</span>
+<span class="k">class</span> <span class="nc">CallExprAST</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ExprAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Callee</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">CallExprAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Callee</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Callee</span><span class="p">(</span><span class="n">Callee</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="n">Value</span> <span class="o">*</span><span class="n">codegen</span><span class="p">()</span> <span class="k">override</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// PrototypeAST - This class represents the "prototype" for a function,</span>
+<span class="c1">/// which captures its name, and its argument names (thus implicitly the number</span>
+<span class="c1">/// of arguments the function takes).</span>
+<span class="k">class</span> <span class="nc">PrototypeAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">Name</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">PrototypeAST</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">Name</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">Args</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Name</span><span class="p">(</span><span class="n">Name</span><span class="p">),</span> <span class="n">Args</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="n">Function</span> <span class="o">*</span><span class="n">codegen</span><span class="p">();</span>
+  <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&</span><span class="n">getName</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">Name</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="c1">/// FunctionAST - This class represents a function definition itself.</span>
+<span class="k">class</span> <span class="nc">FunctionAST</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">;</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+  <span class="n">FunctionAST</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">Proto</span><span class="p">,</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">Body</span><span class="p">)</span>
+      <span class="o">:</span> <span class="n">Proto</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">)),</span> <span class="n">Body</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Body</span><span class="p">))</span> <span class="p">{}</span>
+
+  <span class="n">Function</span> <span class="o">*</span><span class="n">codegen</span><span class="p">();</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// end anonymous namespace</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Parser</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="c1">/// CurTok/getNextToken - Provide a simple token buffer.  CurTok is the current</span>
+<span class="c1">/// token the parser is looking at.  getNextToken reads another token from the</span>
+<span class="c1">/// lexer and updates CurTok with its results.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="n">CurTok</span><span class="p">;</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">getNextToken</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">CurTok</span> <span class="o">=</span> <span class="n">gettok</span><span class="p">();</span> <span class="p">}</span>
+
+<span class="c1">/// BinopPrecedence - This holds the precedence for each binary operator that is</span>
+<span class="c1">/// defined.</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">char</span><span class="p">,</span> <span class="kt">int</span><span class="o">></span> <span class="n">BinopPrecedence</span><span class="p">;</span>
+
+<span class="c1">/// GetTokPrecedence - Get the precedence of the pending binary operator token.</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">GetTokPrecedence</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">isascii</span><span class="p">(</span><span class="n">CurTok</span><span class="p">))</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="c1">// Make sure it's a declared binop.</span>
+  <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">BinopPrecedence</span><span class="p">[</span><span class="n">CurTok</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="k">return</span> <span class="n">TokPrec</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// LogError* - These are little helper functions for error handling.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LogError</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Error: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">LogErrorP</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">LogError</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseExpression</span><span class="p">();</span>
+
+<span class="c1">/// numberexpr ::= number</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseNumberExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">Result</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">NumberExprAST</span><span class="o">></span><span class="p">(</span><span class="n">NumVal</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// consume the number</span>
+  <span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Result</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">/// parenexpr ::= '(' expression ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseParenExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat (.</span>
+  <span class="k">auto</span> <span class="n">V</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">V</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"expected ')'"</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat ).</span>
+  <span class="k">return</span> <span class="n">V</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// identifierexpr</span>
+<span class="c1">///   ::= identifier</span>
+<span class="c1">///   ::= identifier '(' expression* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseIdentifierExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IdName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat identifier.</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span> <span class="c1">// Simple variable ref.</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">VariableExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">);</span>
+
+  <span class="c1">// Call.</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat (</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">>></span> <span class="n">Args</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">Arg</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+        <span class="n">Args</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Arg</span><span class="p">));</span>
+      <span class="k">else</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">==</span> <span class="sc">')'</span><span class="p">)</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">','</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"Expected ')' or ',' in argument list"</span><span class="p">);</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Eat the ')'.</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">CallExprAST</span><span class="o">></span><span class="p">(</span><span class="n">IdName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Args</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// primary</span>
+<span class="c1">///   ::= identifierexpr</span>
+<span class="c1">///   ::= numberexpr</span>
+<span class="c1">///   ::= parenexpr</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParsePrimary</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">default</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">LogError</span><span class="p">(</span><span class="s">"unknown token when expecting an expression"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="nl">tok_identifier</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseIdentifierExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="nl">tok_number</span><span class="p">:</span>
+    <span class="k">return</span> <span class="n">ParseNumberExpr</span><span class="p">();</span>
+  <span class="k">case</span> <span class="sc">'('</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">ParseParenExpr</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// binoprhs</span>
+<span class="c1">///   ::= ('+' primary)*</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="kt">int</span> <span class="n">ExprPrec</span><span class="p">,</span>
+                                              <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">LHS</span><span class="p">)</span> <span class="p">{</span>
+  <span class="c1">// If this is a binop, find its precedence.</span>
+  <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">TokPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+
+    <span class="c1">// If this is a binop that binds at least as tightly as the current binop,</span>
+    <span class="c1">// consume it, otherwise we are done.</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">ExprPrec</span><span class="p">)</span>
+      <span class="k">return</span> <span class="n">LHS</span><span class="p">;</span>
+
+    <span class="c1">// Okay, we know this is a binop.</span>
+    <span class="kt">int</span> <span class="n">BinOp</span> <span class="o">=</span> <span class="n">CurTok</span><span class="p">;</span>
+    <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat binop</span>
+
+    <span class="c1">// Parse the primary expression after the binary operator.</span>
+    <span class="k">auto</span> <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+      <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+    <span class="c1">// If BinOp binds less tightly with RHS than the operator after RHS, let</span>
+    <span class="c1">// the pending operator take RHS as its LHS.</span>
+    <span class="kt">int</span> <span class="n">NextPrec</span> <span class="o">=</span> <span class="n">GetTokPrecedence</span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">TokPrec</span> <span class="o"><</span> <span class="n">NextPrec</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">RHS</span> <span class="o">=</span> <span class="n">ParseBinOpRHS</span><span class="p">(</span><span class="n">TokPrec</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">RHS</span><span class="p">)</span>
+        <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Merge LHS/RHS.</span>
+    <span class="n">LHS</span> <span class="o">=</span>
+        <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">BinaryExprAST</span><span class="o">></span><span class="p">(</span><span class="n">BinOp</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">RHS</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// expression</span>
+<span class="c1">///   ::= primary binoprhs</span>
+<span class="c1">///</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">ExprAST</span><span class="o">></span> <span class="n">ParseExpression</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">auto</span> <span class="n">LHS</span> <span class="o">=</span> <span class="n">ParsePrimary</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">LHS</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="nf">ParseBinOpRHS</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">LHS</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// prototype</span>
+<span class="c1">///   ::= id '(' id* ')'</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParsePrototype</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected function name in prototype"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">FnName</span> <span class="o">=</span> <span class="n">IdentifierStr</span><span class="p">;</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">'('</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected '(' in prototype"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">ArgNames</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">getNextToken</span><span class="p">()</span> <span class="o">==</span> <span class="n">tok_identifier</span><span class="p">)</span>
+    <span class="n">ArgNames</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">IdentifierStr</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CurTok</span> <span class="o">!=</span> <span class="sc">')'</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorP</span><span class="p">(</span><span class="s">"Expected ')' in prototype"</span><span class="p">);</span>
+
+  <span class="c1">// success.</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat ')'.</span>
+
+  <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="n">FnName</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">ArgNames</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="c1">/// definition ::= 'def' prototype expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseDefinition</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat def.</span>
+  <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">ParsePrototype</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">Proto</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// toplevelexpr ::= expression</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span> <span class="n">ParseTopLevelExpr</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">E</span> <span class="o">=</span> <span class="n">ParseExpression</span><span class="p">())</span> <span class="p">{</span>
+    <span class="c1">// Make an anonymous proto.</span>
+    <span class="k">auto</span> <span class="n">Proto</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span><span class="p">(</span><span class="s">"__anon_expr"</span><span class="p">,</span>
+                                                 <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">());</span>
+    <span class="k">return</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">FunctionAST</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Proto</span><span class="p">),</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">E</span><span class="p">));</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">/// external ::= 'extern' prototype</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">PrototypeAST</span><span class="o">></span> <span class="n">ParseExtern</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">getNextToken</span><span class="p">();</span> <span class="c1">// eat extern.</span>
+  <span class="k">return</span> <span class="nf">ParsePrototype</span><span class="p">();</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Code Generation</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="k">static</span> <span class="n">LLVMContext</span> <span class="n">TheContext</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">IRBuilder</span><span class="o"><></span> <span class="n">Builder</span><span class="p">(</span><span class="n">TheContext</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="n">Module</span><span class="o">></span> <span class="n">TheModule</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">Value</span> <span class="o">*></span> <span class="n">NamedValues</span><span class="p">;</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="nf">LogErrorV</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">Str</span><span class="p">)</span> <span class="p">{</span>
+  <span class="n">LogError</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="n">NumberExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">return</span> <span class="n">ConstantFP</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">TheContext</span><span class="p">,</span> <span class="n">APFloat</span><span class="p">(</span><span class="n">Val</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="n">VariableExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Look this variable up in the function.</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">V</span> <span class="o">=</span> <span class="n">NamedValues</span><span class="p">[</span><span class="n">Name</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">V</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Unknown variable name"</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">V</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="n">BinaryExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">L</span> <span class="o">=</span> <span class="n">LHS</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+  <span class="n">Value</span> <span class="o">*</span><span class="n">R</span> <span class="o">=</span> <span class="n">RHS</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">L</span> <span class="o">||</span> <span class="o">!</span><span class="n">R</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">Op</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="sc">'+'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFAdd</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"addtmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'-'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFSub</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"subtmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'*'</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFMul</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"multmp"</span><span class="p">);</span>
+  <span class="k">case</span> <span class="sc">'<'</span><span class="o">:</span>
+    <span class="n">L</span> <span class="o">=</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateFCmpULT</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">R</span><span class="p">,</span> <span class="s">"cmptmp"</span><span class="p">);</span>
+    <span class="c1">// Convert bool 0/1 to double 0.0 or 1.0</span>
+    <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateUIToFP</span><span class="p">(</span><span class="n">L</span><span class="p">,</span> <span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">),</span> <span class="s">"booltmp"</span><span class="p">);</span>
+  <span class="k">default</span><span class="o">:</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"invalid binary operator"</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">Value</span> <span class="o">*</span><span class="n">CallExprAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Look up the name in the global module table.</span>
+  <span class="n">Function</span> <span class="o">*</span><span class="n">CalleeF</span> <span class="o">=</span> <span class="n">TheModule</span><span class="o">-></span><span class="n">getFunction</span><span class="p">(</span><span class="n">Callee</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">CalleeF</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Unknown function referenced"</span><span class="p">);</span>
+
+  <span class="c1">// If argument mismatch error.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">CalleeF</span><span class="o">-></span><span class="n">arg_size</span><span class="p">()</span> <span class="o">!=</span> <span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
+    <span class="k">return</span> <span class="n">LogErrorV</span><span class="p">(</span><span class="s">"Incorrect # arguments passed"</span><span class="p">);</span>
+
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">Value</span> <span class="o">*></span> <span class="n">ArgsV</span><span class="p">;</span>
+  <span class="k">for</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">e</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">ArgsV</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">Args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-></span><span class="n">codegen</span><span class="p">());</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ArgsV</span><span class="p">.</span><span class="n">back</span><span class="p">())</span>
+      <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">Builder</span><span class="p">.</span><span class="n">CreateCall</span><span class="p">(</span><span class="n">CalleeF</span><span class="p">,</span> <span class="n">ArgsV</span><span class="p">,</span> <span class="s">"calltmp"</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="n">Function</span> <span class="o">*</span><span class="n">PrototypeAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Make the function type:  double(double,double) etc.</span>
+  <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">Type</span> <span class="o">*></span> <span class="n">Doubles</span><span class="p">(</span><span class="n">Args</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">));</span>
+  <span class="n">FunctionType</span> <span class="o">*</span><span class="n">FT</span> <span class="o">=</span>
+      <span class="n">FunctionType</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">Type</span><span class="o">::</span><span class="n">getDoubleTy</span><span class="p">(</span><span class="n">TheContext</span><span class="p">),</span> <span class="n">Doubles</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+
+  <span class="n">Function</span> <span class="o">*</span><span class="n">F</span> <span class="o">=</span>
+      <span class="n">Function</span><span class="o">::</span><span class="n">Create</span><span class="p">(</span><span class="n">FT</span><span class="p">,</span> <span class="n">Function</span><span class="o">::</span><span class="n">ExternalLinkage</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="n">TheModule</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
+
+  <span class="c1">// Set names for all arguments.</span>
+  <span class="kt">unsigned</span> <span class="n">Idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">Arg</span> <span class="p">:</span> <span class="n">F</span><span class="o">-></span><span class="n">args</span><span class="p">())</span>
+    <span class="n">Arg</span><span class="p">.</span><span class="n">setName</span><span class="p">(</span><span class="n">Args</span><span class="p">[</span><span class="n">Idx</span><span class="o">++</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="n">Function</span> <span class="o">*</span><span class="n">FunctionAST</span><span class="o">::</span><span class="n">codegen</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// First, check for an existing function from a previous 'extern' declaration.</span>
+  <span class="n">Function</span> <span class="o">*</span><span class="n">TheFunction</span> <span class="o">=</span> <span class="n">TheModule</span><span class="o">-></span><span class="n">getFunction</span><span class="p">(</span><span class="n">Proto</span><span class="o">-></span><span class="n">getName</span><span class="p">());</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TheFunction</span><span class="p">)</span>
+    <span class="n">TheFunction</span> <span class="o">=</span> <span class="n">Proto</span><span class="o">-></span><span class="n">codegen</span><span class="p">();</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TheFunction</span><span class="p">)</span>
+    <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+
+  <span class="c1">// Create a new basic block to start insertion into.</span>
+  <span class="n">BasicBlock</span> <span class="o">*</span><span class="n">BB</span> <span class="o">=</span> <span class="n">BasicBlock</span><span class="o">::</span><span class="n">Create</span><span class="p">(</span><span class="n">TheContext</span><span class="p">,</span> <span class="s">"entry"</span><span class="p">,</span> <span class="n">TheFunction</span><span class="p">);</span>
+  <span class="n">Builder</span><span class="p">.</span><span class="n">SetInsertPoint</span><span class="p">(</span><span class="n">BB</span><span class="p">);</span>
+
+  <span class="c1">// Record the function arguments in the NamedValues map.</span>
+  <span class="n">NamedValues</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+  <span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="o">&</span><span class="nl">Arg</span> <span class="p">:</span> <span class="n">TheFunction</span><span class="o">-></span><span class="n">args</span><span class="p">())</span>
+    <span class="n">NamedValues</span><span class="p">[</span><span class="n">Arg</span><span class="p">.</span><span class="n">getName</span><span class="p">()]</span> <span class="o">=</span> <span class="o">&</span><span class="n">Arg</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">*</span><span class="n">RetVal</span> <span class="o">=</span> <span class="n">Body</span><span class="o">-></span><span class="n">codegen</span><span class="p">())</span> <span class="p">{</span>
+    <span class="c1">// Finish off the function.</span>
+    <span class="n">Builder</span><span class="p">.</span><span class="n">CreateRet</span><span class="p">(</span><span class="n">RetVal</span><span class="p">);</span>
+
+    <span class="c1">// Validate the generated code, checking for consistency.</span>
+    <span class="n">verifyFunction</span><span class="p">(</span><span class="o">*</span><span class="n">TheFunction</span><span class="p">);</span>
+
+    <span class="k">return</span> <span class="n">TheFunction</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="c1">// Error reading body, remove function.</span>
+  <span class="n">TheFunction</span><span class="o">-></span><span class="n">eraseFromParent</span><span class="p">();</span>
+  <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Top-Level parsing and JIT Driver</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleDefinition</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">FnAST</span> <span class="o">=</span> <span class="n">ParseDefinition</span><span class="p">())</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="o">*</span><span class="n">FnIR</span> <span class="o">=</span> <span class="n">FnAST</span><span class="o">-></span><span class="n">codegen</span><span class="p">())</span> <span class="p">{</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Read function definition:"</span><span class="p">);</span>
+      <span class="n">FnIR</span><span class="o">-></span><span class="n">print</span><span class="p">(</span><span class="n">errs</span><span class="p">());</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleExtern</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">ProtoAST</span> <span class="o">=</span> <span class="n">ParseExtern</span><span class="p">())</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="o">*</span><span class="n">FnIR</span> <span class="o">=</span> <span class="n">ProtoAST</span><span class="o">-></span><span class="n">codegen</span><span class="p">())</span> <span class="p">{</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Read extern: "</span><span class="p">);</span>
+      <span class="n">FnIR</span><span class="o">-></span><span class="n">print</span><span class="p">(</span><span class="n">errs</span><span class="p">());</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="n">HandleTopLevelExpression</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Evaluate a top-level expression into an anonymous function.</span>
+  <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="n">FnAST</span> <span class="o">=</span> <span class="n">ParseTopLevelExpr</span><span class="p">())</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="k">auto</span> <span class="o">*</span><span class="n">FnIR</span> <span class="o">=</span> <span class="n">FnAST</span><span class="o">-></span><span class="n">codegen</span><span class="p">())</span> <span class="p">{</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Read top-level expression:"</span><span class="p">);</span>
+      <span class="n">FnIR</span><span class="o">-></span><span class="n">print</span><span class="p">(</span><span class="n">errs</span><span class="p">());</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="c1">// Skip token for error recovery.</span>
+    <span class="n">getNextToken</span><span class="p">();</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">/// top ::= definition | external | expression | ';'</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">MainLoop</span><span class="p">()</span> <span class="p">{</span>
+  <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"ready> "</span><span class="p">);</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">CurTok</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="nl">tok_eof</span><span class="p">:</span>
+      <span class="k">return</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">';'</span><span class="o">:</span> <span class="c1">// ignore top-level semicolons.</span>
+      <span class="n">getNextToken</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_def</span><span class="p">:</span>
+      <span class="n">HandleDefinition</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="nl">tok_extern</span><span class="p">:</span>
+      <span class="n">HandleExtern</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">default</span><span class="o">:</span>
+      <span class="n">HandleTopLevelExpression</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+<span class="c1">// Main driver code.</span>
+<span class="c1">//===----------------------------------------------------------------------===//</span>
+
+<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
+  <span class="c1">// Install standard binary operators.</span>
+  <span class="c1">// 1 is lowest precedence.</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'<'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'+'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'-'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
+  <span class="n">BinopPrecedence</span><span class="p">[</span><span class="sc">'*'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span> <span class="c1">// highest.</span>
+
+  <span class="c1">// Prime the first token.</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"ready> "</span><span class="p">);</span>
+  <span class="n">getNextToken</span><span class="p">();</span>
+
+  <span class="c1">// Make the module, which holds all the code.</span>
+  <span class="n">TheModule</span> <span class="o">=</span> <span class="n">llvm</span><span class="o">::</span><span class="n">make_unique</span><span class="o"><</span><span class="n">Module</span><span class="o">></span><span class="p">(</span><span class="s">"my cool jit"</span><span class="p">,</span> <span class="n">TheContext</span><span class="p">);</span>
+
+  <span class="c1">// Run the main "interpreter loop" now.</span>
+  <span class="n">MainLoop</span><span class="p">();</span>
+
+  <span class="c1">// Print out all of the generated code.</span>
+  <span class="n">TheModule</span><span class="o">-></span><span class="n">print</span><span class="p">(</span><span class="n">errs</span><span class="p">(),</span> <span class="k">nullptr</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p><a class="reference external" href="LangImpl04.html">Next: Adding JIT and Optimizer Support</a></p>
+</div>
+</div>
+
+
+          </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="LangImpl04.html" title="4. Kaleidoscope: Adding JIT and Optimizer Support"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="LangImpl02.html" title="2. Kaleidoscope: Implementing a Parser and AST"
+             >previous</a> |</li>
+  <li><a href="http://llvm.org/">LLVM Home</a> | </li>
+  <li><a href="../index.html">Documentation</a>»</li>
+
+          <li class="nav-item nav-item-1"><a href="index.html" >LLVM Tutorial: Table of Contents</a> »</li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+        © Copyright 2003-2018, LLVM Project.
+      Last updated on 2018-03-02.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file




More information about the llvm-commits mailing list