view presentation/mindmap.mm @ 25:8144b7f25874 default tip

add graffle
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Sun, 05 Jul 2015 16:39:46 +0900
parents c50a033e6635
children
line wrap: on
line source

<map version="1.0.1">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node CREATED="1435501007733" ID="ID_1604379277" MODIFIED="1435741670509" TEXT="Implimantating Continuation based  language in Clang and LLVM">
<node CREATED="1435741674048" ID="ID_760354330" MODIFIED="1435741677369" POSITION="right" TEXT="background">
<node CREATED="1435741677767" ID="ID_1376749743" MODIFIED="1435741704550" TEXT="CbC compiler on GCC was born in 2008"/>
<node CREATED="1435741704870" ID="ID_1775575179" MODIFIED="1435741726188" TEXT="nested function based goto with environment is implemented in 2011"/>
<node CREATED="1435741726680" ID="ID_1292129969" MODIFIED="1435741835281" TEXT="CbC compiler on LLVM and Clang  is implemented in 2015"/>
</node>
<node CREATED="1435725148481" ID="ID_1271920735" MODIFIED="1435725152483" POSITION="right" TEXT="Objective">
<node CREATED="1435725152944" ID="ID_1312266033" MODIFIED="1435725527433" TEXT="code segments and data segments based programming paradigm"/>
<node CREATED="1435726304836" ID="ID_1487102481" MODIFIED="1435726317757" TEXT="CbC uses this programming paradigm"/>
<node CREATED="1435726492377" ID="ID_804782596" MODIFIED="1435726534918" TEXT="Transition does not keep environment.">
<node CREATED="1435726543160" ID="ID_1972756516" MODIFIED="1435726548571" TEXT="light weight continuation"/>
</node>
<node CREATED="1435726573855" ID="ID_1310732006" MODIFIED="1435726581503" TEXT="for state mechine">
<node CREATED="1435726590874" ID="ID_774127327" MODIFIED="1435726609496" TEXT="more readable than assembly language"/>
</node>
</node>
<node CREATED="1435558844692" ID="ID_234248593" MODIFIED="1435558900590" POSITION="right" TEXT="CbC compilers">
<node CREATED="1435558849331" ID="ID_1530553038" MODIFIED="1435558852725" TEXT="Micro-C"/>
<node CREATED="1435558853090" ID="ID_226984472" MODIFIED="1435558864074" TEXT="GCC(GNU Compiler Collection)"/>
<node CREATED="1435558864742" ID="ID_1430199015" MODIFIED="1435558869743" TEXT="LLVM and Clang"/>
</node>
<node CREATED="1435558903538" ID="ID_1434598449" MODIFIED="1435558912130" POSITION="right" TEXT="What is LLVM?">
<node CREATED="1435558912607" ID="ID_430822211" MODIFIED="1435558918208" TEXT="compiler framework"/>
<node CREATED="1435558920045" ID="ID_1817303164" MODIFIED="1435559010148" TEXT="translate LLVM IR to assembly language"/>
</node>
<node CREATED="1435559227013" ID="ID_1907223714" MODIFIED="1435559238221" POSITION="right" TEXT="What is Clang?">
<node CREATED="1435559238554" ID="ID_162988667" MODIFIED="1435559254548" TEXT="C/C++/Obj-C compiler fromtend"/>
<node CREATED="1435559254941" ID="ID_1866537519" MODIFIED="1435559263949" TEXT="use LLVM for backend"/>
</node>
<node CREATED="1435501394895" ID="ID_1596189760" MODIFIED="1435558842279" POSITION="right" TEXT="Why LLVM?">
<node CREATED="1435501413622" ID="ID_440137288" MODIFIED="1435501419126" TEXT="Apple supported"/>
<node CREATED="1435501420211" ID="ID_788972414" MODIFIED="1435501428531" TEXT="LLVM IR">
<node CREATED="1435559306780" ID="ID_864368890" MODIFIED="1435559328385" TEXT="intermidiate representation"/>
<node CREATED="1435559329054" ID="ID_801485061" MODIFIED="1435559339118" TEXT="LLVM language"/>
<node CREATED="1435501428720" ID="ID_427621961" MODIFIED="1435502010503" TEXT="friendly and useful documents"/>
</node>
<node CREATED="1435501470372" ID="ID_1442059475" MODIFIED="1435501505259" TEXT="has many front end">
<node CREATED="1435501505537" ID="ID_1643700220" MODIFIED="1435501512313" TEXT="C/C++/Obj-C"/>
<node CREATED="1435501513150" ID="ID_146696433" MODIFIED="1435501514512" TEXT="Go"/>
<node CREATED="1435501516341" ID="ID_1131765970" MODIFIED="1435501576373" TEXT="GHC(Haskell)"/>
<node CREATED="1435644034797" ID="ID_681214230" MODIFIED="1435644043076" TEXT="HiPE(Erlang)"/>
</node>
<node CREATED="1435501619956" ID="ID_781379815" MODIFIED="1435559016082" TEXT="All programming languages can be supported if  you can transtlte it into LLVM IR"/>
<node CREATED="1435501861739" ID="ID_1227695304" MODIFIED="1435501866235" TEXT="C++ base"/>
<node CREATED="1435502019202" ID="ID_594005899" MODIFIED="1435502021515" TEXT="doxygen">
<node CREATED="1435502024423" ID="ID_1102201599" MODIFIED="1435643888459" TEXT="readable source code documentation"/>
</node>
</node>
<node CREATED="1435554687473" ID="ID_621446993" MODIFIED="1435554694392" POSITION="right" TEXT="What is CbC?">
<node CREATED="1435554734495" ID="ID_1081007624" MODIFIED="1435554741121" TEXT="Continuation based C">
<node CREATED="1435554911546" ID="ID_1385876394" MODIFIED="1435554928118" TEXT="tail call elimination"/>
</node>
<node CREATED="1435554696155" ID="ID_149274142" MODIFIED="1435554701580" TEXT="programming language"/>
<node CREATED="1435554749075" ID="ID_1370258342" MODIFIED="1435554763190" TEXT="data segments and code segments">
<node CREATED="1435555863865" ID="ID_386674946" MODIFIED="1435555884776" TEXT="code segments">
<node CREATED="1435554942439" ID="ID_1612698622" MODIFIED="1435555908494" TEXT="unit of processes"/>
<node CREATED="1435554955675" ID="ID_1491940477" MODIFIED="1435554976290" TEXT="We can write code segmnets like functions"/>
<node CREATED="1435554977059" ID="ID_1409331936" MODIFIED="1435555314909" TEXT="code segments do not return to a previous one"/>
</node>
</node>
<node CREATED="1435554767637" ID="ID_1986585855" MODIFIED="1435554772518" TEXT="for meta computation"/>
<node CREATED="1435554774683" ID="ID_1472177279" MODIFIED="1435558640413" TEXT="for state machine">
<node CREATED="1435558553023" ID="ID_892482468" MODIFIED="1435558589096" TEXT="code segments do not have environment"/>
<node CREATED="1435558589645" ID="ID_182453927" MODIFIED="1435558659504" TEXT="CbC&apos;s transition is a state machine itself"/>
</node>
<node CREATED="1435554778322" ID="ID_919461270" MODIFIED="1435554782355" TEXT="for pararell tasks"/>
</node>
<node CREATED="1435723849541" ID="ID_1768881597" MODIFIED="1435723854441" POSITION="right" TEXT="Why CbC?">
<node CREATED="1435723854757" ID="ID_407018303" MODIFIED="1435723873940" TEXT="TCE forced language"/>
<node CREATED="1435724075582" ID="ID_1537487605" MODIFIED="1435724081345" TEXT="state machine">
<node CREATED="1435724354881" ID="ID_62280549" MODIFIED="1435724377814" TEXT="code segments have no environment(state)"/>
</node>
</node>
<node CREATED="1435724093766" ID="ID_1769815102" MODIFIED="1435724096928" POSITION="right" TEXT="In future">
<node CREATED="1435724098451" ID="ID_1788252967" MODIFIED="1435724183997" TEXT="CbC superset language">
<node CREATED="1435558074653" ID="ID_1160075184" MODIFIED="1435558082356" TEXT="meta code segment">
<node CREATED="1435558082672" ID="ID_1723384571" MODIFIED="1435558092791" TEXT="memory allocation and protection"/>
<node CREATED="1435558094612" ID="ID_1339356450" MODIFIED="1435558099838" TEXT="scheduling"/>
<node CREATED="1435558726018" ID="ID_349670294" MODIFIED="1435558741328" TEXT="exceptions"/>
</node>
<node CREATED="1435555877428" ID="ID_297263705" MODIFIED="1435555882046" TEXT="data segments">
<node CREATED="1435555888505" ID="ID_1393969154" MODIFIED="1435555898793" TEXT="unit of data"/>
<node CREATED="1435555945415" ID="ID_1502751154" MODIFIED="1435556032508" TEXT="has two different forms in CbC">
<node CREATED="1435556008236" ID="ID_1766002292" MODIFIED="1435556011294" TEXT="c struct">
<node CREATED="1435556043033" ID="ID_885307189" MODIFIED="1435556048203" TEXT="for programming in CbC"/>
</node>
<node CREATED="1435556011835" ID="ID_1638878719" MODIFIED="1435556016708" TEXT="message pack">
<node CREATED="1435556049647" ID="ID_1165011694" MODIFIED="1435556149930" TEXT="for network transporting"/>
</node>
</node>
<node CREATED="1435557466329" ID="ID_1100755375" MODIFIED="1435557482025" TEXT="use type information for meta computing">
<node CREATED="1435557482324" ID="ID_385146293" MODIFIED="1435557496987" TEXT="signature"/>
</node>
<node CREATED="1435557558301" ID="ID_1254522982" MODIFIED="1435557602596" TEXT="extensible and backward compatibility">
<node CREATED="1435558047468" ID="ID_1003388610" MODIFIED="1435558058358" TEXT="implemented by signature and type information"/>
</node>
</node>
</node>
</node>
<node CREATED="1393415255084" ID="ID_1255273744" MODIFIED="1393415345099" POSITION="left" TEXT="Implementation">
<node CREATED="1393415462537" ID="ID_1012460054" MODIFIED="1393415470448" TEXT="basic strategy">
<node CREATED="1393415472602" ID="ID_484481910" MODIFIED="1393415482097" TEXT="code segment as normal function"/>
<node CREATED="1393415485468" ID="ID_1042900495" MODIFIED="1393415504659" TEXT="transition as forced tail call"/>
<node CREATED="1393415518303" ID="ID_1865357667" MODIFIED="1393415530070" TEXT="nomodification on intermidiate code">
<node CREATED="1393415532177" ID="ID_1877009195" MODIFIED="1393415546209" TEXT="do not modify optimizer part"/>
</node>
<node CREATED="1393415567244" ID="ID_512214482" MODIFIED="1393415592237" TEXT="goto with env as longjmp">
<node CREATED="1393415598752" ID="ID_1050206315" MODIFIED="1393415607144" TEXT="GCC uses nested function"/>
<node CREATED="1393415613281" ID="ID_1663927810" MODIFIED="1393415620857" TEXT="LLVM has no nested function">
<node CREATED="1435560165938" ID="ID_1261087430" MODIFIED="1435560175898" TEXT="setjmp and longjmp"/>
</node>
</node>
<node CREATED="1435560472003" ID="ID_383138342" MODIFIED="1435560484071" TEXT="automatically prototype generation">
<node CREATED="1435560484473" ID="ID_965533009" MODIFIED="1435560521644" TEXT="generate on parsing continuation"/>
</node>
<node CREATED="1435560618814" ID="ID_166406179" MODIFIED="1435560630220" TEXT="data segment generation"/>
<node CREATED="1435560639478" ID="ID_1216392292" MODIFIED="1435560643602" TEXT="meta computing">
<node CREATED="1435561365449" ID="ID_1038042566" MODIFIED="1435561375726" TEXT="meta code segment">
<node CREATED="1435561376276" ID="ID_1035065432" MODIFIED="1435561390395" TEXT="as normal code segment"/>
<node CREATED="1435561390798" ID="ID_945434963" MODIFIED="1435561409195" TEXT="default meta code segment generate by compiler">
<node CREATED="1435561411794" ID="ID_162690299" MODIFIED="1435561603775" TEXT="code segment must transition to next code segment via meta code segment"/>
</node>
</node>
</node>
<node CREATED="1435561653445" ID="ID_76262488" MODIFIED="1435561655871" TEXT="data segment">
<node CREATED="1435561656181" ID="ID_1943384289" MODIFIED="1435561659342" TEXT="C struct"/>
<node CREATED="1435561659835" ID="ID_1056175512" MODIFIED="1435561662277" TEXT="message pack"/>
</node>
</node>
<node CREATED="1393415347894" ID="ID_28770432" MODIFIED="1393415350451" TEXT="parser">
<node CREATED="1393415266645" ID="ID_951993899" MODIFIED="1393415283396" TEXT="code segment">
<node CREATED="1393415284799" ID="ID_764459625" MODIFIED="1393415298631" TEXT="__code return type">
<node CREATED="1393415302801" ID="ID_236035508" MODIFIED="1393415304446" TEXT="void"/>
</node>
</node>
<node CREATED="1393415312026" ID="ID_1621189741" MODIFIED="1393415315007" TEXT="transition">
<node CREATED="1393415315450" ID="ID_736316481" MODIFIED="1393415320935" TEXT="goto statement">
<node CREATED="1393415322459" ID="ID_175709429" MODIFIED="1393415332993" TEXT="tail call"/>
</node>
</node>
<node CREATED="1435560111315" ID="ID_1074962285" MODIFIED="1435560148034" TEXT="automatically prototype generation"/>
</node>
<node CREATED="1393415368224" ID="ID_517402653" MODIFIED="1393415371502" TEXT="LLVM IR">
<node CREATED="1393415373512" ID="ID_693847326" MODIFIED="1393415376430" TEXT="no modification"/>
<node CREATED="1393415388666" ID="ID_1311715893" MODIFIED="1393415391368" TEXT="no longjmp"/>
<node CREATED="1393415413716" ID="ID_1613264825" MODIFIED="1393415417306" TEXT="call flag">
<node CREATED="1393415421541" ID="ID_1608008781" MODIFIED="1393415431244" TEXT="tail fastcc"/>
</node>
</node>
<node CREATED="1393415627042" ID="ID_1257476113" MODIFIED="1393415632184" TEXT="code generator">
<node CREATED="1393415637962" ID="ID_612555038" MODIFIED="1393415652834" TEXT="keep tail call elimination">
<node CREATED="1393415656725" ID="ID_1961345681" MODIFIED="1393415846167" TEXT="enable to tailcallopt LangOption"/>
<node CREATED="1393415679712" ID="ID_784535884" MODIFIED="1393415787328" TEXT="return statement immediatly follows call"/>
<node CREATED="1393415692481" ID="ID_1629653521" MODIFIED="1393415708511" TEXT="calling convenstion">
<node CREATED="1393415762376" ID="ID_1065699593" MODIFIED="1393415764534" TEXT="fastcc"/>
</node>
<node CREATED="1393415849865" ID="ID_931200842" MODIFIED="1393415866881" TEXT="enable to TailCallElim pass"/>
</node>
<node CREATED="1393415992520" ID="ID_1711082448" MODIFIED="1393415998718" TEXT="goto with env">
<node CREATED="1393415999016" ID="ID_1012787705" MODIFIED="1393416024713" TEXT="include setjmp.h always"/>
<node CREATED="1393416029172" ID="ID_1895175823" MODIFIED="1393416048388" TEXT="allocate jmp_buf">
<node CREATED="1393416101011" ID="ID_1966590300" MODIFIED="1393416119091" TEXT="generate C struct"/>
</node>
<node CREATED="1393416055534" ID="ID_1096279693" MODIFIED="1393416059181" TEXT="insert setjmp"/>
<node CREATED="1393416061799" ID="ID_178743765" MODIFIED="1393416073113" TEXT="generate longjmp code segment as return">
<node CREATED="1393416123989" ID="ID_1856531908" MODIFIED="1393416131780" TEXT="generate unique name"/>
</node>
</node>
</node>
</node>
<node CREATED="1393416671758" ID="ID_1340653074" MODIFIED="1393416673157" POSITION="left" TEXT="slides">
<node CREATED="1435569039705" ID="ID_491420761" MODIFIED="1435569043620" TEXT="introduction">
<node CREATED="1435569043953" ID="ID_541306171" MODIFIED="1435569103929" TEXT="we propose the programming paradigm which uses data segments and code segments"/>
<node CREATED="1435573490489" ID="ID_1006482183" MODIFIED="1435573542528" TEXT="code segments are units of calculation">
<node CREATED="1435573542903" ID="ID_861672222" MODIFIED="1435573546311" TEXT="no state"/>
</node>
<node CREATED="1435573548821" ID="ID_806295670" MODIFIED="1435573559548" TEXT="data segments are sets of typed data"/>
<node CREATED="1435573562551" ID="ID_1864031110" MODIFIED="1435573615252" TEXT="calculation and data was divided clearity"/>
<node CREATED="1435573039804" ID="ID_257264230" MODIFIED="1435573139737" TEXT="This paradigm uses Continuation based C">
<node CREATED="1435573142390" ID="ID_1047016117" MODIFIED="1435573149899" TEXT="extension and subset of C"/>
</node>
</node>
<node CREATED="1393416863961" ID="ID_1693901399" MODIFIED="1435574590238" TEXT="introduction of CbC">
<node CREATED="1393414821640" ID="ID_396781801" MODIFIED="1393414829757" TEXT="Usage">
<node CREATED="1393414831976" ID="ID_456207902" MODIFIED="1393414842247" TEXT="state machine">
<node CREATED="1435574641852" ID="ID_790129008" MODIFIED="1435574652141" TEXT="code segments have no state">
<node CREATED="1435574662925" ID="ID_1913946763" MODIFIED="1435574674997" TEXT="it is a state machine itself "/>
</node>
</node>
<node CREATED="1393414843426" ID="ID_102862002" MODIFIED="1393417089181" TEXT="pararell tasks">
<node CREATED="1435574704857" ID="ID_1138758353" MODIFIED="1435574723741" TEXT="pararell framework">
<node CREATED="1435574725395" ID="ID_1770407063" MODIFIED="1435574727445" TEXT="CUDA"/>
<node CREATED="1435574727747" ID="ID_792225337" MODIFIED="1435574730490" TEXT="OpenCL"/>
<node CREATED="1435574730848" ID="ID_188432968" MODIFIED="1435574733218" TEXT="Cerium"/>
</node>
</node>
<node CREATED="1435574739071" ID="ID_393185709" MODIFIED="1435574745431" TEXT="operating system">
<node CREATED="1435574745652" ID="ID_750453396" MODIFIED="1435574749286" TEXT="Gears OS"/>
</node>
<node CREATED="1393414891031" ID="ID_525611210" MODIFIED="1393414894788" TEXT="meta computation">
<node CREATED="1435558074653" ID="ID_1478823741" MODIFIED="1435574958109" TEXT="meta code segment">
<node CREATED="1435558082672" ID="ID_354188544" MODIFIED="1435558092791" TEXT="memory allocation and protection"/>
<node CREATED="1435558094612" ID="ID_1237672275" MODIFIED="1435558099838" TEXT="scheduling"/>
<node CREATED="1435558726018" ID="ID_109958332" MODIFIED="1435558741328" TEXT="exceptions"/>
</node>
<node CREATED="1435574917323" ID="ID_232327278" MODIFIED="1435574999368" TEXT="normal code segments have only essentially calculation"/>
</node>
<node CREATED="1393414931419" ID="ID_488599855" MODIFIED="1435575883681" TEXT="motivation">
<node CREATED="1393414935523" ID="ID_1783768164" MODIFIED="1393414945209" TEXT="programming language for machine"/>
</node>
</node>
<node CREATED="1393414737791" ID="ID_380706666" MODIFIED="1393417084781" TEXT="CbC">
<node CREATED="1393414742576" ID="ID_1643290496" MODIFIED="1435573665661" TEXT="code segments">
<node CREATED="1393414754993" ID="ID_230114117" MODIFIED="1393414758878" TEXT="__code"/>
</node>
<node CREATED="1393414764666" ID="ID_1197065414" MODIFIED="1393414778848" TEXT="transition">
<node CREATED="1393414779916" ID="ID_787914818" MODIFIED="1393414781703" TEXT="goto"/>
</node>
<node CREATED="1393414787748" ID="ID_1204285148" MODIFIED="1393414799130" TEXT="goto with env">
<node CREATED="1393414800806" ID="ID_1222521953" MODIFIED="1393414807315" TEXT="return to C"/>
</node>
<node CREATED="1435569381558" ID="ID_1994058439" MODIFIED="1435569428577" TEXT="compatible with C">
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1435573649310" ID="ID_713997746" MODIFIED="1435573653576" TEXT="data segments">
<node CREATED="1435573653733" ID="ID_241631707" MODIFIED="1435573658624" TEXT="typed data"/>
</node>
</node>
</node>
<node CREATED="1393416884379" ID="ID_1172740034" MODIFIED="1393476595365" TEXT="CbC compiler">
<node CREATED="1393414968247" ID="ID_1953752240" MODIFIED="1393414976300" TEXT="Implementation">
<node CREATED="1393414977096" ID="ID_697073293" MODIFIED="1393414993451" TEXT="Micro-C">
<node CREATED="1393414994914" ID="ID_1531301148" MODIFIED="1393415003568" TEXT="one pass standalone compiler"/>
</node>
<node CREATED="1393415006802" ID="ID_1773649193" MODIFIED="1393415008399" TEXT="GCC"/>
<node CREATED="1393415015692" ID="ID_371860294" MODIFIED="1393415017216" TEXT="LLVM">
<node CREATED="1393415019436" ID="ID_260478404" MODIFIED="1393415023185" TEXT="new!!"/>
</node>
</node>
</node>
<node CREATED="1393415033662" ID="ID_357796199" MODIFIED="1435563911313" TEXT="Why LLVM??">
<node CREATED="1393415039598" ID="ID_664184138" MODIFIED="1393415058997" TEXT="compiler framework"/>
<node CREATED="1393415060968" ID="ID_339954698" MODIFIED="1393415071478" TEXT="Apple supported">
<node CREATED="1393415077490" ID="ID_146949057" MODIFIED="1393415080567" TEXT="Open source"/>
<node CREATED="1393415224217" ID="ID_23238840" MODIFIED="1393415230393" TEXT="OS X default compiler"/>
</node>
<node CREATED="1393415087594" ID="ID_524041551" MODIFIED="1393415093328" TEXT="C++ base"/>
<node CREATED="1393415095596" ID="ID_924041337" MODIFIED="1393415115930" TEXT="AST generation"/>
<node CREATED="1393415120087" ID="ID_849295848" MODIFIED="1393415128259" TEXT="IR">
<node CREATED="1393415128663" ID="ID_1777758663" MODIFIED="1393415134845" TEXT="intermidiate representation"/>
</node>
<node CREATED="1393415157589" ID="ID_872050716" MODIFIED="1393415159047" TEXT="JIT">
<node CREATED="1393415168027" ID="ID_1667235842" MODIFIED="1393415174976" TEXT="dynamic execution"/>
<node CREATED="1393415182325" ID="ID_1066032053" MODIFIED="1393415192090" TEXT="dynamic compile"/>
</node>
</node>
<node CREATED="1393415462537" ID="ID_1811363439" MODIFIED="1393415470448" TEXT="basic strategy">
<node CREATED="1393415472602" ID="ID_1476331781" MODIFIED="1393415482097" TEXT="code segment as normal function"/>
<node CREATED="1393415485468" ID="ID_887912777" MODIFIED="1393415504659" TEXT="transition as forced tail call"/>
<node CREATED="1393415518303" ID="ID_993692066" MODIFIED="1393415530070" TEXT="nomodification on intermidiate code">
<node CREATED="1393415532177" ID="ID_1380774714" MODIFIED="1393415546209" TEXT="do not modify optimizer part"/>
</node>
<node CREATED="1393415567244" ID="ID_1715799047" MODIFIED="1393415592237" TEXT="goto with env as longjmp">
<node CREATED="1393415598752" ID="ID_815289397" MODIFIED="1393415607144" TEXT="GCC uses nested function"/>
<node CREATED="1393415613281" ID="ID_524371399" MODIFIED="1393415620857" TEXT="LLVM has no nested function"/>
</node>
</node>
<node CREATED="1393417146814" ID="ID_1237395406" MODIFIED="1393417160207" TEXT="Problems">
<node CREATED="1393417160640" ID="ID_471304556" MODIFIED="1393417166056" TEXT="LLVM IR">
<node CREATED="1393417166464" ID="ID_988821722" MODIFIED="1393417169304" TEXT="no longjmp"/>
<node CREATED="1393417290317" ID="ID_1546790643" MODIFIED="1393417370845" TEXT="LLVM IR sample">
<node CREATED="1393417371773" ID="ID_220201847" MODIFIED="1393417434364" TEXT="call flag">
<node CREATED="1393417434724" ID="ID_754626436" MODIFIED="1393417437636" TEXT="tail fastcc"/>
</node>
</node>
</node>
</node>
<node CREATED="1393417519436" ID="ID_881884451" MODIFIED="1393417522941" TEXT="Implementation">
<node CREATED="1393415347894" ID="ID_981559264" MODIFIED="1393432405649" TEXT="parser">
<node CREATED="1393415266645" ID="ID_1682610717" MODIFIED="1393415283396" TEXT="code segment">
<node CREATED="1393415284799" ID="ID_965880208" MODIFIED="1393415298631" TEXT="__code return type">
<node CREATED="1393415302801" ID="ID_460767008" MODIFIED="1393415304446" TEXT="void"/>
</node>
</node>
<node CREATED="1393415312026" ID="ID_1424951265" MODIFIED="1393415315007" TEXT="transition">
<node CREATED="1393415315450" ID="ID_1337913466" MODIFIED="1393415320935" TEXT="goto statement">
<node CREATED="1393415322459" ID="ID_3085529" MODIFIED="1393415332993" TEXT="tail call"/>
</node>
</node>
</node>
<node CREATED="1393415627042" ID="ID_741521429" MODIFIED="1393432403066" TEXT="code generator">
<node CREATED="1393415637962" ID="ID_1977344897" MODIFIED="1393415652834" TEXT="keep tail call elimination">
<node CREATED="1393415656725" ID="ID_1064982533" MODIFIED="1393415846167" TEXT="enable to tailcallopt LangOption"/>
<node CREATED="1393415679712" ID="ID_1236302074" MODIFIED="1393415787328" TEXT="return statement immediatly follows call"/>
<node CREATED="1393415692481" ID="ID_321900911" MODIFIED="1393415708511" TEXT="calling convenstion">
<node CREATED="1393415762376" ID="ID_188704360" MODIFIED="1393415764534" TEXT="fastcc"/>
</node>
<node CREATED="1393415849865" ID="ID_165554506" MODIFIED="1393415866881" TEXT="enable to TailCallElim pass"/>
</node>
<node CREATED="1393415992520" ID="ID_1662020634" MODIFIED="1393415998718" TEXT="goto with env">
<node CREATED="1393415999016" ID="ID_1021819186" MODIFIED="1393416024713" TEXT="include setjmp.h always"/>
<node CREATED="1393416029172" ID="ID_20885096" MODIFIED="1393416048388" TEXT="allocate jmp_buf">
<node CREATED="1393416101011" ID="ID_1442960034" MODIFIED="1393416119091" TEXT="generate C struct"/>
</node>
<node CREATED="1393416055534" ID="ID_1822902179" MODIFIED="1393416059181" TEXT="insert setjmp"/>
<node CREATED="1393416061799" ID="ID_1218489026" MODIFIED="1393416073113" TEXT="generate longjmp code segment as return">
<node CREATED="1393416123989" ID="ID_232453499" MODIFIED="1393416131780" TEXT="generate unique name"/>
</node>
</node>
</node>
<node CREATED="1393415877748" ID="ID_65529003" MODIFIED="1393431877271" TEXT="structure of LLVM">
<node CREATED="1393415891566" ID="ID_437797489" MODIFIED="1393415895675" TEXT="clang">
<node CREATED="1393415896022" ID="ID_565636299" MODIFIED="1393415897764" TEXT="parser"/>
<node CREATED="1393415898366" ID="ID_1706796038" MODIFIED="1393415902076" TEXT="codegen"/>
</node>
<node CREATED="1393415905895" ID="ID_55704278" MODIFIED="1393415907605" TEXT="LLVM">
<node CREATED="1393415908934" ID="ID_1807613827" MODIFIED="1393415925823" TEXT="Selection instruction "/>
<node CREATED="1393415929097" ID="ID_1153487463" MODIFIED="1393415936040" TEXT="optimizier">
<node CREATED="1393415957772" ID="ID_1315016882" MODIFIED="1393415964611" TEXT="passes">
<node CREATED="1393415975438" ID="ID_1183201430" MODIFIED="1393415980004" TEXT="CodeGenPrepare"/>
<node CREATED="1393415964845" ID="ID_1061645086" MODIFIED="1393415968707" TEXT="TailCallElim"/>
</node>
</node>
<node CREATED="1393415936994" ID="ID_380442434" MODIFIED="1393415943184" TEXT="Code generator"/>
</node>
</node>
</node>
<node CREATED="1393416184003" ID="ID_1836859823" MODIFIED="1393416187690" TEXT="Result">
<node CREATED="1393416189596" ID="ID_325187767" MODIFIED="1393416207660" TEXT="jmp instruction in assembler source"/>
<node CREATED="1393416209206" ID="ID_838681270" MODIFIED="1393416226606" TEXT="compare with Micro-C"/>
<node CREATED="1393416231104" ID="ID_1436390030" MODIFIED="1393416235071" TEXT="compare with GCC"/>
<node CREATED="1393416242714" ID="ID_1983472838" MODIFIED="1393416245584" TEXT="noinline"/>
</node>
</node>
</node>
</map>