log_module_fusion.txt 557 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888
  1. [INFO][runOnModule] Starting analysis for module: <stdin>
  2. [INFO][buildCallGraph] Building complete call graph
  3. ```mermaid
  4. graph TD
  5. %% Project Call Graph
  6. calculateCircleArea["calculateCircleArea\nDepth: 3\nCritical Points: 2"]
  7. calculateDistance["calculateDistance\nDepth: 3\nCritical Points: 2"]
  8. countSetBits["countSetBits\nDepth: 2\nCritical Points: 3"]:::target
  9. createDynamicArray["createDynamicArray\nDepth: 2\nCritical Points: 2"]
  10. createMatrix["createMatrix\nDepth: 2\nCritical Points: 2"]
  11. factorial["factorial\nDepth: 3\nCritical Points: 2"]
  12. findCentroid["findCentroid\nDepth: 3\nCritical Points: 2"]
  13. getErrorMessage["getErrorMessage\nDepth: 3\nCritical Points: 2"]
  14. insertNode["insertNode\nDepth: 2\nCritical Points: 2"]
  15. longestIncreasingSubsequence["longestIncreasingSubsequence\nDepth: 2\nCritical Points: 7"]:::target
  16. memoizedFib["memoizedFib\nDepth: 2\nCritical Points: 2"]:::target
  17. multiplyMatrices["multiplyMatrices\nDepth: 2\nCritical Points: 2"]
  18. performSimpleCalculations["performSimpleCalculations\nDepth: 3\nCritical Points: 7"]
  19. processMatrix["processMatrix\nDepth: 2\nCritical Points: 3"]:::target
  20. projectA_main["projectA_main\nDepth: 2\nCritical Points: 2"]
  21. projectB_main["projectB_main\nDepth: 1\nCritical Points: 5"]:::target
  22. pushBack["pushBack\nDepth: 2\nCritical Points: 2"]
  23. quickSort["quickSort\nDepth: 3\nCritical Points: 2"]
  24. removeDuplicates["removeDuplicates\nDepth: 3\nCritical Points: 2"]
  25. reverseString["reverseString\nDepth: 2\nCritical Points: 3"]:::target
  26. setErrorMessage["setErrorMessage\nDepth: 2\nCritical Points: 3"]
  27. testPoints["testPoints\nDepth: 2\nCritical Points: 3"]:::target
  28. validateMatrix["validateMatrix\nDepth: 3\nCritical Points: 2"]
  29. calculateCircleArea --> setErrorMessage
  30. calculateDistance --> setErrorMessage
  31. createDynamicArray --> setErrorMessage
  32. createMatrix --> setErrorMessage
  33. factorial --> factorial
  34. factorial --> setErrorMessage
  35. findCentroid --> setErrorMessage
  36. insertNode --> setErrorMessage
  37. memoizedFib --> memoizedFib
  38. multiplyMatrices --> createMatrix
  39. multiplyMatrices --> setErrorMessage
  40. processMatrix --> countSetBits
  41. projectA_main --> createDynamicArray
  42. projectA_main --> createMatrix
  43. projectA_main --> getErrorMessage
  44. projectA_main --> insertNode
  45. projectA_main --> multiplyMatrices
  46. projectA_main --> performSimpleCalculations
  47. projectA_main --> pushBack
  48. projectA_main --> setErrorMessage
  49. projectB_main --> countSetBits
  50. projectB_main --> longestIncreasingSubsequence
  51. projectB_main --> memoizedFib
  52. projectB_main --> processMatrix
  53. projectB_main --> reverseString
  54. projectB_main --> testPoints
  55. pushBack --> setErrorMessage
  56. quickSort --> quickSort
  57. quickSort --> setErrorMessage
  58. removeDuplicates --> quickSort
  59. removeDuplicates --> setErrorMessage
  60. validateMatrix --> setErrorMessage
  61. classDef target fill:#f96,stroke:#333,stroke-width:4px
  62. ```
  63. ```mermaid: getErrorMessage
  64. graph TD
  65. 0["Block 0:\n %1 = load i8*, i8** @globalErrorMessage, align 8\n %2 = icmp ne i8* %1, null\n br i1 %2, label %3, label %5\n"]:::critical
  66. 0 -->|true| 3
  67. 0 -->|false| 5
  68. 3["Block 3:\n %4 = load i8*, i8** @globalErrorMessage, align 8\n br label %6\n"]
  69. 3 --> 6
  70. 5["Block 5:\n br label %6\n"]
  71. 5 --> 6
  72. 6["Block 6:\n %7 = phi i8* [ %4, %3 ], [ getelementptr inbo...\n ret i8* %7\n"]:::critical
  73. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  74. ```
  75. ```mermaid: setErrorMessage
  76. graph TD
  77. 1["Block 1:\n %2 = alloca i8*, align 8\n store i8* %0, i8** %2, align 8\n %3 = load i8*, i8** @globalErrorMessage, align 8\n %4 = icmp ne i8* %3, null\n br i1 %4, label %5, label %7\n"]:::critical
  78. 1 -->|true| 5
  79. 1 -->|false| 7
  80. 5["Block 5:\n %6 = load i8*, i8** @globalErrorMessage, align 8\n call void @free(i8* %6) #7\n br label %7\n"]
  81. 5 --> 7
  82. 7["Block 7:\n %8 = load i8*, i8** %2, align 8\n %9 = icmp ne i8* %8, null\n br i1 %9, label %10, label %19\n"]:::critical
  83. 7 -->|true| 10
  84. 7 -->|false| 19
  85. 10["Block 10:\n %11 = load i8*, i8** %2, align 8\n %12 = call noalias i8* @strdup(i8* %11) #7\n store i8* %12, i8** @globalErrorMessage, align 8\n %13 = load i8*, i8** @globalErrorMessage, ali...\n %14 = icmp eq i8* %13, null\n br i1 %14, label %15, label %18\n"]
  86. 10 -->|true| 15
  87. 10 -->|false| 18
  88. 15["Block 15:\n %16 = load %struct._IO_FILE*, %struct._IO_FIL...\n %17 = call i32 (%struct._IO_FILE*, i8*, ...) ...\n br label %18\n"]
  89. 15 --> 18
  90. 18["Block 18:\n br label %20\n"]
  91. 18 --> 20
  92. 19["Block 19:\n store i8* null, i8** @globalErrorMessage, ali...\n br label %20\n"]
  93. 19 --> 20
  94. 20["Block 20:\n ret void\n"]:::critical
  95. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  96. ```
  97. ```mermaid: factorial
  98. graph TD
  99. 1["Block 1:\n %2 = alloca i32, align 4\n %3 = alloca i32, align 4\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store i32 %0, i32* %3, align 4\n %6 = load i32, i32* @recursionDepth, align 4\n %7 = add nsw i32 %6, 1\n store i32 %7, i32* @recursionDepth, align 4\n %8 = icmp sgt i32 %7, 1000\n br i1 %8, label %9, label %12\n"]:::critical
  100. 1 -->|true| 9
  101. 1 -->|false| 12
  102. 9["Block 9:\n call void @setErrorMessage(i8* getelementptr ...\n %10 = load i32, i32* @recursionDepth, align 4\n %11 = add nsw i32 %10, -1\n store i32 %11, i32* @recursionDepth, align 4\n store i32 -1, i32* %2, align 4\n br label %53\n"]
  103. 9 --> 53
  104. 12["Block 12:\n %13 = load i32, i32* %3, align 4\n %14 = icmp slt i32 %13, 0\n br i1 %14, label %15, label %18\n"]
  105. 12 -->|true| 15
  106. 12 -->|false| 18
  107. 15["Block 15:\n call void @setErrorMessage(i8* getelementptr ...\n %16 = load i32, i32* @recursionDepth, align 4\n %17 = add nsw i32 %16, -1\n store i32 %17, i32* @recursionDepth, align 4\n store i32 -1, i32* %2, align 4\n br label %53\n"]
  108. 15 --> 53
  109. 18["Block 18:\n %19 = load i32, i32* %3, align 4\n %20 = icmp sgt i32 %19, 20\n br i1 %20, label %21, label %24\n"]
  110. 18 -->|true| 21
  111. 18 -->|false| 24
  112. 21["Block 21:\n call void @setErrorMessage(i8* getelementptr ...\n %22 = load i32, i32* @recursionDepth, align 4\n %23 = add nsw i32 %22, -1\n store i32 %23, i32* @recursionDepth, align 4\n store i32 -1, i32* %2, align 4\n br label %53\n"]
  113. 21 --> 53
  114. 24["Block 24:\n %25 = load i32, i32* %3, align 4\n %26 = icmp sle i32 %25, 1\n br i1 %26, label %27, label %28\n"]
  115. 24 -->|true| 27
  116. 24 -->|false| 28
  117. 27["Block 27:\n store i32 1, i32* %4, align 4\n br label %49\n"]
  118. 27 --> 49
  119. 28["Block 28:\n %29 = load i32, i32* %3, align 4\n %30 = sub nsw i32 %29, 1\n %31 = call i32 @factorial(i32 %30)\n store i32 %31, i32* %5, align 4\n %32 = load i32, i32* %5, align 4\n %33 = icmp eq i32 %32, -1\n br i1 %33, label %34, label %37\n"]
  120. 28 -->|true| 34
  121. 28 -->|false| 37
  122. 34["Block 34:\n %35 = load i32, i32* @recursionDepth, align 4\n %36 = add nsw i32 %35, -1\n store i32 %36, i32* @recursionDepth, align 4\n store i32 -1, i32* %2, align 4\n br label %53\n"]
  123. 34 --> 53
  124. 37["Block 37:\n %38 = load i32, i32* %5, align 4\n %39 = load i32, i32* %3, align 4\n %40 = sdiv i32 2147483647, %39\n %41 = icmp sgt i32 %38, %40\n br i1 %41, label %42, label %45\n"]
  125. 37 -->|true| 42
  126. 37 -->|false| 45
  127. 42["Block 42:\n call void @setErrorMessage(i8* getelementptr ...\n %43 = load i32, i32* @recursionDepth, align 4\n %44 = add nsw i32 %43, -1\n store i32 %44, i32* @recursionDepth, align 4\n store i32 -1, i32* %2, align 4\n br label %53\n"]
  128. 42 --> 53
  129. 45["Block 45:\n %46 = load i32, i32* %3, align 4\n %47 = load i32, i32* %5, align 4\n %48 = mul nsw i32 %46, %47\n store i32 %48, i32* %4, align 4\n br label %49\n"]
  130. 45 --> 49
  131. 49["Block 49:\n %50 = load i32, i32* @recursionDepth, align 4\n %51 = add nsw i32 %50, -1\n store i32 %51, i32* @recursionDepth, align 4\n %52 = load i32, i32* %4, align 4\n store i32 %52, i32* %2, align 4\n br label %53\n"]
  132. 49 --> 53
  133. 53["Block 53:\n %54 = load i32, i32* %2, align 4\n ret i32 %54\n"]:::critical
  134. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  135. ```
  136. ```mermaid: createDynamicArray
  137. graph TD
  138. 1["Block 1:\n %2 = alloca %struct.DynamicArray*, align 8\n %3 = alloca i32, align 4\n %4 = alloca %struct.DynamicArray*, align 8\n store i32 %0, i32* %3, align 4\n %5 = load i32, i32* %3, align 4\n %6 = icmp sle i32 %5, 0\n br i1 %6, label %7, label %8\n"]:::critical
  139. 1 -->|true| 7
  140. 1 -->|false| 8
  141. 7["Block 7:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %44\n"]
  142. 7 --> 44
  143. 8["Block 8:\n %9 = load i32, i32* %3, align 4\n %10 = icmp sgt i32 %9, 1000\n br i1 %10, label %11, label %12\n"]
  144. 8 -->|true| 11
  145. 8 -->|false| 12
  146. 11["Block 11:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %44\n"]
  147. 11 --> 44
  148. 12["Block 12:\n %13 = call noalias i8* @malloc(i64 24) #7\n %14 = bitcast i8* %13 to %struct.DynamicArray*\n store %struct.DynamicArray* %14, %struct.Dyna...\n %15 = load %struct.DynamicArray*, %struct.Dyn...\n %16 = icmp ne %struct.DynamicArray* %15, null\n br i1 %16, label %18, label %17\n"]
  149. 12 -->|true| 18
  150. 12 -->|false| 17
  151. 17["Block 17:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %44\n"]
  152. 17 --> 44
  153. 18["Block 18:\n %19 = load i32, i32* %3, align 4\n %20 = sext i32 %19 to i64\n %21 = mul i64 4, %20\n %22 = call noalias i8* @malloc(i64 %21) #7\n %23 = bitcast i8* %22 to i32*\n %24 = load %struct.DynamicArray*, %struct.Dyn...\n %25 = getelementptr inbounds %struct.DynamicA...\n store i32* %23, i32** %25, align 8\n %26 = load %struct.DynamicArray*, %struct.Dyn...\n %27 = getelementptr inbounds %struct.DynamicA...\n %28 = load i32*, i32** %27, align 8\n %29 = icmp ne i32* %28, null\n br i1 %29, label %33, label %30\n"]
  154. 18 -->|true| 33
  155. 18 -->|false| 30
  156. 30["Block 30:\n %31 = load %struct.DynamicArray*, %struct.Dyn...\n %32 = bitcast %struct.DynamicArray* %31 to i8*\n call void @free(i8* %32) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %44\n"]
  157. 30 --> 44
  158. 33["Block 33:\n %34 = load %struct.DynamicArray*, %struct.Dyn...\n %35 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %35, align 8\n %36 = load i32, i32* %3, align 4\n %37 = load %struct.DynamicArray*, %struct.Dyn...\n %38 = getelementptr inbounds %struct.DynamicA...\n store i32 %36, i32* %38, align 4\n %39 = load %struct.DynamicArray*, %struct.Dyn...\n %40 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %40, align 8\n %41 = load %struct.DynamicArray*, %struct.Dyn...\n %42 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %42, align 4\n %43 = load %struct.DynamicArray*, %struct.Dyn...\n store %struct.DynamicArray* %43, %struct.Dyna...\n br label %44\n"]
  159. 33 --> 44
  160. 44["Block 44:\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n ret %struct.DynamicArray* %45\n"]:::critical
  161. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  162. ```
  163. ```mermaid: pushBack
  164. graph TD
  165. 2["Block 2:\n %3 = alloca %struct.DynamicArray*, align 8\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n %6 = alloca i32*, align 8\n store %struct.DynamicArray* %0, %struct.Dynam...\n store i32 %1, i32* %4, align 4\n %7 = load %struct.DynamicArray*, %struct.Dyna...\n %8 = icmp ne %struct.DynamicArray* %7, null\n br i1 %8, label %10, label %9\n"]:::critical
  166. 2 -->|true| 10
  167. 2 -->|false| 9
  168. 9["Block 9:\n call void @setErrorMessage(i8* getelementptr ...\n br label %91\n"]
  169. 9 --> 91
  170. 10["Block 10:\n %11 = load %struct.DynamicArray*, %struct.Dyn...\n %12 = getelementptr inbounds %struct.DynamicA...\n %13 = load i32, i32* %12, align 8\n %14 = icmp sge i32 %13, 1000\n br i1 %14, label %15, label %16\n"]
  171. 10 -->|true| 15
  172. 10 -->|false| 16
  173. 15["Block 15:\n call void @setErrorMessage(i8* getelementptr ...\n br label %91\n"]
  174. 15 --> 91
  175. 16["Block 16:\n %17 = load %struct.DynamicArray*, %struct.Dyn...\n %18 = getelementptr inbounds %struct.DynamicA...\n %19 = load i32, i32* %18, align 8\n %20 = load %struct.DynamicArray*, %struct.Dyn...\n %21 = getelementptr inbounds %struct.DynamicA...\n %22 = load i32, i32* %21, align 4\n %23 = icmp sge i32 %19, %22\n br i1 %23, label %24, label %52\n"]
  176. 16 -->|true| 24
  177. 16 -->|false| 52
  178. 24["Block 24:\n %25 = load %struct.DynamicArray*, %struct.Dyn...\n %26 = getelementptr inbounds %struct.DynamicA...\n %27 = load i32, i32* %26, align 4\n %28 = mul nsw i32 %27, 2\n store i32 %28, i32* %5, align 4\n %29 = load i32, i32* %5, align 4\n %30 = icmp sgt i32 %29, 1000\n br i1 %30, label %31, label %32\n"]
  179. 24 -->|true| 31
  180. 24 -->|false| 32
  181. 31["Block 31:\n store i32 1000, i32* %5, align 4\n br label %32\n"]
  182. 31 --> 32
  183. 32["Block 32:\n %33 = load %struct.DynamicArray*, %struct.Dyn...\n %34 = getelementptr inbounds %struct.DynamicA...\n %35 = load i32*, i32** %34, align 8\n %36 = bitcast i32* %35 to i8*\n %37 = load i32, i32* %5, align 4\n %38 = sext i32 %37 to i64\n %39 = mul i64 4, %38\n %40 = call i8* @realloc(i8* %36, i64 %39) #7\n %41 = bitcast i8* %40 to i32*\n store i32* %41, i32** %6, align 8\n %42 = load i32*, i32** %6, align 8\n %43 = icmp ne i32* %42, null\n br i1 %43, label %45, label %44\n"]
  184. 32 -->|true| 45
  185. 32 -->|false| 44
  186. 44["Block 44:\n call void @setErrorMessage(i8* getelementptr ...\n br label %91\n"]
  187. 44 --> 91
  188. 45["Block 45:\n %46 = load i32*, i32** %6, align 8\n %47 = load %struct.DynamicArray*, %struct.Dyn...\n %48 = getelementptr inbounds %struct.DynamicA...\n store i32* %46, i32** %48, align 8\n %49 = load i32, i32* %5, align 4\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n store i32 %49, i32* %51, align 4\n br label %52\n"]
  189. 45 --> 52
  190. 52["Block 52:\n %53 = load %struct.DynamicArray*, %struct.Dyn...\n %54 = getelementptr inbounds %struct.DynamicA...\n %55 = load i32, i32* %54, align 8\n %56 = icmp ne i32 %55, 0\n br i1 %56, label %57, label %78\n"]
  191. 52 -->|true| 57
  192. 52 -->|false| 78
  193. 57["Block 57:\n %58 = load %struct.DynamicArray*, %struct.Dyn...\n %59 = getelementptr inbounds %struct.DynamicA...\n %60 = load i32, i32* %59, align 8\n %61 = icmp sgt i32 %60, 0\n br i1 %61, label %62, label %78\n"]
  194. 57 -->|true| 62
  195. 57 -->|false| 78
  196. 62["Block 62:\n %63 = load i32, i32* %4, align 4\n %64 = load %struct.DynamicArray*, %struct.Dyn...\n %65 = getelementptr inbounds %struct.DynamicA...\n %66 = load i32*, i32** %65, align 8\n %67 = load %struct.DynamicArray*, %struct.Dyn...\n %68 = getelementptr inbounds %struct.DynamicA...\n %69 = load i32, i32* %68, align 8\n %70 = sub nsw i32 %69, 1\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %66, i...\n %73 = load i32, i32* %72, align 4\n %74 = icmp slt i32 %63, %73\n br i1 %74, label %75, label %78\n"]
  197. 62 -->|true| 75
  198. 62 -->|false| 78
  199. 75["Block 75:\n %76 = load %struct.DynamicArray*, %struct.Dyn...\n %77 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %77, align 8\n br label %78\n"]
  200. 75 --> 78
  201. 78["Block 78:\n %79 = load i32, i32* %4, align 4\n %80 = load %struct.DynamicArray*, %struct.Dyn...\n %81 = getelementptr inbounds %struct.DynamicA...\n %82 = load i32*, i32** %81, align 8\n %83 = load %struct.DynamicArray*, %struct.Dyn...\n %84 = getelementptr inbounds %struct.DynamicA...\n %85 = load i32, i32* %84, align 8\n %86 = add nsw i32 %85, 1\n store i32 %86, i32* %84, align 8\n %87 = sext i32 %85 to i64\n %88 = getelementptr inbounds i32, i32* %82, i...\n store i32 %79, i32* %88, align 4\n %89 = load %struct.DynamicArray*, %struct.Dyn...\n %90 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %90, align 4\n br label %91\n"]
  202. 78 --> 91
  203. 91["Block 91:\n ret void\n"]:::critical
  204. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  205. ```
  206. ```mermaid: quickSort
  207. graph TD
  208. 4["Block 4:\n %5 = alloca i32*, align 8\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32*, align 8\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = alloca i32, align 4\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n store i32* %0, i32** %5, align 8\n store i32 %1, i32* %6, align 4\n store i32 %2, i32* %7, align 4\n store i32* %3, i32** %8, align 8\n %15 = load i32, i32* @recursionDepth, align 4\n %16 = add nsw i32 %15, 1\n store i32 %16, i32* @recursionDepth, align 4\n %17 = icmp sgt i32 %16, 1000\n br i1 %17, label %18, label %22\n"]:::critical
  209. 4 -->|true| 18
  210. 4 -->|false| 22
  211. 18["Block 18:\n call void @setErrorMessage(i8* getelementptr ...\n %19 = load i32*, i32** %8, align 8\n store i32 1, i32* %19, align 4\n %20 = load i32, i32* @recursionDepth, align 4\n %21 = add nsw i32 %20, -1\n store i32 %21, i32* @recursionDepth, align 4\n br label %247\n"]
  212. 18 --> 247
  213. 22["Block 22:\n %23 = load i32*, i32** %5, align 8\n %24 = icmp ne i32* %23, null\n br i1 %24, label %29, label %25\n"]
  214. 22 -->|true| 29
  215. 22 -->|false| 25
  216. 25["Block 25:\n call void @setErrorMessage(i8* getelementptr ...\n %26 = load i32*, i32** %8, align 8\n store i32 1, i32* %26, align 4\n %27 = load i32, i32* @recursionDepth, align 4\n %28 = add nsw i32 %27, -1\n store i32 %28, i32* @recursionDepth, align 4\n br label %247\n"]
  217. 25 --> 247
  218. 29["Block 29:\n %30 = load i32, i32* %6, align 4\n %31 = icmp slt i32 %30, 0\n br i1 %31, label %41, label %32\n"]
  219. 29 -->|true| 41
  220. 29 -->|false| 32
  221. 32["Block 32:\n %33 = load i32, i32* %7, align 4\n %34 = icmp slt i32 %33, 0\n br i1 %34, label %41, label %35\n"]
  222. 32 -->|true| 41
  223. 32 -->|false| 35
  224. 35["Block 35:\n %36 = load i32, i32* %6, align 4\n %37 = icmp sge i32 %36, 1000\n br i1 %37, label %41, label %38\n"]
  225. 35 -->|true| 41
  226. 35 -->|false| 38
  227. 38["Block 38:\n %39 = load i32, i32* %7, align 4\n %40 = icmp sge i32 %39, 1000\n br i1 %40, label %41, label %45\n"]
  228. 38 -->|true| 41
  229. 38 -->|false| 45
  230. 41["Block 41:\n call void @setErrorMessage(i8* getelementptr ...\n %42 = load i32*, i32** %8, align 8\n store i32 1, i32* %42, align 4\n %43 = load i32, i32* @recursionDepth, align 4\n %44 = add nsw i32 %43, -1\n store i32 %44, i32* @recursionDepth, align 4\n br label %247\n"]
  231. 41 --> 247
  232. 45["Block 45:\n %46 = load i32, i32* %6, align 4\n %47 = load i32, i32* %7, align 4\n %48 = icmp slt i32 %46, %47\n br i1 %48, label %49, label %244\n"]
  233. 45 -->|true| 49
  234. 45 -->|false| 244
  235. 49["Block 49:\n %50 = load i32, i32* %6, align 4\n %51 = load i32, i32* %7, align 4\n %52 = load i32, i32* %6, align 4\n %53 = sub nsw i32 %51, %52\n %54 = sdiv i32 %53, 2\n %55 = add nsw i32 %50, %54\n store i32 %55, i32* %9, align 4\n %56 = load i32*, i32** %5, align 8\n %57 = load i32, i32* %6, align 4\n %58 = sext i32 %57 to i64\n %59 = getelementptr inbounds i32, i32* %56, i...\n %60 = load i32, i32* %59, align 4\n %61 = load i32*, i32** %5, align 8\n %62 = load i32, i32* %9, align 4\n %63 = sext i32 %62 to i64\n %64 = getelementptr inbounds i32, i32* %61, i...\n %65 = load i32, i32* %64, align 4\n %66 = icmp sle i32 %60, %65\n br i1 %66, label %67, label %99\n"]
  236. 49 -->|true| 67
  237. 49 -->|false| 99
  238. 67["Block 67:\n %68 = load i32*, i32** %5, align 8\n %69 = load i32, i32* %9, align 4\n %70 = sext i32 %69 to i64\n %71 = getelementptr inbounds i32, i32* %68, i...\n %72 = load i32, i32* %71, align 4\n %73 = load i32*, i32** %5, align 8\n %74 = load i32, i32* %7, align 4\n %75 = sext i32 %74 to i64\n %76 = getelementptr inbounds i32, i32* %73, i...\n %77 = load i32, i32* %76, align 4\n %78 = icmp sle i32 %72, %77\n br i1 %78, label %79, label %81\n"]
  239. 67 -->|true| 79
  240. 67 -->|false| 81
  241. 79["Block 79:\n %80 = load i32, i32* %9, align 4\n store i32 %80, i32* %10, align 4\n br label %98\n"]
  242. 79 --> 98
  243. 81["Block 81:\n %82 = load i32*, i32** %5, align 8\n %83 = load i32, i32* %6, align 4\n %84 = sext i32 %83 to i64\n %85 = getelementptr inbounds i32, i32* %82, i...\n %86 = load i32, i32* %85, align 4\n %87 = load i32*, i32** %5, align 8\n %88 = load i32, i32* %7, align 4\n %89 = sext i32 %88 to i64\n %90 = getelementptr inbounds i32, i32* %87, i...\n %91 = load i32, i32* %90, align 4\n %92 = icmp sle i32 %86, %91\n br i1 %92, label %93, label %95\n"]
  244. 81 -->|true| 93
  245. 81 -->|false| 95
  246. 93["Block 93:\n %94 = load i32, i32* %7, align 4\n store i32 %94, i32* %10, align 4\n br label %97\n"]
  247. 93 --> 97
  248. 95["Block 95:\n %96 = load i32, i32* %6, align 4\n store i32 %96, i32* %10, align 4\n br label %97\n"]
  249. 95 --> 97
  250. 97["Block 97:\n br label %98\n"]
  251. 97 --> 98
  252. 98["Block 98:\n br label %131\n"]
  253. 98 --> 131
  254. 99["Block 99:\n %100 = load i32*, i32** %5, align 8\n %101 = load i32, i32* %6, align 4\n %102 = sext i32 %101 to i64\n %103 = getelementptr inbounds i32, i32* %100,...\n %104 = load i32, i32* %103, align 4\n %105 = load i32*, i32** %5, align 8\n %106 = load i32, i32* %7, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds i32, i32* %105,...\n %109 = load i32, i32* %108, align 4\n %110 = icmp sle i32 %104, %109\n br i1 %110, label %111, label %113\n"]
  255. 99 -->|true| 111
  256. 99 -->|false| 113
  257. 111["Block 111:\n %112 = load i32, i32* %6, align 4\n store i32 %112, i32* %10, align 4\n br label %130\n"]
  258. 111 --> 130
  259. 113["Block 113:\n %114 = load i32*, i32** %5, align 8\n %115 = load i32, i32* %9, align 4\n %116 = sext i32 %115 to i64\n %117 = getelementptr inbounds i32, i32* %114,...\n %118 = load i32, i32* %117, align 4\n %119 = load i32*, i32** %5, align 8\n %120 = load i32, i32* %7, align 4\n %121 = sext i32 %120 to i64\n %122 = getelementptr inbounds i32, i32* %119,...\n %123 = load i32, i32* %122, align 4\n %124 = icmp sle i32 %118, %123\n br i1 %124, label %125, label %127\n"]
  260. 113 -->|true| 125
  261. 113 -->|false| 127
  262. 125["Block 125:\n %126 = load i32, i32* %7, align 4\n store i32 %126, i32* %10, align 4\n br label %129\n"]
  263. 125 --> 129
  264. 127["Block 127:\n %128 = load i32, i32* %9, align 4\n store i32 %128, i32* %10, align 4\n br label %129\n"]
  265. 127 --> 129
  266. 129["Block 129:\n br label %130\n"]
  267. 129 --> 130
  268. 130["Block 130:\n br label %131\n"]
  269. 130 --> 131
  270. 131["Block 131:\n %132 = load i32*, i32** %5, align 8\n %133 = load i32, i32* %7, align 4\n %134 = sext i32 %133 to i64\n %135 = getelementptr inbounds i32, i32* %132,...\n %136 = load i32, i32* %135, align 4\n store i32 %136, i32* %11, align 4\n %137 = load i32*, i32** %5, align 8\n %138 = load i32, i32* %10, align 4\n %139 = sext i32 %138 to i64\n %140 = getelementptr inbounds i32, i32* %137,...\n %141 = load i32, i32* %140, align 4\n %142 = load i32*, i32** %5, align 8\n %143 = load i32, i32* %7, align 4\n %144 = sext i32 %143 to i64\n %145 = getelementptr inbounds i32, i32* %142,...\n store i32 %141, i32* %145, align 4\n %146 = load i32, i32* %11, align 4\n %147 = load i32*, i32** %5, align 8\n %148 = load i32, i32* %10, align 4\n %149 = sext i32 %148 to i64\n %150 = getelementptr inbounds i32, i32* %147,...\n store i32 %146, i32* %150, align 4\n %151 = load i32*, i32** %5, align 8\n %152 = load i32, i32* %7, align 4\n %153 = sext i32 %152 to i64\n %154 = getelementptr inbounds i32, i32* %151,...\n %155 = load i32, i32* %154, align 4\n store i32 %155, i32* %12, align 4\n %156 = load i32, i32* %6, align 4\n %157 = sub nsw i32 %156, 1\n store i32 %157, i32* %13, align 4\n %158 = load i32, i32* %6, align 4\n store i32 %158, i32* %14, align 4\n br label %159\n"]
  271. 131 --> 159
  272. 159["Block 159:\n %160 = load i32, i32* %14, align 4\n %161 = load i32, i32* %7, align 4\n %162 = icmp slt i32 %160, %161\n br i1 %162, label %163, label %199\n"]
  273. 159 -->|true| 163
  274. 159 -->|false| 199
  275. 163["Block 163:\n %164 = load i32*, i32** %5, align 8\n %165 = load i32, i32* %14, align 4\n %166 = sext i32 %165 to i64\n %167 = getelementptr inbounds i32, i32* %164,...\n %168 = load i32, i32* %167, align 4\n %169 = load i32, i32* %12, align 4\n %170 = icmp sle i32 %168, %169\n br i1 %170, label %171, label %195\n"]
  276. 163 -->|true| 171
  277. 163 -->|false| 195
  278. 171["Block 171:\n %172 = load i32, i32* %13, align 4\n %173 = add nsw i32 %172, 1\n store i32 %173, i32* %13, align 4\n %174 = load i32*, i32** %5, align 8\n %175 = load i32, i32* %13, align 4\n %176 = sext i32 %175 to i64\n %177 = getelementptr inbounds i32, i32* %174,...\n %178 = load i32, i32* %177, align 4\n store i32 %178, i32* %11, align 4\n %179 = load i32*, i32** %5, align 8\n %180 = load i32, i32* %14, align 4\n %181 = sext i32 %180 to i64\n %182 = getelementptr inbounds i32, i32* %179,...\n %183 = load i32, i32* %182, align 4\n %184 = load i32*, i32** %5, align 8\n %185 = load i32, i32* %13, align 4\n %186 = sext i32 %185 to i64\n %187 = getelementptr inbounds i32, i32* %184,...\n store i32 %183, i32* %187, align 4\n %188 = load i32, i32* %11, align 4\n %189 = load i32*, i32** %5, align 8\n %190 = load i32, i32* %14, align 4\n %191 = sext i32 %190 to i64\n %192 = getelementptr inbounds i32, i32* %189,...\n store i32 %188, i32* %192, align 4\n %193 = load i32, i32* @globalCounter, align 4\n %194 = add nsw i32 %193, 1\n store i32 %194, i32* @globalCounter, align 4\n br label %195\n"]
  279. 171 --> 195
  280. 195["Block 195:\n br label %196\n"]
  281. 195 --> 196
  282. 196["Block 196:\n %197 = load i32, i32* %14, align 4\n %198 = add nsw i32 %197, 1\n store i32 %198, i32* %14, align 4\n br label %159\n"]
  283. 196 --> 159
  284. 199["Block 199:\n %200 = load i32*, i32** %5, align 8\n %201 = load i32, i32* %13, align 4\n %202 = add nsw i32 %201, 1\n %203 = sext i32 %202 to i64\n %204 = getelementptr inbounds i32, i32* %200,...\n %205 = load i32, i32* %204, align 4\n store i32 %205, i32* %11, align 4\n %206 = load i32*, i32** %5, align 8\n %207 = load i32, i32* %7, align 4\n %208 = sext i32 %207 to i64\n %209 = getelementptr inbounds i32, i32* %206,...\n %210 = load i32, i32* %209, align 4\n %211 = load i32*, i32** %5, align 8\n %212 = load i32, i32* %13, align 4\n %213 = add nsw i32 %212, 1\n %214 = sext i32 %213 to i64\n %215 = getelementptr inbounds i32, i32* %211,...\n store i32 %210, i32* %215, align 4\n %216 = load i32, i32* %11, align 4\n %217 = load i32*, i32** %5, align 8\n %218 = load i32, i32* %7, align 4\n %219 = sext i32 %218 to i64\n %220 = getelementptr inbounds i32, i32* %217,...\n store i32 %216, i32* %220, align 4\n %221 = load i32*, i32** %5, align 8\n %222 = load i32, i32* %6, align 4\n %223 = load i32, i32* %13, align 4\n %224 = load i32*, i32** %8, align 8\n call void @quickSort(i32* %221, i32 %222, i32...\n %225 = load i32*, i32** %8, align 8\n %226 = load i32, i32* %225, align 4\n %227 = icmp ne i32 %226, 0\n br i1 %227, label %228, label %231\n"]
  285. 199 -->|true| 228
  286. 199 -->|false| 231
  287. 228["Block 228:\n %229 = load i32, i32* @recursionDepth, align 4\n %230 = add nsw i32 %229, -1\n store i32 %230, i32* @recursionDepth, align 4\n br label %247\n"]
  288. 228 --> 247
  289. 231["Block 231:\n %232 = load i32*, i32** %5, align 8\n %233 = load i32, i32* %13, align 4\n %234 = add nsw i32 %233, 2\n %235 = load i32, i32* %7, align 4\n %236 = load i32*, i32** %8, align 8\n call void @quickSort(i32* %232, i32 %234, i32...\n %237 = load i32*, i32** %8, align 8\n %238 = load i32, i32* %237, align 4\n %239 = icmp ne i32 %238, 0\n br i1 %239, label %240, label %243\n"]
  290. 231 -->|true| 240
  291. 231 -->|false| 243
  292. 240["Block 240:\n %241 = load i32, i32* @recursionDepth, align 4\n %242 = add nsw i32 %241, -1\n store i32 %242, i32* @recursionDepth, align 4\n br label %247\n"]
  293. 240 --> 247
  294. 243["Block 243:\n br label %244\n"]
  295. 243 --> 244
  296. 244["Block 244:\n %245 = load i32, i32* @recursionDepth, align 4\n %246 = add nsw i32 %245, -1\n store i32 %246, i32* @recursionDepth, align 4\n br label %247\n"]
  297. 244 --> 247
  298. 247["Block 247:\n ret void\n"]:::critical
  299. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  300. ```
  301. ```mermaid: createMatrix
  302. graph TD
  303. 2["Block 2:\n %3 = alloca %struct.Matrix*, align 8\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n %6 = alloca %struct.Matrix*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n store i32 %0, i32* %4, align 4\n store i32 %1, i32* %5, align 4\n %9 = load i32, i32* %4, align 4\n %10 = icmp slt i32 %9, 1\n br i1 %10, label %14, label %11\n"]:::critical
  304. 2 -->|true| 14
  305. 2 -->|false| 11
  306. 11["Block 11:\n %12 = load i32, i32* %5, align 4\n %13 = icmp slt i32 %12, 1\n br i1 %13, label %14, label %15\n"]
  307. 11 -->|true| 14
  308. 11 -->|false| 15
  309. 14["Block 14:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %111\n"]
  310. 14 --> 111
  311. 15["Block 15:\n %16 = load i32, i32* %4, align 4\n %17 = icmp sgt i32 %16, 100\n br i1 %17, label %21, label %18\n"]
  312. 15 -->|true| 21
  313. 15 -->|false| 18
  314. 18["Block 18:\n %19 = load i32, i32* %5, align 4\n %20 = icmp sgt i32 %19, 100\n br i1 %20, label %21, label %22\n"]
  315. 18 -->|true| 21
  316. 18 -->|false| 22
  317. 21["Block 21:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %111\n"]
  318. 21 --> 111
  319. 22["Block 22:\n %23 = call noalias i8* @malloc(i64 32) #7\n %24 = bitcast i8* %23 to %struct.Matrix*\n store %struct.Matrix* %24, %struct.Matrix** %...\n %25 = load %struct.Matrix*, %struct.Matrix** ...\n %26 = icmp ne %struct.Matrix* %25, null\n br i1 %26, label %28, label %27\n"]
  320. 22 -->|true| 28
  321. 22 -->|false| 27
  322. 27["Block 27:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %111\n"]
  323. 27 --> 111
  324. 28["Block 28:\n %29 = load i32, i32* %4, align 4\n %30 = load %struct.Matrix*, %struct.Matrix** ...\n %31 = getelementptr inbounds %struct.Matrix, ...\n store i32 %29, i32* %31, align 8\n %32 = load i32, i32* %5, align 4\n %33 = load %struct.Matrix*, %struct.Matrix** ...\n %34 = getelementptr inbounds %struct.Matrix, ...\n store i32 %32, i32* %34, align 4\n %35 = load i32, i32* %4, align 4\n %36 = load i32, i32* %5, align 4\n %37 = icmp eq i32 %35, %36\n %38 = zext i1 %37 to i32\n %39 = load %struct.Matrix*, %struct.Matrix** ...\n %40 = getelementptr inbounds %struct.Matrix, ...\n store i32 %38, i32* %40, align 8\n %41 = load %struct.Matrix*, %struct.Matrix** ...\n %42 = getelementptr inbounds %struct.Matrix, ...\n store double 0.000000e+00, double* %42, align 8\n %43 = load i32, i32* %4, align 4\n %44 = sext i32 %43 to i64\n %45 = mul i64 %44, 8\n %46 = call noalias i8* @malloc(i64 %45) #7\n %47 = bitcast i8* %46 to i32**\n %48 = load %struct.Matrix*, %struct.Matrix** ...\n %49 = getelementptr inbounds %struct.Matrix, ...\n store i32** %47, i32*** %49, align 8\n %50 = load %struct.Matrix*, %struct.Matrix** ...\n %51 = getelementptr inbounds %struct.Matrix, ...\n %52 = load i32**, i32*** %51, align 8\n %53 = icmp ne i32** %52, null\n br i1 %53, label %57, label %54\n"]
  325. 28 -->|true| 57
  326. 28 -->|false| 54
  327. 54["Block 54:\n %55 = load %struct.Matrix*, %struct.Matrix** ...\n %56 = bitcast %struct.Matrix* %55 to i8*\n call void @free(i8* %56) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %111\n"]
  328. 54 --> 111
  329. 57["Block 57:\n store i32 0, i32* %7, align 4\n br label %58\n"]
  330. 57 --> 58
  331. 58["Block 58:\n %59 = load i32, i32* %7, align 4\n %60 = load i32, i32* %4, align 4\n %61 = icmp slt i32 %59, %60\n br i1 %61, label %62, label %109\n"]
  332. 58 -->|true| 62
  333. 58 -->|false| 109
  334. 62["Block 62:\n %63 = load i32, i32* %5, align 4\n %64 = sext i32 %63 to i64\n %65 = call noalias i8* @calloc(i64 %64, i64 4...\n %66 = bitcast i8* %65 to i32*\n %67 = load %struct.Matrix*, %struct.Matrix** ...\n %68 = getelementptr inbounds %struct.Matrix, ...\n %69 = load i32**, i32*** %68, align 8\n %70 = load i32, i32* %7, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32*, i32** %69,...\n store i32* %66, i32** %72, align 8\n %73 = load %struct.Matrix*, %struct.Matrix** ...\n %74 = getelementptr inbounds %struct.Matrix, ...\n %75 = load i32**, i32*** %74, align 8\n %76 = load i32, i32* %7, align 4\n %77 = sext i32 %76 to i64\n %78 = getelementptr inbounds i32*, i32** %75,...\n %79 = load i32*, i32** %78, align 8\n %80 = icmp ne i32* %79, null\n br i1 %80, label %105, label %81\n"]
  335. 62 -->|true| 105
  336. 62 -->|false| 81
  337. 81["Block 81:\n store i32 0, i32* %8, align 4\n br label %82\n"]
  338. 81 --> 82
  339. 82["Block 82:\n %83 = load i32, i32* %8, align 4\n %84 = load i32, i32* %7, align 4\n %85 = icmp slt i32 %83, %84\n br i1 %85, label %86, label %98\n"]
  340. 82 -->|true| 86
  341. 82 -->|false| 98
  342. 86["Block 86:\n %87 = load %struct.Matrix*, %struct.Matrix** ...\n %88 = getelementptr inbounds %struct.Matrix, ...\n %89 = load i32**, i32*** %88, align 8\n %90 = load i32, i32* %8, align 4\n %91 = sext i32 %90 to i64\n %92 = getelementptr inbounds i32*, i32** %89,...\n %93 = load i32*, i32** %92, align 8\n %94 = bitcast i32* %93 to i8*\n call void @free(i8* %94) #7\n br label %95\n"]
  343. 86 --> 95
  344. 95["Block 95:\n %96 = load i32, i32* %8, align 4\n %97 = add nsw i32 %96, 1\n store i32 %97, i32* %8, align 4\n br label %82\n"]
  345. 95 --> 82
  346. 98["Block 98:\n %99 = load %struct.Matrix*, %struct.Matrix** ...\n %100 = getelementptr inbounds %struct.Matrix,...\n %101 = load i32**, i32*** %100, align 8\n %102 = bitcast i32** %101 to i8*\n call void @free(i8* %102) #7\n %103 = load %struct.Matrix*, %struct.Matrix**...\n %104 = bitcast %struct.Matrix* %103 to i8*\n call void @free(i8* %104) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %111\n"]
  347. 98 --> 111
  348. 105["Block 105:\n br label %106\n"]
  349. 105 --> 106
  350. 106["Block 106:\n %107 = load i32, i32* %7, align 4\n %108 = add nsw i32 %107, 1\n store i32 %108, i32* %7, align 4\n br label %58\n"]
  351. 106 --> 58
  352. 109["Block 109:\n %110 = load %struct.Matrix*, %struct.Matrix**...\n store %struct.Matrix* %110, %struct.Matrix** ...\n br label %111\n"]
  353. 109 --> 111
  354. 111["Block 111:\n %112 = load %struct.Matrix*, %struct.Matrix**...\n ret %struct.Matrix* %112\n"]:::critical
  355. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  356. ```
  357. ```mermaid: multiplyMatrices
  358. graph TD
  359. 2["Block 2:\n %3 = alloca %struct.Matrix*, align 8\n %4 = alloca %struct.Matrix*, align 8\n %5 = alloca %struct.Matrix*, align 8\n %6 = alloca %struct.Matrix*, align 8\n %7 = alloca i64, align 8\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i64, align 8\n %11 = alloca i32, align 4\n %12 = alloca i64, align 8\n %13 = alloca i32, align 4\n store %struct.Matrix* %0, %struct.Matrix** %4...\n store %struct.Matrix* %1, %struct.Matrix** %5...\n %14 = load %struct.Matrix*, %struct.Matrix** ...\n %15 = icmp ne %struct.Matrix* %14, null\n br i1 %15, label %16, label %19\n"]:::critical
  360. 2 -->|true| 16
  361. 2 -->|false| 19
  362. 16["Block 16:\n %17 = load %struct.Matrix*, %struct.Matrix** ...\n %18 = icmp ne %struct.Matrix* %17, null\n br i1 %18, label %20, label %19\n"]
  363. 16 -->|true| 20
  364. 16 -->|false| 19
  365. 19["Block 19:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  366. 19 --> 209
  367. 20["Block 20:\n %21 = load %struct.Matrix*, %struct.Matrix** ...\n %22 = getelementptr inbounds %struct.Matrix, ...\n %23 = load i32**, i32*** %22, align 8\n %24 = icmp ne i32** %23, null\n br i1 %24, label %25, label %30\n"]
  368. 20 -->|true| 25
  369. 20 -->|false| 30
  370. 25["Block 25:\n %26 = load %struct.Matrix*, %struct.Matrix** ...\n %27 = getelementptr inbounds %struct.Matrix, ...\n %28 = load i32**, i32*** %27, align 8\n %29 = icmp ne i32** %28, null\n br i1 %29, label %31, label %30\n"]
  371. 25 -->|true| 31
  372. 25 -->|false| 30
  373. 30["Block 30:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  374. 30 --> 209
  375. 31["Block 31:\n %32 = load %struct.Matrix*, %struct.Matrix** ...\n %33 = getelementptr inbounds %struct.Matrix, ...\n %34 = load i32, i32* %33, align 4\n %35 = load %struct.Matrix*, %struct.Matrix** ...\n %36 = getelementptr inbounds %struct.Matrix, ...\n %37 = load i32, i32* %36, align 8\n %38 = icmp ne i32 %34, %37\n br i1 %38, label %39, label %40\n"]
  376. 31 -->|true| 39
  377. 31 -->|false| 40
  378. 39["Block 39:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  379. 39 --> 209
  380. 40["Block 40:\n %41 = load %struct.Matrix*, %struct.Matrix** ...\n %42 = getelementptr inbounds %struct.Matrix, ...\n %43 = load i32, i32* %42, align 4\n %44 = icmp sgt i32 %43, 100\n br i1 %44, label %50, label %45\n"]
  381. 40 -->|true| 50
  382. 40 -->|false| 45
  383. 45["Block 45:\n %46 = load %struct.Matrix*, %struct.Matrix** ...\n %47 = getelementptr inbounds %struct.Matrix, ...\n %48 = load i32, i32* %47, align 8\n %49 = icmp sgt i32 %48, 100\n br i1 %49, label %50, label %51\n"]
  384. 45 -->|true| 50
  385. 45 -->|false| 51
  386. 50["Block 50:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  387. 50 --> 209
  388. 51["Block 51:\n %52 = load %struct.Matrix*, %struct.Matrix** ...\n %53 = getelementptr inbounds %struct.Matrix, ...\n %54 = load i32, i32* %53, align 8\n %55 = load %struct.Matrix*, %struct.Matrix** ...\n %56 = getelementptr inbounds %struct.Matrix, ...\n %57 = load i32, i32* %56, align 4\n %58 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %58, %struct.Matrix** %...\n %59 = load %struct.Matrix*, %struct.Matrix** ...\n %60 = icmp ne %struct.Matrix* %59, null\n br i1 %60, label %62, label %61\n"]
  389. 51 -->|true| 62
  390. 51 -->|false| 61
  391. 61["Block 61:\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  392. 61 --> 209
  393. 62["Block 62:\n store i64 0, i64* %7, align 8\n store i32 0, i32* %8, align 4\n br label %63\n"]
  394. 62 --> 63
  395. 63["Block 63:\n %64 = load i32, i32* %8, align 4\n %65 = load %struct.Matrix*, %struct.Matrix** ...\n %66 = getelementptr inbounds %struct.Matrix, ...\n %67 = load i32, i32* %66, align 8\n %68 = icmp slt i32 %64, %67\n br i1 %68, label %69, label %197\n"]
  396. 63 -->|true| 69
  397. 63 -->|false| 197
  398. 69["Block 69:\n store i32 0, i32* %9, align 4\n br label %70\n"]
  399. 69 --> 70
  400. 70["Block 70:\n %71 = load i32, i32* %9, align 4\n %72 = load %struct.Matrix*, %struct.Matrix** ...\n %73 = getelementptr inbounds %struct.Matrix, ...\n %74 = load i32, i32* %73, align 4\n %75 = icmp slt i32 %71, %74\n br i1 %75, label %76, label %193\n"]
  401. 70 -->|true| 76
  402. 70 -->|false| 193
  403. 76["Block 76:\n store i64 0, i64* %10, align 8\n store i32 0, i32* %11, align 4\n br label %77\n"]
  404. 76 --> 77
  405. 77["Block 77:\n %78 = load i32, i32* %11, align 4\n %79 = load %struct.Matrix*, %struct.Matrix** ...\n %80 = getelementptr inbounds %struct.Matrix, ...\n %81 = load i32, i32* %80, align 4\n %82 = icmp slt i32 %78, %81\n br i1 %82, label %83, label %147\n"]
  406. 77 -->|true| 83
  407. 77 -->|false| 147
  408. 83["Block 83:\n %84 = load %struct.Matrix*, %struct.Matrix** ...\n %85 = getelementptr inbounds %struct.Matrix, ...\n %86 = load i32**, i32*** %85, align 8\n %87 = load i32, i32* %8, align 4\n %88 = sext i32 %87 to i64\n %89 = getelementptr inbounds i32*, i32** %86,...\n %90 = load i32*, i32** %89, align 8\n %91 = load i32, i32* %11, align 4\n %92 = sext i32 %91 to i64\n %93 = getelementptr inbounds i32, i32* %90, i...\n %94 = load i32, i32* %93, align 4\n %95 = sext i32 %94 to i64\n %96 = load %struct.Matrix*, %struct.Matrix** ...\n %97 = getelementptr inbounds %struct.Matrix, ...\n %98 = load i32**, i32*** %97, align 8\n %99 = load i32, i32* %11, align 4\n %100 = sext i32 %99 to i64\n %101 = getelementptr inbounds i32*, i32** %98...\n %102 = load i32*, i32** %101, align 8\n %103 = load i32, i32* %9, align 4\n %104 = sext i32 %103 to i64\n %105 = getelementptr inbounds i32, i32* %102,...\n %106 = load i32, i32* %105, align 4\n %107 = sext i32 %106 to i64\n %108 = mul nsw i64 %95, %107\n store i64 %108, i64* %12, align 8\n %109 = load i64, i64* %12, align 8\n %110 = load i64, i64* %10, align 8\n %111 = add nsw i64 %110, %109\n store i64 %111, i64* %10, align 8\n %112 = load i64, i64* %10, align 8\n %113 = icmp sgt i64 %112, 2147483647\n br i1 %113, label %117, label %114\n"]
  409. 83 -->|true| 117
  410. 83 -->|false| 114
  411. 114["Block 114:\n %115 = load i64, i64* %10, align 8\n %116 = icmp slt i64 %115, -2147483648\n br i1 %116, label %117, label %143\n"]
  412. 114 -->|true| 117
  413. 114 -->|false| 143
  414. 117["Block 117:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 0, i32* %13, align 4\n br label %118\n"]
  415. 117 --> 118
  416. 118["Block 118:\n %119 = load i32, i32* %13, align 4\n %120 = load %struct.Matrix*, %struct.Matrix**...\n %121 = getelementptr inbounds %struct.Matrix,...\n %122 = load i32, i32* %121, align 8\n %123 = icmp slt i32 %119, %122\n br i1 %123, label %124, label %136\n"]
  417. 118 -->|true| 124
  418. 118 -->|false| 136
  419. 124["Block 124:\n %125 = load %struct.Matrix*, %struct.Matrix**...\n %126 = getelementptr inbounds %struct.Matrix,...\n %127 = load i32**, i32*** %126, align 8\n %128 = load i32, i32* %13, align 4\n %129 = sext i32 %128 to i64\n %130 = getelementptr inbounds i32*, i32** %12...\n %131 = load i32*, i32** %130, align 8\n %132 = bitcast i32* %131 to i8*\n call void @free(i8* %132) #7\n br label %133\n"]
  420. 124 --> 133
  421. 133["Block 133:\n %134 = load i32, i32* %13, align 4\n %135 = add nsw i32 %134, 1\n store i32 %135, i32* %13, align 4\n br label %118\n"]
  422. 133 --> 118
  423. 136["Block 136:\n %137 = load %struct.Matrix*, %struct.Matrix**...\n %138 = getelementptr inbounds %struct.Matrix,...\n %139 = load i32**, i32*** %138, align 8\n %140 = bitcast i32** %139 to i8*\n call void @free(i8* %140) #7\n %141 = load %struct.Matrix*, %struct.Matrix**...\n %142 = bitcast %struct.Matrix* %141 to i8*\n call void @free(i8* %142) #7\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %209\n"]
  424. 136 --> 209
  425. 143["Block 143:\n br label %144\n"]
  426. 143 --> 144
  427. 144["Block 144:\n %145 = load i32, i32* %11, align 4\n %146 = add nsw i32 %145, 1\n store i32 %146, i32* %11, align 4\n br label %77\n"]
  428. 144 --> 77
  429. 147["Block 147:\n %148 = load i64, i64* %10, align 8\n %149 = trunc i64 %148 to i32\n %150 = load %struct.Matrix*, %struct.Matrix**...\n %151 = getelementptr inbounds %struct.Matrix,...\n %152 = load i32**, i32*** %151, align 8\n %153 = load i32, i32* %8, align 4\n %154 = sext i32 %153 to i64\n %155 = getelementptr inbounds i32*, i32** %15...\n %156 = load i32*, i32** %155, align 8\n %157 = load i32, i32* %9, align 4\n %158 = sext i32 %157 to i64\n %159 = getelementptr inbounds i32, i32* %156,...\n store i32 %149, i32* %159, align 4\n %160 = load %struct.Matrix*, %struct.Matrix**...\n %161 = getelementptr inbounds %struct.Matrix,...\n %162 = load i32**, i32*** %161, align 8\n %163 = load i32, i32* %8, align 4\n %164 = sext i32 %163 to i64\n %165 = getelementptr inbounds i32*, i32** %16...\n %166 = load i32*, i32** %165, align 8\n %167 = load i32, i32* %9, align 4\n %168 = sext i32 %167 to i64\n %169 = getelementptr inbounds i32, i32* %166,...\n %170 = load i32, i32* %169, align 4\n %171 = call i32 @abs(i32 %170) #8\n %172 = sext i32 %171 to i64\n %173 = load i64, i64* %7, align 8\n %174 = icmp sgt i64 %172, %173\n br i1 %174, label %175, label %189\n"]
  430. 147 -->|true| 175
  431. 147 -->|false| 189
  432. 175["Block 175:\n %176 = load %struct.Matrix*, %struct.Matrix**...\n %177 = getelementptr inbounds %struct.Matrix,...\n %178 = load i32**, i32*** %177, align 8\n %179 = load i32, i32* %8, align 4\n %180 = sext i32 %179 to i64\n %181 = getelementptr inbounds i32*, i32** %17...\n %182 = load i32*, i32** %181, align 8\n %183 = load i32, i32* %9, align 4\n %184 = sext i32 %183 to i64\n %185 = getelementptr inbounds i32, i32* %182,...\n %186 = load i32, i32* %185, align 4\n %187 = call i32 @abs(i32 %186) #8\n %188 = sext i32 %187 to i64\n store i64 %188, i64* %7, align 8\n br label %189\n"]
  433. 175 --> 189
  434. 189["Block 189:\n br label %190\n"]
  435. 189 --> 190
  436. 190["Block 190:\n %191 = load i32, i32* %9, align 4\n %192 = add nsw i32 %191, 1\n store i32 %192, i32* %9, align 4\n br label %70\n"]
  437. 190 --> 70
  438. 193["Block 193:\n br label %194\n"]
  439. 193 --> 194
  440. 194["Block 194:\n %195 = load i32, i32* %8, align 4\n %196 = add nsw i32 %195, 1\n store i32 %196, i32* %8, align 4\n br label %63\n"]
  441. 194 --> 63
  442. 197["Block 197:\n %198 = load %struct.Matrix*, %struct.Matrix**...\n %199 = getelementptr inbounds %struct.Matrix,...\n %200 = load i32, i32* %199, align 8\n %201 = load %struct.Matrix*, %struct.Matrix**...\n %202 = getelementptr inbounds %struct.Matrix,...\n %203 = load i32, i32* %202, align 4\n %204 = icmp eq i32 %200, %203\n %205 = zext i1 %204 to i32\n %206 = load %struct.Matrix*, %struct.Matrix**...\n %207 = getelementptr inbounds %struct.Matrix,...\n store i32 %205, i32* %207, align 8\n %208 = load %struct.Matrix*, %struct.Matrix**...\n store %struct.Matrix* %208, %struct.Matrix** ...\n br label %209\n"]
  443. 197 --> 209
  444. 209["Block 209:\n %210 = load %struct.Matrix*, %struct.Matrix**...\n ret %struct.Matrix* %210\n"]:::critical
  445. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  446. ```
  447. ```mermaid: insertNode
  448. graph TD
  449. 2["Block 2:\n %3 = alloca %struct.Node*, align 8\n %4 = alloca %struct.Node*, align 8\n %5 = alloca i32, align 4\n %6 = alloca %struct.Node*, align 8\n %7 = alloca %struct.Node*, align 8\n %8 = alloca %struct.Node*, align 8\n %9 = alloca i32, align 4\n store %struct.Node* %0, %struct.Node** %4, al...\n store i32 %1, i32* %5, align 4\n %10 = call noalias i8* @malloc(i64 32) #7\n %11 = bitcast i8* %10 to %struct.Node*\n store %struct.Node* %11, %struct.Node** %6, a...\n %12 = load %struct.Node*, %struct.Node** %6, ...\n %13 = icmp ne %struct.Node* %12, null\n br i1 %13, label %16, label %14\n"]:::critical
  450. 2 -->|true| 16
  451. 2 -->|false| 14
  452. 14["Block 14:\n call void @setErrorMessage(i8* getelementptr ...\n %15 = load %struct.Node*, %struct.Node** %4, ...\n store %struct.Node* %15, %struct.Node** %3, a...\n br label %92\n"]
  453. 14 --> 92
  454. 16["Block 16:\n %17 = load i32, i32* %5, align 4\n %18 = load %struct.Node*, %struct.Node** %6, ...\n %19 = getelementptr inbounds %struct.Node, %s...\n store i32 %17, i32* %19, align 8\n %20 = load %struct.Node*, %struct.Node** %6, ...\n %21 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* null, %struct.Node** %21,...\n %22 = load %struct.Node*, %struct.Node** %6, ...\n %23 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* null, %struct.Node** %23,...\n %24 = load %struct.Node*, %struct.Node** %6, ...\n %25 = getelementptr inbounds %struct.Node, %s...\n store i32 0, i32* %25, align 8\n %26 = load %struct.Node*, %struct.Node** %4, ...\n %27 = icmp ne %struct.Node* %26, null\n br i1 %27, label %32, label %28\n"]
  455. 16 -->|true| 32
  456. 16 -->|false| 28
  457. 28["Block 28:\n %29 = load %struct.Node*, %struct.Node** %6, ...\n %30 = getelementptr inbounds %struct.Node, %s...\n store i32 0, i32* %30, align 4\n store i32 0, i32* @insertNode.maxDepth, align 4\n %31 = load %struct.Node*, %struct.Node** %6, ...\n store %struct.Node* %31, %struct.Node** %3, a...\n br label %92\n"]
  458. 28 --> 92
  459. 32["Block 32:\n %33 = load %struct.Node*, %struct.Node** %4, ...\n store %struct.Node* %33, %struct.Node** %7, a...\n store %struct.Node* null, %struct.Node** %8, ...\n store i32 0, i32* %9, align 4\n br label %34\n"]
  460. 32 --> 34
  461. 34["Block 34:\n %35 = load %struct.Node*, %struct.Node** %7, ...\n %36 = icmp ne %struct.Node* %35, null\n br i1 %36, label %37, label %43\n"]
  462. 34 -->|true| 37
  463. 34 -->|false| 43
  464. 37["Block 37:\n %38 = load %struct.Node*, %struct.Node** %7, ...\n %39 = getelementptr inbounds %struct.Node, %s...\n %40 = load i32, i32* %39, align 8\n %41 = load i32, i32* %5, align 4\n %42 = icmp slt i32 %40, %41\n br label %43\n"]
  465. 37 --> 43
  466. 43["Block 43:\n %44 = phi i1 [ false, %34 ], [ %42, %37 ]\n br i1 %44, label %45, label %59\n"]
  467. 43 -->|true| 45
  468. 43 -->|false| 59
  469. 45["Block 45:\n %46 = load %struct.Node*, %struct.Node** %7, ...\n store %struct.Node* %46, %struct.Node** %8, a...\n %47 = load %struct.Node*, %struct.Node** %7, ...\n %48 = getelementptr inbounds %struct.Node, %s...\n %49 = load %struct.Node*, %struct.Node** %48,...\n store %struct.Node* %49, %struct.Node** %7, a...\n %50 = load i32, i32* %9, align 4\n %51 = add nsw i32 %50, 1\n store i32 %51, i32* %9, align 4\n %52 = load i32, i32* %9, align 4\n %53 = icmp sgt i32 %52, 1000\n br i1 %53, label %54, label %58\n"]
  470. 45 -->|true| 54
  471. 45 -->|false| 58
  472. 54["Block 54:\n call void @setErrorMessage(i8* getelementptr ...\n %55 = load %struct.Node*, %struct.Node** %6, ...\n %56 = bitcast %struct.Node* %55 to i8*\n call void @free(i8* %56) #7\n %57 = load %struct.Node*, %struct.Node** %4, ...\n store %struct.Node* %57, %struct.Node** %3, a...\n br label %92\n"]
  473. 54 --> 92
  474. 58["Block 58:\n br label %34\n"]
  475. 58 --> 34
  476. 59["Block 59:\n %60 = load i32, i32* %9, align 4\n %61 = load i32, i32* @insertNode.maxDepth, al...\n %62 = icmp sgt i32 %60, %61\n br i1 %62, label %63, label %65\n"]
  477. 59 -->|true| 63
  478. 59 -->|false| 65
  479. 63["Block 63:\n %64 = load i32, i32* %9, align 4\n store i32 %64, i32* @insertNode.maxDepth, ali...\n br label %65\n"]
  480. 63 --> 65
  481. 65["Block 65:\n %66 = load i32, i32* %9, align 4\n %67 = load %struct.Node*, %struct.Node** %6, ...\n %68 = getelementptr inbounds %struct.Node, %s...\n store i32 %66, i32* %68, align 4\n %69 = load %struct.Node*, %struct.Node** %7, ...\n %70 = load %struct.Node*, %struct.Node** %6, ...\n %71 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* %69, %struct.Node** %71, ...\n %72 = load %struct.Node*, %struct.Node** %8, ...\n %73 = icmp ne %struct.Node* %72, null\n br i1 %73, label %74, label %81\n"]
  482. 65 -->|true| 74
  483. 65 -->|false| 81
  484. 74["Block 74:\n %75 = load %struct.Node*, %struct.Node** %6, ...\n %76 = load %struct.Node*, %struct.Node** %8, ...\n %77 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* %75, %struct.Node** %77, ...\n %78 = load %struct.Node*, %struct.Node** %8, ...\n %79 = load %struct.Node*, %struct.Node** %6, ...\n %80 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* %78, %struct.Node** %80, ...\n br label %83\n"]
  485. 74 --> 83
  486. 81["Block 81:\n %82 = load %struct.Node*, %struct.Node** %6, ...\n store %struct.Node* %82, %struct.Node** %3, a...\n br label %92\n"]
  487. 81 --> 92
  488. 83["Block 83:\n %84 = load %struct.Node*, %struct.Node** %7, ...\n %85 = icmp ne %struct.Node* %84, null\n br i1 %85, label %86, label %90\n"]
  489. 83 -->|true| 86
  490. 83 -->|false| 90
  491. 86["Block 86:\n %87 = load %struct.Node*, %struct.Node** %6, ...\n %88 = load %struct.Node*, %struct.Node** %7, ...\n %89 = getelementptr inbounds %struct.Node, %s...\n store %struct.Node* %87, %struct.Node** %89, ...\n br label %90\n"]
  492. 86 --> 90
  493. 90["Block 90:\n %91 = load %struct.Node*, %struct.Node** %4, ...\n store %struct.Node* %91, %struct.Node** %3, a...\n br label %92\n"]
  494. 90 --> 92
  495. 92["Block 92:\n %93 = load %struct.Node*, %struct.Node** %3, ...\n ret %struct.Node* %93\n"]:::critical
  496. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  497. ```
  498. ```mermaid: performSimpleCalculations
  499. graph TD
  500. 0["Block 0:\n %1 = alloca i32, align 4\n store i32 100, i32* %1, align 4\n %2 = load i32, i32* %1, align 4\n %3 = icmp sgt i32 %2, 50\n br i1 %3, label %4, label %9\n"]:::critical
  501. 0 -->|true| 4
  502. 0 -->|false| 9
  503. 4["Block 4:\n %5 = load i32, i32* %1, align 4\n %6 = mul nsw i32 %5, 2\n %7 = load i32, i32* @calculationResult, align 4\n %8 = add nsw i32 %7, %6\n store i32 %8, i32* @calculationResult, align 4\n br label %14\n"]
  504. 4 --> 14
  505. 9["Block 9:\n %10 = load i32, i32* %1, align 4\n %11 = sdiv i32 %10, 2\n %12 = load i32, i32* @calculationResult, align 4\n %13 = add nsw i32 %12, %11\n store i32 %13, i32* @calculationResult, align 4\n br label %14\n"]
  506. 9 --> 14
  507. 14["Block 14:\n %15 = load i32, i32* %1, align 4\n %16 = srem i32 %15, 3\n %17 = icmp eq i32 %16, 0\n br i1 %17, label %18, label %21\n"]:::critical
  508. 14 -->|true| 18
  509. 14 -->|false| 21
  510. 18["Block 18:\n %19 = load i32, i32* @calculationResult, align 4\n %20 = mul nsw i32 %19, 3\n store i32 %20, i32* @calculationResult, align 4\n br label %24\n"]
  511. 18 --> 24
  512. 21["Block 21:\n %22 = load i32, i32* @calculationResult, align 4\n %23 = add nsw i32 %22, 3\n store i32 %23, i32* @calculationResult, align 4\n br label %24\n"]
  513. 21 --> 24
  514. 24["Block 24:\n %25 = load i32, i32* @calculationResult, align 4\n %26 = icmp sge i32 %25, 150\n br i1 %26, label %27, label %33\n"]:::critical
  515. 24 -->|true| 27
  516. 24 -->|false| 33
  517. 27["Block 27:\n %28 = load i32, i32* @calculationResult, align 4\n %29 = icmp sle i32 %28, 300\n br i1 %29, label %30, label %33\n"]
  518. 27 -->|true| 30
  519. 27 -->|false| 33
  520. 30["Block 30:\n %31 = load i32, i32* @calculationResult, align 4\n %32 = sub nsw i32 %31, 50\n store i32 %32, i32* @calculationResult, align 4\n br label %36\n"]
  521. 30 --> 36
  522. 33["Block 33:\n %34 = load i32, i32* @calculationResult, align 4\n %35 = add nsw i32 %34, 50\n store i32 %35, i32* @calculationResult, align 4\n br label %36\n"]
  523. 33 --> 36
  524. 36["Block 36:\n %37 = load i32, i32* @calculationResult, align 4\n %38 = srem i32 %37, 2\n %39 = icmp eq i32 %38, 0\n br i1 %39, label %40, label %43\n"]:::critical
  525. 36 -->|true| 40
  526. 36 -->|false| 43
  527. 40["Block 40:\n %41 = load i32, i32* @calculationResult, align 4\n %42 = sdiv i32 %41, 2\n store i32 %42, i32* @calculationResult, align 4\n br label %46\n"]
  528. 40 --> 46
  529. 43["Block 43:\n %44 = load i32, i32* @calculationResult, align 4\n %45 = mul nsw i32 %44, 2\n store i32 %45, i32* @calculationResult, align 4\n br label %46\n"]
  530. 43 --> 46
  531. 46["Block 46:\n %47 = load i32, i32* @calculationResult, align 4\n %48 = srem i32 %47, 10\n %49 = icmp slt i32 %48, 5\n br i1 %49, label %50, label %53\n"]:::critical
  532. 46 -->|true| 50
  533. 46 -->|false| 53
  534. 50["Block 50:\n %51 = load i32, i32* @calculationResult, align 4\n %52 = add nsw i32 %51, 5\n store i32 %52, i32* @calculationResult, align 4\n br label %56\n"]
  535. 50 --> 56
  536. 53["Block 53:\n %54 = load i32, i32* @calculationResult, align 4\n %55 = sub nsw i32 %54, 5\n store i32 %55, i32* @calculationResult, align 4\n br label %56\n"]
  537. 53 --> 56
  538. 56["Block 56:\n %57 = load i32, i32* @calculationResult, align 4\n %58 = icmp sgt i32 %57, 1000\n br i1 %58, label %59, label %60\n"]:::critical
  539. 56 -->|true| 59
  540. 56 -->|false| 60
  541. 59["Block 59:\n store i32 1000, i32* @calculationResult, align 4\n br label %63\n"]
  542. 59 --> 63
  543. 60["Block 60:\n %61 = load i32, i32* @calculationResult, align 4\n %62 = add nsw i32 %61, 10\n store i32 %62, i32* @calculationResult, align 4\n br label %63\n"]
  544. 60 --> 63
  545. 63["Block 63:\n %64 = load i32, i32* @calculationResult, align 4\n %65 = call i32 (i8*, ...) @printf(i8* getelem...\n ret void\n"]:::critical
  546. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  547. ```
  548. ```mermaid: projectA_main
  549. graph TD
  550. 0["Block 0:\n %1 = alloca i32, align 4\n %2 = alloca %struct.DynamicArray*, align 8\n %3 = alloca i32, align 4\n %4 = alloca %struct.Matrix*, align 8\n %5 = alloca %struct.Matrix*, align 8\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca %struct.Matrix*, align 8\n %9 = alloca i32, align 4\n %10 = alloca %struct.Node*, align 8\n %11 = alloca i32, align 4\n %12 = alloca i32, align 4\n %13 = alloca %struct.Node*, align 8\n %14 = alloca %struct.Node*, align 8\n %15 = alloca i32, align 4\n %16 = alloca %struct.Node*, align 8\n %17 = alloca i32, align 4\n %18 = alloca i32, align 4\n %19 = alloca %struct.Node*, align 8\n %20 = call i64 @time(i64* null) #7\n %21 = trunc i64 %20 to i32\n call void @srand(i32 %21) #7\n %22 = call %struct.DynamicArray* @createDynam...\n store %struct.DynamicArray* %22, %struct.Dyna...\n %23 = load %struct.DynamicArray*, %struct.Dyn...\n %24 = icmp ne %struct.DynamicArray* %23, null\n br i1 %24, label %28, label %25\n"]:::critical
  551. 0 -->|true| 28
  552. 0 -->|false| 25
  553. 25["Block 25:\n %26 = call i8* @getErrorMessage()\n %27 = call i32 (i8*, ...) @printf(i8* getelem...\n store i32 -1, i32* %1, align 4\n br label %322\n"]
  554. 25 --> 322
  555. 28["Block 28:\n store i32 0, i32* %3, align 4\n br label %29\n"]
  556. 28 --> 29
  557. 29["Block 29:\n %30 = load i32, i32* %3, align 4\n %31 = icmp slt i32 %30, 15\n br i1 %31, label %32, label %45\n"]
  558. 29 -->|true| 32
  559. 29 -->|false| 45
  560. 32["Block 32:\n %33 = load %struct.DynamicArray*, %struct.Dyn...\n %34 = call i32 @rand() #7\n %35 = srem i32 %34, 100\n call void @pushBack(%struct.DynamicArray* %33...\n %36 = load i8*, i8** @globalErrorMessage, ali...\n %37 = icmp ne i8* %36, null\n br i1 %37, label %38, label %41\n"]
  561. 32 -->|true| 38
  562. 32 -->|false| 41
  563. 38["Block 38:\n %39 = call i8* @getErrorMessage()\n %40 = call i32 (i8*, ...) @printf(i8* getelem...\n br label %45\n"]
  564. 38 --> 45
  565. 41["Block 41:\n br label %42\n"]
  566. 41 --> 42
  567. 42["Block 42:\n %43 = load i32, i32* %3, align 4\n %44 = add nsw i32 %43, 1\n store i32 %44, i32* %3, align 4\n br label %29\n"]
  568. 42 --> 29
  569. 45["Block 45:\n %46 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %46, %struct.Matrix** %...\n %47 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %47, %struct.Matrix** %...\n %48 = load %struct.Matrix*, %struct.Matrix** ...\n %49 = icmp ne %struct.Matrix* %48, null\n br i1 %49, label %50, label %53\n"]
  570. 45 -->|true| 50
  571. 45 -->|false| 53
  572. 50["Block 50:\n %51 = load %struct.Matrix*, %struct.Matrix** ...\n %52 = icmp ne %struct.Matrix* %51, null\n br i1 %52, label %74, label %53\n"]
  573. 50 -->|true| 74
  574. 50 -->|false| 53
  575. 53["Block 53:\n %54 = call i8* @getErrorMessage()\n %55 = call i32 (i8*, ...) @printf(i8* getelem...\n %56 = load %struct.Matrix*, %struct.Matrix** ...\n %57 = icmp ne %struct.Matrix* %56, null\n br i1 %57, label %58, label %61\n"]
  576. 53 -->|true| 58
  577. 53 -->|false| 61
  578. 58["Block 58:\n %59 = load %struct.Matrix*, %struct.Matrix** ...\n %60 = bitcast %struct.Matrix* %59 to i8*\n call void @free(i8* %60) #7\n br label %61\n"]
  579. 58 --> 61
  580. 61["Block 61:\n %62 = load %struct.Matrix*, %struct.Matrix** ...\n %63 = icmp ne %struct.Matrix* %62, null\n br i1 %63, label %64, label %67\n"]
  581. 61 -->|true| 64
  582. 61 -->|false| 67
  583. 64["Block 64:\n %65 = load %struct.Matrix*, %struct.Matrix** ...\n %66 = bitcast %struct.Matrix* %65 to i8*\n call void @free(i8* %66) #7\n br label %67\n"]
  584. 64 --> 67
  585. 67["Block 67:\n %68 = load %struct.DynamicArray*, %struct.Dyn...\n %69 = getelementptr inbounds %struct.DynamicA...\n %70 = load i32*, i32** %69, align 8\n %71 = bitcast i32* %70 to i8*\n call void @free(i8* %71) #7\n %72 = load %struct.DynamicArray*, %struct.Dyn...\n %73 = bitcast %struct.DynamicArray* %72 to i8*\n call void @free(i8* %73) #7\n store i32 -1, i32* %1, align 4\n br label %322\n"]
  586. 67 --> 322
  587. 74["Block 74:\n store i32 0, i32* %6, align 4\n br label %75\n"]
  588. 74 --> 75
  589. 75["Block 75:\n %76 = load i32, i32* %6, align 4\n %77 = icmp slt i32 %76, 3\n br i1 %77, label %78, label %114\n"]
  590. 75 -->|true| 78
  591. 75 -->|false| 114
  592. 78["Block 78:\n store i32 0, i32* %7, align 4\n br label %79\n"]
  593. 78 --> 79
  594. 79["Block 79:\n %80 = load i32, i32* %7, align 4\n %81 = icmp slt i32 %80, 3\n br i1 %81, label %82, label %110\n"]
  595. 79 -->|true| 82
  596. 79 -->|false| 110
  597. 82["Block 82:\n %83 = call i32 @rand() #7\n %84 = srem i32 %83, 10\n %85 = load %struct.Matrix*, %struct.Matrix** ...\n %86 = getelementptr inbounds %struct.Matrix, ...\n %87 = load i32**, i32*** %86, align 8\n %88 = load i32, i32* %6, align 4\n %89 = sext i32 %88 to i64\n %90 = getelementptr inbounds i32*, i32** %87,...\n %91 = load i32*, i32** %90, align 8\n %92 = load i32, i32* %7, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds i32, i32* %91, i...\n store i32 %84, i32* %94, align 4\n %95 = call i32 @rand() #7\n %96 = srem i32 %95, 10\n %97 = load %struct.Matrix*, %struct.Matrix** ...\n %98 = getelementptr inbounds %struct.Matrix, ...\n %99 = load i32**, i32*** %98, align 8\n %100 = load i32, i32* %6, align 4\n %101 = sext i32 %100 to i64\n %102 = getelementptr inbounds i32*, i32** %99...\n %103 = load i32*, i32** %102, align 8\n %104 = load i32, i32* %7, align 4\n %105 = sext i32 %104 to i64\n %106 = getelementptr inbounds i32, i32* %103,...\n store i32 %96, i32* %106, align 4\n br label %107\n"]
  598. 82 --> 107
  599. 107["Block 107:\n %108 = load i32, i32* %7, align 4\n %109 = add nsw i32 %108, 1\n store i32 %109, i32* %7, align 4\n br label %79\n"]
  600. 107 --> 79
  601. 110["Block 110:\n br label %111\n"]
  602. 110 --> 111
  603. 111["Block 111:\n %112 = load i32, i32* %6, align 4\n %113 = add nsw i32 %112, 1\n store i32 %113, i32* %6, align 4\n br label %75\n"]
  604. 111 --> 75
  605. 114["Block 114:\n %115 = load %struct.Matrix*, %struct.Matrix**...\n %116 = load %struct.Matrix*, %struct.Matrix**...\n %117 = call %struct.Matrix* @multiplyMatrices...\n store %struct.Matrix* %117, %struct.Matrix** ...\n %118 = load %struct.Matrix*, %struct.Matrix**...\n %119 = icmp ne %struct.Matrix* %118, null\n br i1 %119, label %168, label %120\n"]
  606. 114 -->|true| 168
  607. 114 -->|false| 120
  608. 120["Block 120:\n %121 = call i8* @getErrorMessage()\n %122 = call i32 (i8*, ...) @printf(i8* getele...\n store i32 0, i32* %9, align 4\n br label %123\n"]
  609. 120 --> 123
  610. 123["Block 123:\n %124 = load i32, i32* %9, align 4\n %125 = load %struct.Matrix*, %struct.Matrix**...\n %126 = getelementptr inbounds %struct.Matrix,...\n %127 = load i32, i32* %126, align 8\n %128 = icmp slt i32 %124, %127\n br i1 %128, label %129, label %149\n"]
  611. 123 -->|true| 129
  612. 123 -->|false| 149
  613. 129["Block 129:\n %130 = load %struct.Matrix*, %struct.Matrix**...\n %131 = getelementptr inbounds %struct.Matrix,...\n %132 = load i32**, i32*** %131, align 8\n %133 = load i32, i32* %9, align 4\n %134 = sext i32 %133 to i64\n %135 = getelementptr inbounds i32*, i32** %13...\n %136 = load i32*, i32** %135, align 8\n %137 = bitcast i32* %136 to i8*\n call void @free(i8* %137) #7\n %138 = load %struct.Matrix*, %struct.Matrix**...\n %139 = getelementptr inbounds %struct.Matrix,...\n %140 = load i32**, i32*** %139, align 8\n %141 = load i32, i32* %9, align 4\n %142 = sext i32 %141 to i64\n %143 = getelementptr inbounds i32*, i32** %14...\n %144 = load i32*, i32** %143, align 8\n %145 = bitcast i32* %144 to i8*\n call void @free(i8* %145) #7\n br label %146\n"]
  614. 129 --> 146
  615. 146["Block 146:\n %147 = load i32, i32* %9, align 4\n %148 = add nsw i32 %147, 1\n store i32 %148, i32* %9, align 4\n br label %123\n"]
  616. 146 --> 123
  617. 149["Block 149:\n %150 = load %struct.Matrix*, %struct.Matrix**...\n %151 = getelementptr inbounds %struct.Matrix,...\n %152 = load i32**, i32*** %151, align 8\n %153 = bitcast i32** %152 to i8*\n call void @free(i8* %153) #7\n %154 = load %struct.Matrix*, %struct.Matrix**...\n %155 = getelementptr inbounds %struct.Matrix,...\n %156 = load i32**, i32*** %155, align 8\n %157 = bitcast i32** %156 to i8*\n call void @free(i8* %157) #7\n %158 = load %struct.Matrix*, %struct.Matrix**...\n %159 = bitcast %struct.Matrix* %158 to i8*\n call void @free(i8* %159) #7\n %160 = load %struct.Matrix*, %struct.Matrix**...\n %161 = bitcast %struct.Matrix* %160 to i8*\n call void @free(i8* %161) #7\n %162 = load %struct.DynamicArray*, %struct.Dy...\n %163 = getelementptr inbounds %struct.Dynamic...\n %164 = load i32*, i32** %163, align 8\n %165 = bitcast i32* %164 to i8*\n call void @free(i8* %165) #7\n %166 = load %struct.DynamicArray*, %struct.Dy...\n %167 = bitcast %struct.DynamicArray* %166 to i8*\n call void @free(i8* %167) #7\n store i32 -1, i32* %1, align 4\n br label %322\n"]
  618. 149 --> 322
  619. 168["Block 168:\n store %struct.Node* null, %struct.Node** %10,...\n store i32 0, i32* %11, align 4\n br label %169\n"]
  620. 168 --> 169
  621. 169["Block 169:\n %170 = load i32, i32* %11, align 4\n %171 = icmp slt i32 %170, 5\n br i1 %171, label %172, label %186\n"]
  622. 169 -->|true| 172
  623. 169 -->|false| 186
  624. 172["Block 172:\n %173 = load %struct.Node*, %struct.Node** %10...\n %174 = call i32 @rand() #7\n %175 = srem i32 %174, 50\n %176 = call %struct.Node* @insertNode(%struct...\n store %struct.Node* %176, %struct.Node** %10,...\n %177 = load i8*, i8** @globalErrorMessage, al...\n %178 = icmp ne i8* %177, null\n br i1 %178, label %179, label %182\n"]
  625. 172 -->|true| 179
  626. 172 -->|false| 182
  627. 179["Block 179:\n %180 = call i8* @getErrorMessage()\n %181 = call i32 (i8*, ...) @printf(i8* getele...\n br label %186\n"]
  628. 179 --> 186
  629. 182["Block 182:\n br label %183\n"]
  630. 182 --> 183
  631. 183["Block 183:\n %184 = load i32, i32* %11, align 4\n %185 = add nsw i32 %184, 1\n store i32 %185, i32* %11, align 4\n br label %169\n"]
  632. 183 --> 169
  633. 186["Block 186:\n %187 = load %struct.DynamicArray*, %struct.Dy...\n %188 = getelementptr inbounds %struct.Dynamic...\n %189 = load i32*, i32** %188, align 8\n %190 = bitcast i32* %189 to i8*\n call void @free(i8* %190) #7\n %191 = load %struct.DynamicArray*, %struct.Dy...\n %192 = bitcast %struct.DynamicArray* %191 to i8*\n call void @free(i8* %192) #7\n store i32 0, i32* %12, align 4\n br label %193\n"]
  634. 186 --> 193
  635. 193["Block 193:\n %194 = load i32, i32* %12, align 4\n %195 = load %struct.Matrix*, %struct.Matrix**...\n %196 = getelementptr inbounds %struct.Matrix,...\n %197 = load i32, i32* %196, align 8\n %198 = icmp slt i32 %194, %197\n br i1 %198, label %199, label %227\n"]
  636. 193 -->|true| 199
  637. 193 -->|false| 227
  638. 199["Block 199:\n %200 = load %struct.Matrix*, %struct.Matrix**...\n %201 = getelementptr inbounds %struct.Matrix,...\n %202 = load i32**, i32*** %201, align 8\n %203 = load i32, i32* %12, align 4\n %204 = sext i32 %203 to i64\n %205 = getelementptr inbounds i32*, i32** %20...\n %206 = load i32*, i32** %205, align 8\n %207 = bitcast i32* %206 to i8*\n call void @free(i8* %207) #7\n %208 = load %struct.Matrix*, %struct.Matrix**...\n %209 = getelementptr inbounds %struct.Matrix,...\n %210 = load i32**, i32*** %209, align 8\n %211 = load i32, i32* %12, align 4\n %212 = sext i32 %211 to i64\n %213 = getelementptr inbounds i32*, i32** %21...\n %214 = load i32*, i32** %213, align 8\n %215 = bitcast i32* %214 to i8*\n call void @free(i8* %215) #7\n %216 = load %struct.Matrix*, %struct.Matrix**...\n %217 = getelementptr inbounds %struct.Matrix,...\n %218 = load i32**, i32*** %217, align 8\n %219 = load i32, i32* %12, align 4\n %220 = sext i32 %219 to i64\n %221 = getelementptr inbounds i32*, i32** %21...\n %222 = load i32*, i32** %221, align 8\n %223 = bitcast i32* %222 to i8*\n call void @free(i8* %223) #7\n br label %224\n"]
  639. 199 --> 224
  640. 224["Block 224:\n %225 = load i32, i32* %12, align 4\n %226 = add nsw i32 %225, 1\n store i32 %226, i32* %12, align 4\n br label %193\n"]
  641. 224 --> 193
  642. 227["Block 227:\n %228 = load %struct.Matrix*, %struct.Matrix**...\n %229 = getelementptr inbounds %struct.Matrix,...\n %230 = load i32**, i32*** %229, align 8\n %231 = bitcast i32** %230 to i8*\n call void @free(i8* %231) #7\n %232 = load %struct.Matrix*, %struct.Matrix**...\n %233 = getelementptr inbounds %struct.Matrix,...\n %234 = load i32**, i32*** %233, align 8\n %235 = bitcast i32** %234 to i8*\n call void @free(i8* %235) #7\n %236 = load %struct.Matrix*, %struct.Matrix**...\n %237 = getelementptr inbounds %struct.Matrix,...\n %238 = load i32**, i32*** %237, align 8\n %239 = bitcast i32** %238 to i8*\n call void @free(i8* %239) #7\n %240 = load %struct.Matrix*, %struct.Matrix**...\n %241 = bitcast %struct.Matrix* %240 to i8*\n call void @free(i8* %241) #7\n %242 = load %struct.Matrix*, %struct.Matrix**...\n %243 = bitcast %struct.Matrix* %242 to i8*\n call void @free(i8* %243) #7\n %244 = load %struct.Matrix*, %struct.Matrix**...\n %245 = bitcast %struct.Matrix* %244 to i8*\n call void @free(i8* %245) #7\n %246 = load %struct.Node*, %struct.Node** %10...\n %247 = icmp ne %struct.Node* %246, null\n br i1 %247, label %248, label %316\n"]
  643. 227 -->|true| 248
  644. 227 -->|false| 316
  645. 248["Block 248:\n %249 = load %struct.Node*, %struct.Node** %10...\n store %struct.Node* %249, %struct.Node** %13,...\n %250 = load %struct.Node*, %struct.Node** %10...\n store %struct.Node* %250, %struct.Node** %14,...\n store i32 0, i32* %15, align 4\n br label %251\n"]
  646. 248 --> 251
  647. 251["Block 251:\n %252 = load %struct.Node*, %struct.Node** %14...\n %253 = icmp ne %struct.Node* %252, null\n br i1 %253, label %254, label %259\n"]
  648. 251 -->|true| 254
  649. 251 -->|false| 259
  650. 254["Block 254:\n %255 = load %struct.Node*, %struct.Node** %14...\n %256 = getelementptr inbounds %struct.Node, %...\n %257 = load %struct.Node*, %struct.Node** %25...\n %258 = icmp ne %struct.Node* %257, null\n br label %259\n"]
  651. 254 --> 259
  652. 259["Block 259:\n %260 = phi i1 [ false, %251 ], [ %258, %254 ]\n br i1 %260, label %261, label %275\n"]
  653. 259 -->|true| 261
  654. 259 -->|false| 275
  655. 261["Block 261:\n %262 = load %struct.Node*, %struct.Node** %13...\n %263 = getelementptr inbounds %struct.Node, %...\n %264 = load %struct.Node*, %struct.Node** %26...\n store %struct.Node* %264, %struct.Node** %13,...\n %265 = load %struct.Node*, %struct.Node** %14...\n %266 = getelementptr inbounds %struct.Node, %...\n %267 = load %struct.Node*, %struct.Node** %26...\n %268 = getelementptr inbounds %struct.Node, %...\n %269 = load %struct.Node*, %struct.Node** %26...\n store %struct.Node* %269, %struct.Node** %14,...\n %270 = load %struct.Node*, %struct.Node** %13...\n %271 = load %struct.Node*, %struct.Node** %14...\n %272 = icmp eq %struct.Node* %270, %271\n br i1 %272, label %273, label %274\n"]
  656. 261 -->|true| 273
  657. 261 -->|false| 274
  658. 273["Block 273:\n store i32 1, i32* %15, align 4\n br label %275\n"]
  659. 273 --> 275
  660. 274["Block 274:\n br label %251\n"]
  661. 274 --> 251
  662. 275["Block 275:\n %276 = load i32, i32* %15, align 4\n %277 = icmp ne i32 %276, 0\n br i1 %277, label %278, label %304\n"]
  663. 275 -->|true| 278
  664. 275 -->|false| 304
  665. 278["Block 278:\n call void @setErrorMessage(i8* getelementptr ...\n %279 = load %struct.Node*, %struct.Node** %10...\n store %struct.Node* %279, %struct.Node** %16,...\n store i32 1000, i32* %17, align 4\n store i32 0, i32* %18, align 4\n br label %280\n"]
  666. 278 --> 280
  667. 280["Block 280:\n %281 = load %struct.Node*, %struct.Node** %16...\n %282 = icmp ne %struct.Node* %281, null\n br i1 %282, label %283, label %287\n"]
  668. 280 -->|true| 283
  669. 280 -->|false| 287
  670. 283["Block 283:\n %284 = load i32, i32* %18, align 4\n %285 = load i32, i32* %17, align 4\n %286 = icmp slt i32 %284, %285\n br label %287\n"]
  671. 283 --> 287
  672. 287["Block 287:\n %288 = phi i1 [ false, %280 ], [ %286, %283 ]\n br i1 %288, label %289, label %303\n"]
  673. 287 -->|true| 289
  674. 287 -->|false| 303
  675. 289["Block 289:\n %290 = load %struct.Node*, %struct.Node** %16...\n %291 = getelementptr inbounds %struct.Node, %...\n %292 = load i32, i32* %291, align 8\n %293 = icmp ne i32 %292, 0\n br i1 %293, label %294, label %295\n"]
  676. 289 -->|true| 294
  677. 289 -->|false| 295
  678. 294["Block 294:\n br label %303\n"]
  679. 294 --> 303
  680. 295["Block 295:\n %296 = load %struct.Node*, %struct.Node** %16...\n %297 = getelementptr inbounds %struct.Node, %...\n store i32 1, i32* %297, align 8\n %298 = load %struct.Node*, %struct.Node** %16...\n %299 = getelementptr inbounds %struct.Node, %...\n %300 = load %struct.Node*, %struct.Node** %29...\n store %struct.Node* %300, %struct.Node** %16,...\n %301 = load i32, i32* %18, align 4\n %302 = add nsw i32 %301, 1\n store i32 %302, i32* %18, align 4\n br label %280\n"]
  681. 295 --> 280
  682. 303["Block 303:\n br label %304\n"]
  683. 303 --> 304
  684. 304["Block 304:\n br label %305\n"]
  685. 304 --> 305
  686. 305["Block 305:\n %306 = load %struct.Node*, %struct.Node** %10...\n %307 = icmp ne %struct.Node* %306, null\n br i1 %307, label %308, label %315\n"]
  687. 305 -->|true| 308
  688. 305 -->|false| 315
  689. 308["Block 308:\n %309 = load %struct.Node*, %struct.Node** %10...\n store %struct.Node* %309, %struct.Node** %19,...\n %310 = load %struct.Node*, %struct.Node** %10...\n %311 = getelementptr inbounds %struct.Node, %...\n %312 = load %struct.Node*, %struct.Node** %31...\n store %struct.Node* %312, %struct.Node** %10,...\n %313 = load %struct.Node*, %struct.Node** %19...\n %314 = bitcast %struct.Node* %313 to i8*\n call void @free(i8* %314) #7\n br label %305\n"]
  690. 308 --> 305
  691. 315["Block 315:\n br label %316\n"]
  692. 315 --> 316
  693. 316["Block 316:\n %317 = load i8*, i8** @globalErrorMessage, al...\n %318 = icmp ne i8* %317, null\n br i1 %318, label %319, label %321\n"]
  694. 316 -->|true| 319
  695. 316 -->|false| 321
  696. 319["Block 319:\n %320 = load i8*, i8** @globalErrorMessage, al...\n call void @free(i8* %320) #7\n br label %321\n"]
  697. 319 --> 321
  698. 321["Block 321:\n call void @performSimpleCalculations()\n store i32 0, i32* %1, align 4\n br label %322\n"]
  699. 321 --> 322
  700. 322["Block 322:\n %323 = load i32, i32* %1, align 4\n ret i32 %323\n"]:::critical
  701. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  702. ```
  703. ```mermaid: calculateDistance
  704. graph TD
  705. 3["Block 3:\n %4 = alloca double, align 8\n %5 = alloca i32*, align 8\n %6 = alloca double, align 8\n %7 = alloca double, align 8\n %8 = alloca double, align 8\n store i32* %2, i32** %5, align 8\n %9 = load i32*, i32** %5, align 8\n store i32 0, i32* %9, align 4\n %10 = getelementptr inbounds %struct.Point, %...\n %11 = load double, double* %10, align 8\n %12 = fcmp ole double %11, 0.000000e+00\n br i1 %12, label %17, label %13\n"]:::critical
  706. 3 -->|true| 17
  707. 3 -->|false| 13
  708. 13["Block 13:\n %14 = getelementptr inbounds %struct.Point, %...\n %15 = load double, double* %14, align 8\n %16 = fcmp ole double %15, 0.000000e+00\n br i1 %16, label %17, label %19\n"]
  709. 13 -->|true| 17
  710. 13 -->|false| 19
  711. 17["Block 17:\n %18 = load i32*, i32** %5, align 8\n store i32 1, i32* %18, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %4, align 8\n br label %101\n"]
  712. 17 --> 101
  713. 19["Block 19:\n %20 = getelementptr inbounds %struct.Point, %...\n %21 = load i32, i32* %20, align 8\n %22 = call i32 @abs(i32 %21) #7\n %23 = icmp sgt i32 %22, 1000\n br i1 %23, label %39, label %24\n"]
  714. 19 -->|true| 39
  715. 19 -->|false| 24
  716. 24["Block 24:\n %25 = getelementptr inbounds %struct.Point, %...\n %26 = load i32, i32* %25, align 4\n %27 = call i32 @abs(i32 %26) #7\n %28 = icmp sgt i32 %27, 1000\n br i1 %28, label %39, label %29\n"]
  717. 24 -->|true| 39
  718. 24 -->|false| 29
  719. 29["Block 29:\n %30 = getelementptr inbounds %struct.Point, %...\n %31 = load i32, i32* %30, align 8\n %32 = call i32 @abs(i32 %31) #7\n %33 = icmp sgt i32 %32, 1000\n br i1 %33, label %39, label %34\n"]
  720. 29 -->|true| 39
  721. 29 -->|false| 34
  722. 34["Block 34:\n %35 = getelementptr inbounds %struct.Point, %...\n %36 = load i32, i32* %35, align 4\n %37 = call i32 @abs(i32 %36) #7\n %38 = icmp sgt i32 %37, 1000\n br i1 %38, label %39, label %41\n"]
  723. 34 -->|true| 39
  724. 34 -->|false| 41
  725. 39["Block 39:\n %40 = load i32*, i32** %5, align 8\n store i32 3, i32* %40, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %4, align 8\n br label %101\n"]
  726. 39 --> 101
  727. 41["Block 41:\n %42 = getelementptr inbounds %struct.Point, %...\n %43 = load i32, i32* %42, align 8\n %44 = getelementptr inbounds %struct.Point, %...\n %45 = load i32, i32* %44, align 8\n %46 = sub nsw i32 %43, %45\n %47 = sitofp i32 %46 to double\n %48 = getelementptr inbounds %struct.Point, %...\n %49 = load double, double* %48, align 8\n %50 = getelementptr inbounds %struct.Point, %...\n %51 = load double, double* %50, align 8\n %52 = fdiv double %49, %51\n %53 = call double @sqrt(double %52) #8\n %54 = fmul double %47, %53\n store double %54, double* %6, align 8\n %55 = getelementptr inbounds %struct.Point, %...\n %56 = load i32, i32* %55, align 4\n %57 = getelementptr inbounds %struct.Point, %...\n %58 = load i32, i32* %57, align 4\n %59 = sub nsw i32 %56, %58\n %60 = sitofp i32 %59 to double\n %61 = getelementptr inbounds %struct.Point, %...\n %62 = load double, double* %61, align 8\n %63 = getelementptr inbounds %struct.Point, %...\n %64 = load double, double* %63, align 8\n %65 = fdiv double %62, %64\n %66 = call double @sqrt(double %65) #8\n %67 = fmul double %60, %66\n store double %67, double* %7, align 8\n %68 = load double, double* %6, align 8\n %69 = call double @llvm.fabs.f64(double %68)\n %70 = fcmp ogt double %69, 1.000000e+03\n br i1 %70, label %75, label %71\n"]
  728. 41 -->|true| 75
  729. 41 -->|false| 71
  730. 71["Block 71:\n %72 = load double, double* %7, align 8\n %73 = call double @llvm.fabs.f64(double %72)\n %74 = fcmp ogt double %73, 1.000000e+03\n br i1 %74, label %75, label %77\n"]
  731. 71 -->|true| 75
  732. 71 -->|false| 77
  733. 75["Block 75:\n %76 = load i32*, i32** %5, align 8\n store i32 5, i32* %76, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %4, align 8\n br label %101\n"]
  734. 75 --> 101
  735. 77["Block 77:\n %78 = load double, double* %6, align 8\n %79 = load double, double* %6, align 8\n %80 = fmul double %78, %79\n %81 = load double, double* %7, align 8\n %82 = load double, double* %7, align 8\n %83 = fmul double %81, %82\n %84 = fadd double %80, %83\n %85 = call double @sqrt(double %84) #8\n store double %85, double* %8, align 8\n %86 = load double, double* %8, align 8\n %87 = fcmp uno double %86, %86\n br i1 %87, label %97, label %88\n"]
  736. 77 -->|true| 97
  737. 77 -->|false| 88
  738. 88["Block 88:\n %89 = load double, double* %8, align 8\n %90 = call double @llvm.fabs.f64(double %89) #9\n %91 = fcmp oeq double %90, 0x7FF0000000000000\n %92 = bitcast double %89 to i64\n %93 = icmp slt i64 %92, 0\n %94 = select i1 %93, i32 -1, i32 1\n %95 = select i1 %91, i32 %94, i32 0\n %96 = icmp ne i32 %95, 0\n br i1 %96, label %97, label %99\n"]
  739. 88 -->|true| 97
  740. 88 -->|false| 99
  741. 97["Block 97:\n %98 = load i32*, i32** %5, align 8\n store i32 8, i32* %98, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %4, align 8\n br label %101\n"]
  742. 97 --> 101
  743. 99["Block 99:\n %100 = load double, double* %8, align 8\n store double %100, double* %4, align 8\n br label %101\n"]
  744. 99 --> 101
  745. 101["Block 101:\n %102 = load double, double* %4, align 8\n ret double %102\n"]:::critical
  746. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  747. ```
  748. ```mermaid: calculateCircleArea
  749. graph TD
  750. 2["Block 2:\n %3 = alloca double, align 8\n %4 = alloca i32*, align 8\n %5 = alloca double, align 8\n store i32* %1, i32** %4, align 8\n %6 = load i32*, i32** %4, align 8\n store i32 0, i32* %6, align 4\n %7 = getelementptr inbounds %struct.Circle, %...\n %8 = load i32, i32* %7, align 8\n %9 = icmp ne i32 %8, 0\n br i1 %9, label %12, label %10\n"]:::critical
  751. 2 -->|true| 12
  752. 2 -->|false| 10
  753. 10["Block 10:\n %11 = load i32*, i32** %4, align 8\n store i32 1, i32* %11, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  754. 10 --> 85
  755. 12["Block 12:\n %13 = getelementptr inbounds %struct.Circle, ...\n %14 = load double, double* %13, align 8\n %15 = fcmp ole double %14, 0.000000e+00\n br i1 %15, label %16, label %18\n"]
  756. 12 -->|true| 16
  757. 12 -->|false| 18
  758. 16["Block 16:\n %17 = load i32*, i32** %4, align 8\n store i32 1, i32* %17, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  759. 16 --> 85
  760. 18["Block 18:\n %19 = getelementptr inbounds %struct.Circle, ...\n %20 = load double, double* %19, align 8\n %21 = fcmp ogt double %20, 1.000000e+03\n br i1 %21, label %22, label %24\n"]
  761. 18 -->|true| 22
  762. 18 -->|false| 24
  763. 22["Block 22:\n %23 = load i32*, i32** %4, align 8\n store i32 3, i32* %23, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  764. 22 --> 85
  765. 24["Block 24:\n %25 = getelementptr inbounds %struct.Circle, ...\n %26 = getelementptr inbounds %struct.Point, %...\n %27 = load i32, i32* %26, align 8\n %28 = call i32 @abs(i32 %27) #7\n %29 = icmp sgt i32 %28, 1000\n br i1 %29, label %36, label %30\n"]
  766. 24 -->|true| 36
  767. 24 -->|false| 30
  768. 30["Block 30:\n %31 = getelementptr inbounds %struct.Circle, ...\n %32 = getelementptr inbounds %struct.Point, %...\n %33 = load i32, i32* %32, align 4\n %34 = call i32 @abs(i32 %33) #7\n %35 = icmp sgt i32 %34, 1000\n br i1 %35, label %36, label %38\n"]
  769. 30 -->|true| 36
  770. 30 -->|false| 38
  771. 36["Block 36:\n %37 = load i32*, i32** %4, align 8\n store i32 3, i32* %37, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  772. 36 --> 85
  773. 38["Block 38:\n %39 = getelementptr inbounds %struct.Circle, ...\n %40 = load double, double* %39, align 8\n %41 = fmul double 3.141590e+00, %40\n %42 = getelementptr inbounds %struct.Circle, ...\n %43 = load double, double* %42, align 8\n %44 = fmul double %41, %43\n store double %44, double* %5, align 8\n %45 = load double, double* %5, align 8\n %46 = fcmp uno double %45, %45\n br i1 %46, label %56, label %47\n"]
  774. 38 -->|true| 56
  775. 38 -->|false| 47
  776. 47["Block 47:\n %48 = load double, double* %5, align 8\n %49 = call double @llvm.fabs.f64(double %48) #8\n %50 = fcmp oeq double %49, 0x7FF0000000000000\n %51 = bitcast double %48 to i64\n %52 = icmp slt i64 %51, 0\n %53 = select i1 %52, i32 -1, i32 1\n %54 = select i1 %50, i32 %53, i32 0\n %55 = icmp ne i32 %54, 0\n br i1 %55, label %56, label %58\n"]
  777. 47 -->|true| 56
  778. 47 -->|false| 58
  779. 56["Block 56:\n %57 = load i32*, i32** %4, align 8\n store i32 5, i32* %57, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  780. 56 --> 85
  781. 58["Block 58:\n %59 = getelementptr inbounds %struct.Circle, ...\n %60 = getelementptr inbounds [256 x i8], [256...\n %61 = call i32 @strcmp(i8* %60, i8* getelemen...\n %62 = icmp eq i32 %61, 0\n br i1 %62, label %63, label %65\n"]
  782. 58 -->|true| 63
  783. 58 -->|false| 65
  784. 63["Block 63:\n %64 = load double, double* %5, align 8\n store double %64, double* %3, align 8\n br label %85\n"]
  785. 63 --> 85
  786. 65["Block 65:\n %66 = getelementptr inbounds %struct.Circle, ...\n %67 = getelementptr inbounds [256 x i8], [256...\n %68 = call i32 @strcmp(i8* %67, i8* getelemen...\n %69 = icmp eq i32 %68, 0\n br i1 %69, label %70, label %83\n"]
  787. 65 -->|true| 70
  788. 65 -->|false| 83
  789. 70["Block 70:\n %71 = getelementptr inbounds %struct.Circle, ...\n %72 = getelementptr inbounds %struct.Point, %...\n %73 = load double, double* %72, align 8\n %74 = fcmp ole double %73, 0.000000e+00\n br i1 %74, label %75, label %77\n"]
  790. 70 -->|true| 75
  791. 70 -->|false| 77
  792. 75["Block 75:\n %76 = load i32*, i32** %4, align 8\n store i32 1, i32* %76, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  793. 75 --> 85
  794. 77["Block 77:\n %78 = load double, double* %5, align 8\n %79 = getelementptr inbounds %struct.Circle, ...\n %80 = getelementptr inbounds %struct.Point, %...\n %81 = load double, double* %80, align 8\n %82 = fmul double %78, %81\n store double %82, double* %3, align 8\n br label %85\n"]
  795. 77 --> 85
  796. 83["Block 83:\n %84 = load i32*, i32** %4, align 8\n store i32 1, i32* %84, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store double -1.000000e+00, double* %3, align 8\n br label %85\n"]
  797. 83 --> 85
  798. 85["Block 85:\n %86 = load double, double* %3, align 8\n ret double %86\n"]:::critical
  799. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  800. ```
  801. ```mermaid: validateMatrix
  802. graph TD
  803. 1["Block 1:\n %2 = alloca i32, align 4\n %3 = alloca %struct.Matrix*, align 8\n %4 = alloca i32, align 4\n store %struct.Matrix* %0, %struct.Matrix** %3...\n %5 = load %struct.Matrix*, %struct.Matrix** %...\n %6 = icmp ne %struct.Matrix* %5, null\n br i1 %6, label %8, label %7\n"]:::critical
  804. 1 -->|true| 8
  805. 1 -->|false| 7
  806. 7["Block 7:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 7, i32* %2, align 4\n br label %72\n"]
  807. 7 --> 72
  808. 8["Block 8:\n %9 = load %struct.Matrix*, %struct.Matrix** %...\n %10 = getelementptr inbounds %struct.Matrix, ...\n %11 = load i32**, i32*** %10, align 8\n %12 = icmp ne i32** %11, null\n br i1 %12, label %14, label %13\n"]
  809. 8 -->|true| 14
  810. 8 -->|false| 13
  811. 13["Block 13:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 7, i32* %2, align 4\n br label %72\n"]
  812. 13 --> 72
  813. 14["Block 14:\n %15 = load %struct.Matrix*, %struct.Matrix** ...\n %16 = getelementptr inbounds %struct.Matrix, ...\n %17 = load i32, i32* %16, align 8\n %18 = icmp slt i32 %17, 1\n br i1 %18, label %24, label %19\n"]
  814. 14 -->|true| 24
  815. 14 -->|false| 19
  816. 19["Block 19:\n %20 = load %struct.Matrix*, %struct.Matrix** ...\n %21 = getelementptr inbounds %struct.Matrix, ...\n %22 = load i32, i32* %21, align 4\n %23 = icmp slt i32 %22, 1\n br i1 %23, label %24, label %25\n"]
  817. 19 -->|true| 24
  818. 19 -->|false| 25
  819. 24["Block 24:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 1, i32* %2, align 4\n br label %72\n"]
  820. 24 --> 72
  821. 25["Block 25:\n %26 = load %struct.Matrix*, %struct.Matrix** ...\n %27 = getelementptr inbounds %struct.Matrix, ...\n %28 = load i32, i32* %27, align 8\n %29 = icmp sgt i32 %28, 100\n br i1 %29, label %35, label %30\n"]
  822. 25 -->|true| 35
  823. 25 -->|false| 30
  824. 30["Block 30:\n %31 = load %struct.Matrix*, %struct.Matrix** ...\n %32 = getelementptr inbounds %struct.Matrix, ...\n %33 = load i32, i32* %32, align 4\n %34 = icmp sgt i32 %33, 100\n br i1 %34, label %35, label %36\n"]
  825. 30 -->|true| 35
  826. 30 -->|false| 36
  827. 35["Block 35:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 3, i32* %2, align 4\n br label %72\n"]
  828. 35 --> 72
  829. 36["Block 36:\n store i32 0, i32* %4, align 4\n br label %37\n"]
  830. 36 --> 37
  831. 37["Block 37:\n %38 = load i32, i32* %4, align 4\n %39 = load %struct.Matrix*, %struct.Matrix** ...\n %40 = getelementptr inbounds %struct.Matrix, ...\n %41 = load i32, i32* %40, align 8\n %42 = icmp slt i32 %38, %41\n br i1 %42, label %43, label %57\n"]
  832. 37 -->|true| 43
  833. 37 -->|false| 57
  834. 43["Block 43:\n %44 = load %struct.Matrix*, %struct.Matrix** ...\n %45 = getelementptr inbounds %struct.Matrix, ...\n %46 = load i32**, i32*** %45, align 8\n %47 = load i32, i32* %4, align 4\n %48 = sext i32 %47 to i64\n %49 = getelementptr inbounds i32*, i32** %46,...\n %50 = load i32*, i32** %49, align 8\n %51 = icmp ne i32* %50, null\n br i1 %51, label %53, label %52\n"]
  835. 43 -->|true| 53
  836. 43 -->|false| 52
  837. 52["Block 52:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 7, i32* %2, align 4\n br label %72\n"]
  838. 52 --> 72
  839. 53["Block 53:\n br label %54\n"]
  840. 53 --> 54
  841. 54["Block 54:\n %55 = load i32, i32* %4, align 4\n %56 = add nsw i32 %55, 1\n store i32 %56, i32* %4, align 4\n br label %37\n"]
  842. 54 --> 37
  843. 57["Block 57:\n %58 = load %struct.Matrix*, %struct.Matrix** ...\n %59 = getelementptr inbounds %struct.Matrix, ...\n %60 = load i32, i32* %59, align 8\n %61 = load %struct.Matrix*, %struct.Matrix** ...\n %62 = getelementptr inbounds %struct.Matrix, ...\n %63 = load i32, i32* %62, align 4\n %64 = icmp eq i32 %60, %63\n %65 = zext i1 %64 to i32\n %66 = load %struct.Matrix*, %struct.Matrix** ...\n %67 = getelementptr inbounds %struct.Matrix, ...\n %68 = load i32, i32* %67, align 8\n %69 = icmp ne i32 %65, %68\n br i1 %69, label %70, label %71\n"]
  844. 57 -->|true| 70
  845. 57 -->|false| 71
  846. 70["Block 70:\n call void @setErrorMessage(i8* getelementptr ...\n store i32 1, i32* %2, align 4\n br label %72\n"]
  847. 70 --> 72
  848. 71["Block 71:\n store i32 0, i32* %2, align 4\n br label %72\n"]
  849. 71 --> 72
  850. 72["Block 72:\n %73 = load i32, i32* %2, align 4\n ret i32 %73\n"]:::critical
  851. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  852. ```
  853. ```mermaid: removeDuplicates
  854. graph TD
  855. 1["Block 1:\n %2 = alloca %struct.DynamicArray*, align 8\n %3 = alloca i32, align 4\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store %struct.DynamicArray* %0, %struct.Dynam...\n %6 = load %struct.DynamicArray*, %struct.Dyna...\n %7 = icmp ne %struct.DynamicArray* %6, null\n br i1 %7, label %8, label %13\n"]:::critical
  856. 1 -->|true| 8
  857. 1 -->|false| 13
  858. 8["Block 8:\n %9 = load %struct.DynamicArray*, %struct.Dyna...\n %10 = getelementptr inbounds %struct.DynamicA...\n %11 = load i32*, i32** %10, align 8\n %12 = icmp ne i32* %11, null\n br i1 %12, label %14, label %13\n"]
  859. 8 -->|true| 14
  860. 8 -->|false| 13
  861. 13["Block 13:\n call void @setErrorMessage(i8* getelementptr ...\n br label %81\n"]
  862. 13 --> 81
  863. 14["Block 14:\n %15 = load %struct.DynamicArray*, %struct.Dyn...\n %16 = getelementptr inbounds %struct.DynamicA...\n %17 = load i32, i32* %16, align 8\n %18 = icmp sle i32 %17, 1\n br i1 %18, label %19, label %20\n"]
  864. 14 -->|true| 19
  865. 14 -->|false| 20
  866. 19["Block 19:\n br label %81\n"]
  867. 19 --> 81
  868. 20["Block 20:\n store i32 0, i32* %3, align 4\n %21 = load %struct.DynamicArray*, %struct.Dyn...\n %22 = getelementptr inbounds %struct.DynamicA...\n %23 = load i32*, i32** %22, align 8\n %24 = load %struct.DynamicArray*, %struct.Dyn...\n %25 = getelementptr inbounds %struct.DynamicA...\n %26 = load i32, i32* %25, align 8\n %27 = sub nsw i32 %26, 1\n call void @quickSort(i32* %23, i32 0, i32 %27...\n %28 = load i32, i32* %3, align 4\n %29 = icmp ne i32 %28, 0\n br i1 %29, label %30, label %31\n"]
  869. 20 -->|true| 30
  870. 20 -->|false| 31
  871. 30["Block 30:\n br label %81\n"]
  872. 30 --> 81
  873. 31["Block 31:\n store i32 1, i32* %4, align 4\n store i32 1, i32* %5, align 4\n br label %32\n"]
  874. 31 --> 32
  875. 32["Block 32:\n %33 = load i32, i32* %5, align 4\n %34 = load %struct.DynamicArray*, %struct.Dyn...\n %35 = getelementptr inbounds %struct.DynamicA...\n %36 = load i32, i32* %35, align 8\n %37 = icmp slt i32 %33, %36\n br i1 %37, label %38, label %75\n"]
  876. 32 -->|true| 38
  877. 32 -->|false| 75
  878. 38["Block 38:\n %39 = load %struct.DynamicArray*, %struct.Dyn...\n %40 = getelementptr inbounds %struct.DynamicA...\n %41 = load i32*, i32** %40, align 8\n %42 = load i32, i32* %5, align 4\n %43 = sext i32 %42 to i64\n %44 = getelementptr inbounds i32, i32* %41, i...\n %45 = load i32, i32* %44, align 4\n %46 = load %struct.DynamicArray*, %struct.Dyn...\n %47 = getelementptr inbounds %struct.DynamicA...\n %48 = load i32*, i32** %47, align 8\n %49 = load i32, i32* %5, align 4\n %50 = sub nsw i32 %49, 1\n %51 = sext i32 %50 to i64\n %52 = getelementptr inbounds i32, i32* %48, i...\n %53 = load i32, i32* %52, align 4\n %54 = icmp ne i32 %45, %53\n br i1 %54, label %55, label %71\n"]
  879. 38 -->|true| 55
  880. 38 -->|false| 71
  881. 55["Block 55:\n %56 = load %struct.DynamicArray*, %struct.Dyn...\n %57 = getelementptr inbounds %struct.DynamicA...\n %58 = load i32*, i32** %57, align 8\n %59 = load i32, i32* %5, align 4\n %60 = sext i32 %59 to i64\n %61 = getelementptr inbounds i32, i32* %58, i...\n %62 = load i32, i32* %61, align 4\n %63 = load %struct.DynamicArray*, %struct.Dyn...\n %64 = getelementptr inbounds %struct.DynamicA...\n %65 = load i32*, i32** %64, align 8\n %66 = load i32, i32* %4, align 4\n %67 = sext i32 %66 to i64\n %68 = getelementptr inbounds i32, i32* %65, i...\n store i32 %62, i32* %68, align 4\n %69 = load i32, i32* %4, align 4\n %70 = add nsw i32 %69, 1\n store i32 %70, i32* %4, align 4\n br label %71\n"]
  882. 55 --> 71
  883. 71["Block 71:\n br label %72\n"]
  884. 71 --> 72
  885. 72["Block 72:\n %73 = load i32, i32* %5, align 4\n %74 = add nsw i32 %73, 1\n store i32 %74, i32* %5, align 4\n br label %32\n"]
  886. 72 --> 32
  887. 75["Block 75:\n %76 = load i32, i32* %4, align 4\n %77 = load %struct.DynamicArray*, %struct.Dyn...\n %78 = getelementptr inbounds %struct.DynamicA...\n store i32 %76, i32* %78, align 8\n %79 = load %struct.DynamicArray*, %struct.Dyn...\n %80 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %80, align 8\n br label %81\n"]
  888. 75 --> 81
  889. 81["Block 81:\n ret void\n"]:::critical
  890. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  891. ```
  892. ```mermaid: findCentroid
  893. graph TD
  894. 3["Block 3:\n %4 = alloca %struct.Point*, align 8\n %5 = alloca %struct.Point*, align 8\n %6 = alloca i32, align 4\n %7 = alloca i32*, align 8\n %8 = alloca %struct.Point*, align 8\n %9 = alloca double, align 8\n %10 = alloca double, align 8\n %11 = alloca double, align 8\n %12 = alloca i32, align 4\n store %struct.Point* %0, %struct.Point** %5, ...\n store i32 %1, i32* %6, align 4\n store i32* %2, i32** %7, align 8\n %13 = load i32*, i32** %7, align 8\n store i32 0, i32* %13, align 4\n %14 = load %struct.Point*, %struct.Point** %5...\n %15 = icmp ne %struct.Point* %14, null\n br i1 %15, label %16, label %19\n"]:::critical
  895. 3 -->|true| 16
  896. 3 -->|false| 19
  897. 16["Block 16:\n %17 = load i32, i32* %6, align 4\n %18 = icmp sle i32 %17, 0\n br i1 %18, label %19, label %21\n"]
  898. 16 -->|true| 19
  899. 16 -->|false| 21
  900. 19["Block 19:\n %20 = load i32*, i32** %7, align 8\n store i32 1, i32* %20, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  901. 19 --> 165
  902. 21["Block 21:\n %22 = load i32, i32* %6, align 4\n %23 = icmp sgt i32 %22, 1000\n br i1 %23, label %24, label %26\n"]
  903. 21 -->|true| 24
  904. 21 -->|false| 26
  905. 24["Block 24:\n %25 = load i32*, i32** %7, align 8\n store i32 3, i32* %25, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  906. 24 --> 165
  907. 26["Block 26:\n %27 = call noalias i8* @malloc(i64 272) #7\n %28 = bitcast i8* %27 to %struct.Point*\n store %struct.Point* %28, %struct.Point** %8,...\n %29 = load %struct.Point*, %struct.Point** %8...\n %30 = icmp ne %struct.Point* %29, null\n br i1 %30, label %33, label %31\n"]
  908. 26 -->|true| 33
  909. 26 -->|false| 31
  910. 31["Block 31:\n %32 = load i32*, i32** %7, align 8\n store i32 2, i32* %32, align 4\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  911. 31 --> 165
  912. 33["Block 33:\n store double 0.000000e+00, double* %9, align 8\n store double 0.000000e+00, double* %10, align 8\n store double 0.000000e+00, double* %11, align 8\n store i32 0, i32* %12, align 4\n br label %34\n"]
  913. 33 --> 34
  914. 34["Block 34:\n %35 = load i32, i32* %12, align 4\n %36 = load i32, i32* %6, align 4\n %37 = icmp slt i32 %35, %36\n br i1 %37, label %38, label %134\n"]
  915. 34 -->|true| 38
  916. 34 -->|false| 134
  917. 38["Block 38:\n %39 = load %struct.Point*, %struct.Point** %5...\n %40 = load i32, i32* %12, align 4\n %41 = sext i32 %40 to i64\n %42 = getelementptr inbounds %struct.Point, %...\n %43 = getelementptr inbounds %struct.Point, %...\n %44 = load double, double* %43, align 8\n %45 = fcmp ole double %44, 0.000000e+00\n br i1 %45, label %46, label %50\n"]
  918. 38 -->|true| 46
  919. 38 -->|false| 50
  920. 46["Block 46:\n %47 = load i32*, i32** %7, align 8\n store i32 1, i32* %47, align 4\n call void @setErrorMessage(i8* getelementptr ...\n %48 = load %struct.Point*, %struct.Point** %8...\n %49 = bitcast %struct.Point* %48 to i8*\n call void @free(i8* %49) #7\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  921. 46 --> 165
  922. 50["Block 50:\n %51 = load %struct.Point*, %struct.Point** %5...\n %52 = load i32, i32* %12, align 4\n %53 = sext i32 %52 to i64\n %54 = getelementptr inbounds %struct.Point, %...\n %55 = getelementptr inbounds %struct.Point, %...\n %56 = load double, double* %55, align 8\n %57 = load double, double* %9, align 8\n %58 = fadd double %57, %56\n store double %58, double* %9, align 8\n %59 = load %struct.Point*, %struct.Point** %5...\n %60 = load i32, i32* %12, align 4\n %61 = sext i32 %60 to i64\n %62 = getelementptr inbounds %struct.Point, %...\n %63 = getelementptr inbounds %struct.Point, %...\n %64 = load i32, i32* %63, align 8\n %65 = sitofp i32 %64 to double\n %66 = load %struct.Point*, %struct.Point** %5...\n %67 = load i32, i32* %12, align 4\n %68 = sext i32 %67 to i64\n %69 = getelementptr inbounds %struct.Point, %...\n %70 = getelementptr inbounds %struct.Point, %...\n %71 = load double, double* %70, align 8\n %72 = fmul double %65, %71\n %73 = load double, double* %10, align 8\n %74 = fadd double %73, %72\n store double %74, double* %10, align 8\n %75 = load %struct.Point*, %struct.Point** %5...\n %76 = load i32, i32* %12, align 4\n %77 = sext i32 %76 to i64\n %78 = getelementptr inbounds %struct.Point, %...\n %79 = getelementptr inbounds %struct.Point, %...\n %80 = load i32, i32* %79, align 4\n %81 = sitofp i32 %80 to double\n %82 = load %struct.Point*, %struct.Point** %5...\n %83 = load i32, i32* %12, align 4\n %84 = sext i32 %83 to i64\n %85 = getelementptr inbounds %struct.Point, %...\n %86 = getelementptr inbounds %struct.Point, %...\n %87 = load double, double* %86, align 8\n %88 = fmul double %81, %87\n %89 = load double, double* %11, align 8\n %90 = fadd double %89, %88\n store double %90, double* %11, align 8\n %91 = load double, double* %9, align 8\n %92 = fcmp uno double %91, %91\n br i1 %92, label %126, label %93\n"]
  923. 50 -->|true| 126
  924. 50 -->|false| 93
  925. 93["Block 93:\n %94 = load double, double* %10, align 8\n %95 = fcmp uno double %94, %94\n br i1 %95, label %126, label %96\n"]
  926. 93 -->|true| 126
  927. 93 -->|false| 96
  928. 96["Block 96:\n %97 = load double, double* %11, align 8\n %98 = fcmp uno double %97, %97\n br i1 %98, label %126, label %99\n"]
  929. 96 -->|true| 126
  930. 96 -->|false| 99
  931. 99["Block 99:\n %100 = load double, double* %9, align 8\n %101 = call double @llvm.fabs.f64(double %100...\n %102 = fcmp oeq double %101, 0x7FF0000000000000\n %103 = bitcast double %100 to i64\n %104 = icmp slt i64 %103, 0\n %105 = select i1 %104, i32 -1, i32 1\n %106 = select i1 %102, i32 %105, i32 0\n %107 = icmp ne i32 %106, 0\n br i1 %107, label %126, label %108\n"]
  932. 99 -->|true| 126
  933. 99 -->|false| 108
  934. 108["Block 108:\n %109 = load double, double* %10, align 8\n %110 = call double @llvm.fabs.f64(double %109...\n %111 = fcmp oeq double %110, 0x7FF0000000000000\n %112 = bitcast double %109 to i64\n %113 = icmp slt i64 %112, 0\n %114 = select i1 %113, i32 -1, i32 1\n %115 = select i1 %111, i32 %114, i32 0\n %116 = icmp ne i32 %115, 0\n br i1 %116, label %126, label %117\n"]
  935. 108 -->|true| 126
  936. 108 -->|false| 117
  937. 117["Block 117:\n %118 = load double, double* %11, align 8\n %119 = call double @llvm.fabs.f64(double %118...\n %120 = fcmp oeq double %119, 0x7FF0000000000000\n %121 = bitcast double %118 to i64\n %122 = icmp slt i64 %121, 0\n %123 = select i1 %122, i32 -1, i32 1\n %124 = select i1 %120, i32 %123, i32 0\n %125 = icmp ne i32 %124, 0\n br i1 %125, label %126, label %130\n"]
  938. 117 -->|true| 126
  939. 117 -->|false| 130
  940. 126["Block 126:\n %127 = load i32*, i32** %7, align 8\n store i32 5, i32* %127, align 4\n call void @setErrorMessage(i8* getelementptr ...\n %128 = load %struct.Point*, %struct.Point** %...\n %129 = bitcast %struct.Point* %128 to i8*\n call void @free(i8* %129) #7\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  941. 126 --> 165
  942. 130["Block 130:\n br label %131\n"]
  943. 130 --> 131
  944. 131["Block 131:\n %132 = load i32, i32* %12, align 4\n %133 = add nsw i32 %132, 1\n store i32 %133, i32* %12, align 4\n br label %34\n"]
  945. 131 --> 34
  946. 134["Block 134:\n %135 = load double, double* %9, align 8\n %136 = fcmp oeq double %135, 0.000000e+00\n br i1 %136, label %137, label %141\n"]
  947. 134 -->|true| 137
  948. 134 -->|false| 141
  949. 137["Block 137:\n %138 = load i32*, i32** %7, align 8\n store i32 1, i32* %138, align 4\n call void @setErrorMessage(i8* getelementptr ...\n %139 = load %struct.Point*, %struct.Point** %...\n %140 = bitcast %struct.Point* %139 to i8*\n call void @free(i8* %140) #7\n store %struct.Point* null, %struct.Point** %4...\n br label %165\n"]
  950. 137 --> 165
  951. 141["Block 141:\n %142 = load double, double* %10, align 8\n %143 = load double, double* %9, align 8\n %144 = fdiv double %142, %143\n %145 = fptosi double %144 to i32\n %146 = load %struct.Point*, %struct.Point** %...\n %147 = getelementptr inbounds %struct.Point, ...\n store i32 %145, i32* %147, align 8\n %148 = load double, double* %11, align 8\n %149 = load double, double* %9, align 8\n %150 = fdiv double %148, %149\n %151 = fptosi double %150 to i32\n %152 = load %struct.Point*, %struct.Point** %...\n %153 = getelementptr inbounds %struct.Point, ...\n store i32 %151, i32* %153, align 4\n %154 = load double, double* %9, align 8\n %155 = load i32, i32* %6, align 4\n %156 = sitofp i32 %155 to double\n %157 = fdiv double %154, %156\n %158 = load %struct.Point*, %struct.Point** %...\n %159 = getelementptr inbounds %struct.Point, ...\n store double %157, double* %159, align 8\n %160 = load %struct.Point*, %struct.Point** %...\n %161 = getelementptr inbounds %struct.Point, ...\n %162 = getelementptr inbounds [256 x i8], [25...\n %163 = call i8* @strcpy(i8* %162, i8* getelem...\n %164 = load %struct.Point*, %struct.Point** %...\n store %struct.Point* %164, %struct.Point** %4...\n br label %165\n"]
  952. 141 --> 165
  953. 165["Block 165:\n %166 = load %struct.Point*, %struct.Point** %...\n ret %struct.Point* %166\n"]:::critical
  954. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  955. ```
  956. ```mermaid: reverseString
  957. graph TD
  958. 1["Block 1:\n %2 = alloca i8*, align 8\n %3 = alloca i32, align 4\n %4 = alloca i32, align 4\n %5 = alloca i8, align 1\n store i8* %0, i8** %2, align 8\n %6 = load i8*, i8** %2, align 8\n %7 = call i64 @strlen(i8* %6) #7\n %8 = trunc i64 %7 to i32\n store i32 %8, i32* %3, align 4\n store i32 0, i32* %4, align 4\n br label %9\n"]:::critical
  959. 1 --> 9
  960. 9["Block 9:\n %10 = load i32, i32* %4, align 4\n %11 = load i32, i32* %3, align 4\n %12 = sdiv i32 %11, 2\n %13 = icmp slt i32 %10, %12\n br i1 %13, label %14, label %43\n"]:::critical
  961. 9 -->|true| 14
  962. 9 -->|false| 43
  963. 14["Block 14:\n %15 = load i8*, i8** %2, align 8\n %16 = load i32, i32* %4, align 4\n %17 = sext i32 %16 to i64\n %18 = getelementptr inbounds i8, i8* %15, i64...\n %19 = load i8, i8* %18, align 1\n store i8 %19, i8* %5, align 1\n %20 = load i8*, i8** %2, align 8\n %21 = load i32, i32* %3, align 4\n %22 = sub nsw i32 %21, 1\n %23 = load i32, i32* %4, align 4\n %24 = sub nsw i32 %22, %23\n %25 = sext i32 %24 to i64\n %26 = getelementptr inbounds i8, i8* %20, i64...\n %27 = load i8, i8* %26, align 1\n %28 = load i8*, i8** %2, align 8\n %29 = load i32, i32* %4, align 4\n %30 = sext i32 %29 to i64\n %31 = getelementptr inbounds i8, i8* %28, i64...\n store i8 %27, i8* %31, align 1\n %32 = load i8, i8* %5, align 1\n %33 = load i8*, i8** %2, align 8\n %34 = load i32, i32* %3, align 4\n %35 = sub nsw i32 %34, 1\n %36 = load i32, i32* %4, align 4\n %37 = sub nsw i32 %35, %36\n %38 = sext i32 %37 to i64\n %39 = getelementptr inbounds i8, i8* %33, i64...\n store i8 %32, i8* %39, align 1\n br label %40\n"]
  964. 14 --> 40
  965. 40["Block 40:\n %41 = load i32, i32* %4, align 4\n %42 = add nsw i32 %41, 1\n store i32 %42, i32* %4, align 4\n br label %9\n"]
  966. 40 --> 9
  967. 43["Block 43:\n ret void\n"]:::critical
  968. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  969. ```
  970. ```mermaid: longestIncreasingSubsequence
  971. graph TD
  972. 2["Block 2:\n %3 = alloca i32*, align 8\n %4 = alloca i32, align 4\n %5 = alloca [100 x i32], align 16\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n store i32* %0, i32** %3, align 8\n store i32 %1, i32* %4, align 4\n store i32 0, i32* %6, align 4\n br label %11\n"]:::critical
  973. 2 --> 11
  974. 11["Block 11:\n %12 = load i32, i32* %6, align 4\n %13 = load i32, i32* %4, align 4\n %14 = icmp slt i32 %12, %13\n br i1 %14, label %15, label %22\n"]:::critical
  975. 11 -->|true| 15
  976. 11 -->|false| 22
  977. 15["Block 15:\n %16 = load i32, i32* %6, align 4\n %17 = sext i32 %16 to i64\n %18 = getelementptr inbounds [100 x i32], [10...\n store i32 1, i32* %18, align 4\n br label %19\n"]
  978. 15 --> 19
  979. 19["Block 19:\n %20 = load i32, i32* %6, align 4\n %21 = add nsw i32 %20, 1\n store i32 %21, i32* %6, align 4\n br label %11\n"]
  980. 19 --> 11
  981. 22["Block 22:\n store i32 1, i32* %7, align 4\n br label %23\n"]:::critical
  982. 22 --> 23
  983. 23["Block 23:\n %24 = load i32, i32* %7, align 4\n %25 = load i32, i32* %4, align 4\n %26 = icmp slt i32 %24, %25\n br i1 %26, label %27, label %72\n"]:::critical
  984. 23 -->|true| 27
  985. 23 -->|false| 72
  986. 27["Block 27:\n store i32 0, i32* %8, align 4\n br label %28\n"]
  987. 27 --> 28
  988. 28["Block 28:\n %29 = load i32, i32* %8, align 4\n %30 = load i32, i32* %7, align 4\n %31 = icmp slt i32 %29, %30\n br i1 %31, label %32, label %68\n"]
  989. 28 -->|true| 32
  990. 28 -->|false| 68
  991. 32["Block 32:\n %33 = load i32*, i32** %3, align 8\n %34 = load i32, i32* %7, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds i32, i32* %33, i...\n %37 = load i32, i32* %36, align 4\n %38 = load i32*, i32** %3, align 8\n %39 = load i32, i32* %8, align 4\n %40 = sext i32 %39 to i64\n %41 = getelementptr inbounds i32, i32* %38, i...\n %42 = load i32, i32* %41, align 4\n %43 = icmp sgt i32 %37, %42\n br i1 %43, label %44, label %64\n"]
  992. 32 -->|true| 44
  993. 32 -->|false| 64
  994. 44["Block 44:\n %45 = load i32, i32* %7, align 4\n %46 = sext i32 %45 to i64\n %47 = getelementptr inbounds [100 x i32], [10...\n %48 = load i32, i32* %47, align 4\n %49 = load i32, i32* %8, align 4\n %50 = sext i32 %49 to i64\n %51 = getelementptr inbounds [100 x i32], [10...\n %52 = load i32, i32* %51, align 4\n %53 = add nsw i32 %52, 1\n %54 = icmp slt i32 %48, %53\n br i1 %54, label %55, label %64\n"]
  995. 44 -->|true| 55
  996. 44 -->|false| 64
  997. 55["Block 55:\n %56 = load i32, i32* %8, align 4\n %57 = sext i32 %56 to i64\n %58 = getelementptr inbounds [100 x i32], [10...\n %59 = load i32, i32* %58, align 4\n %60 = add nsw i32 %59, 1\n %61 = load i32, i32* %7, align 4\n %62 = sext i32 %61 to i64\n %63 = getelementptr inbounds [100 x i32], [10...\n store i32 %60, i32* %63, align 4\n br label %64\n"]
  998. 55 --> 64
  999. 64["Block 64:\n br label %65\n"]
  1000. 64 --> 65
  1001. 65["Block 65:\n %66 = load i32, i32* %8, align 4\n %67 = add nsw i32 %66, 1\n store i32 %67, i32* %8, align 4\n br label %28\n"]
  1002. 65 --> 28
  1003. 68["Block 68:\n br label %69\n"]
  1004. 68 --> 69
  1005. 69["Block 69:\n %70 = load i32, i32* %7, align 4\n %71 = add nsw i32 %70, 1\n store i32 %71, i32* %7, align 4\n br label %23\n"]
  1006. 69 --> 23
  1007. 72["Block 72:\n store i32 0, i32* %9, align 4\n store i32 0, i32* %10, align 4\n br label %73\n"]:::critical
  1008. 72 --> 73
  1009. 73["Block 73:\n %74 = load i32, i32* %10, align 4\n %75 = load i32, i32* %4, align 4\n %76 = icmp slt i32 %74, %75\n br i1 %76, label %77, label %93\n"]:::critical
  1010. 73 -->|true| 77
  1011. 73 -->|false| 93
  1012. 77["Block 77:\n %78 = load i32, i32* %9, align 4\n %79 = load i32, i32* %10, align 4\n %80 = sext i32 %79 to i64\n %81 = getelementptr inbounds [100 x i32], [10...\n %82 = load i32, i32* %81, align 4\n %83 = icmp slt i32 %78, %82\n br i1 %83, label %84, label %89\n"]
  1013. 77 -->|true| 84
  1014. 77 -->|false| 89
  1015. 84["Block 84:\n %85 = load i32, i32* %10, align 4\n %86 = sext i32 %85 to i64\n %87 = getelementptr inbounds [100 x i32], [10...\n %88 = load i32, i32* %87, align 4\n store i32 %88, i32* %9, align 4\n br label %89\n"]
  1016. 84 --> 89
  1017. 89["Block 89:\n br label %90\n"]
  1018. 89 --> 90
  1019. 90["Block 90:\n %91 = load i32, i32* %10, align 4\n %92 = add nsw i32 %91, 1\n store i32 %92, i32* %10, align 4\n br label %73\n"]
  1020. 90 --> 73
  1021. 93["Block 93:\n %94 = load i32, i32* %9, align 4\n ret i32 %94\n"]:::critical
  1022. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1023. ```
  1024. ```mermaid: testPoints
  1025. graph TD
  1026. 1["Block 1:\n %2 = alloca i32, align 4\n %3 = alloca i32, align 4\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store i32 %0, i32* %3, align 4\n store i32 0, i32* %4, align 4\n store i32 1, i32* %5, align 4\n br label %6\n"]:::critical
  1027. 1 --> 6
  1028. 6["Block 6:\n %7 = load i32, i32* %5, align 4\n %8 = icmp slt i32 %7, 5\n br i1 %8, label %9, label %19\n"]:::critical
  1029. 6 -->|true| 9
  1030. 6 -->|false| 19
  1031. 9["Block 9:\n %10 = load i32, i32* %4, align 4\n %11 = add nsw i32 %10, 1\n store i32 %11, i32* %4, align 4\n %12 = load i32, i32* %3, align 4\n %13 = icmp sgt i32 %12, 2\n br i1 %13, label %14, label %15\n"]
  1032. 9 -->|true| 14
  1033. 9 -->|false| 15
  1034. 14["Block 14:\n store i32 23, i32* %2, align 4\n br label %21\n"]
  1035. 14 --> 21
  1036. 15["Block 15:\n br label %16\n"]
  1037. 15 --> 16
  1038. 16["Block 16:\n %17 = load i32, i32* %5, align 4\n %18 = add nsw i32 %17, 1\n store i32 %18, i32* %5, align 4\n br label %6\n"]
  1039. 16 --> 6
  1040. 19["Block 19:\n %20 = load i32, i32* %4, align 4\n store i32 %20, i32* %2, align 4\n br label %21\n"]
  1041. 19 --> 21
  1042. 21["Block 21:\n %22 = load i32, i32* %2, align 4\n ret i32 %22\n"]:::critical
  1043. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1044. ```
  1045. ```mermaid: countSetBits
  1046. graph TD
  1047. 1["Block 1:\n %2 = alloca i32, align 4\n %3 = alloca i32, align 4\n store i32 %0, i32* %2, align 4\n store i32 0, i32* %3, align 4\n br label %4\n"]:::critical
  1048. 1 --> 4
  1049. 4["Block 4:\n %5 = load i32, i32* %2, align 4\n %6 = icmp ne i32 %5, 0\n br i1 %6, label %7, label %14\n"]:::critical
  1050. 4 -->|true| 7
  1051. 4 -->|false| 14
  1052. 7["Block 7:\n %8 = load i32, i32* %2, align 4\n %9 = and i32 %8, 1\n %10 = load i32, i32* %3, align 4\n %11 = add nsw i32 %10, %9\n store i32 %11, i32* %3, align 4\n %12 = load i32, i32* %2, align 4\n %13 = ashr i32 %12, 1\n store i32 %13, i32* %2, align 4\n br label %4\n"]
  1053. 7 --> 4
  1054. 14["Block 14:\n %15 = load i32, i32* %3, align 4\n ret i32 %15\n"]:::critical
  1055. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1056. ```
  1057. ```mermaid: memoizedFib
  1058. graph TD
  1059. 1["Block 1:\n %2 = alloca i32, align 4\n %3 = alloca i32, align 4\n store i32 %0, i32* %3, align 4\n %4 = load i32, i32* %3, align 4\n %5 = sext i32 %4 to i64\n %6 = getelementptr inbounds [100 x i32], [100...\n %7 = load i32, i32* %6, align 4\n %8 = icmp ne i32 %7, -1\n br i1 %8, label %9, label %14\n"]:::critical
  1060. 1 -->|true| 9
  1061. 1 -->|false| 14
  1062. 9["Block 9:\n %10 = load i32, i32* %3, align 4\n %11 = sext i32 %10 to i64\n %12 = getelementptr inbounds [100 x i32], [10...\n %13 = load i32, i32* %12, align 4\n store i32 %13, i32* %2, align 4\n br label %34\n"]
  1063. 9 --> 34
  1064. 14["Block 14:\n %15 = load i32, i32* %3, align 4\n %16 = icmp sle i32 %15, 1\n br i1 %16, label %17, label %19\n"]
  1065. 14 -->|true| 17
  1066. 14 -->|false| 19
  1067. 17["Block 17:\n %18 = load i32, i32* %3, align 4\n store i32 %18, i32* %2, align 4\n br label %34\n"]
  1068. 17 --> 34
  1069. 19["Block 19:\n %20 = load i32, i32* %3, align 4\n %21 = sub nsw i32 %20, 1\n %22 = call i32 @memoizedFib(i32 %21)\n %23 = load i32, i32* %3, align 4\n %24 = sub nsw i32 %23, 2\n %25 = call i32 @memoizedFib(i32 %24)\n %26 = add nsw i32 %22, %25\n %27 = load i32, i32* %3, align 4\n %28 = sext i32 %27 to i64\n %29 = getelementptr inbounds [100 x i32], [10...\n store i32 %26, i32* %29, align 4\n %30 = load i32, i32* %3, align 4\n %31 = sext i32 %30 to i64\n %32 = getelementptr inbounds [100 x i32], [10...\n %33 = load i32, i32* %32, align 4\n store i32 %33, i32* %2, align 4\n br label %34\n"]
  1070. 19 --> 34
  1071. 34["Block 34:\n %35 = load i32, i32* %2, align 4\n ret i32 %35\n"]:::critical
  1072. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1073. ```
  1074. ```mermaid: processMatrix
  1075. graph TD
  1076. 2["Block 2:\n %3 = alloca [100 x i32]*, align 8\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n store [100 x i32]* %0, [100 x i32]** %3, align 8\n store i32 %1, i32* %4, align 4\n store i32 0, i32* %5, align 4\n store i32 0, i32* %6, align 4\n br label %8\n"]:::critical
  1077. 2 --> 8
  1078. 8["Block 8:\n %9 = load i32, i32* %6, align 4\n %10 = load i32, i32* %4, align 4\n %11 = icmp slt i32 %9, %10\n br i1 %11, label %12, label %80\n"]:::critical
  1079. 8 -->|true| 12
  1080. 8 -->|false| 80
  1081. 12["Block 12:\n store i32 0, i32* %7, align 4\n br label %13\n"]
  1082. 12 --> 13
  1083. 13["Block 13:\n %14 = load i32, i32* %7, align 4\n %15 = load i32, i32* %4, align 4\n %16 = icmp slt i32 %14, %15\n br i1 %16, label %17, label %76\n"]
  1084. 13 -->|true| 17
  1085. 13 -->|false| 76
  1086. 17["Block 17:\n %18 = load i32, i32* %6, align 4\n %19 = load i32, i32* %7, align 4\n %20 = icmp eq i32 %18, %19\n br i1 %20, label %21, label %55\n"]
  1087. 17 -->|true| 21
  1088. 17 -->|false| 55
  1089. 21["Block 21:\n %22 = load [100 x i32]*, [100 x i32]** %3, al...\n %23 = load i32, i32* %6, align 4\n %24 = sext i32 %23 to i64\n %25 = getelementptr inbounds [100 x i32], [10...\n %26 = load i32, i32* %7, align 4\n %27 = sext i32 %26 to i64\n %28 = getelementptr inbounds [100 x i32], [10...\n %29 = load i32, i32* %28, align 4\n %30 = srem i32 %29, 2\n %31 = icmp eq i32 %30, 0\n br i1 %31, label %32, label %43\n"]
  1090. 21 -->|true| 32
  1091. 21 -->|false| 43
  1092. 32["Block 32:\n %33 = load [100 x i32]*, [100 x i32]** %3, al...\n %34 = load i32, i32* %6, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n %37 = load i32, i32* %7, align 4\n %38 = sext i32 %37 to i64\n %39 = getelementptr inbounds [100 x i32], [10...\n %40 = load i32, i32* %39, align 4\n %41 = load i32, i32* %5, align 4\n %42 = add nsw i32 %41, %40\n store i32 %42, i32* %5, align 4\n br label %54\n"]
  1093. 32 --> 54
  1094. 43["Block 43:\n %44 = load [100 x i32]*, [100 x i32]** %3, al...\n %45 = load i32, i32* %6, align 4\n %46 = sext i32 %45 to i64\n %47 = getelementptr inbounds [100 x i32], [10...\n %48 = load i32, i32* %7, align 4\n %49 = sext i32 %48 to i64\n %50 = getelementptr inbounds [100 x i32], [10...\n %51 = load i32, i32* %50, align 4\n %52 = load i32, i32* %5, align 4\n %53 = sub nsw i32 %52, %51\n store i32 %53, i32* %5, align 4\n br label %54\n"]
  1095. 43 --> 54
  1096. 54["Block 54:\n br label %72\n"]
  1097. 54 --> 72
  1098. 55["Block 55:\n %56 = load i32, i32* %6, align 4\n %57 = load i32, i32* %7, align 4\n %58 = icmp slt i32 %56, %57\n br i1 %58, label %59, label %71\n"]
  1099. 55 -->|true| 59
  1100. 55 -->|false| 71
  1101. 59["Block 59:\n %60 = load [100 x i32]*, [100 x i32]** %3, al...\n %61 = load i32, i32* %6, align 4\n %62 = sext i32 %61 to i64\n %63 = getelementptr inbounds [100 x i32], [10...\n %64 = load i32, i32* %7, align 4\n %65 = sext i32 %64 to i64\n %66 = getelementptr inbounds [100 x i32], [10...\n %67 = load i32, i32* %66, align 4\n %68 = call i32 @countSetBits(i32 %67)\n %69 = load i32, i32* %5, align 4\n %70 = add nsw i32 %69, %68\n store i32 %70, i32* %5, align 4\n br label %71\n"]
  1102. 59 --> 71
  1103. 71["Block 71:\n br label %72\n"]
  1104. 71 --> 72
  1105. 72["Block 72:\n br label %73\n"]
  1106. 72 --> 73
  1107. 73["Block 73:\n %74 = load i32, i32* %7, align 4\n %75 = add nsw i32 %74, 1\n store i32 %75, i32* %7, align 4\n br label %13\n"]
  1108. 73 --> 13
  1109. 76["Block 76:\n br label %77\n"]
  1110. 76 --> 77
  1111. 77["Block 77:\n %78 = load i32, i32* %6, align 4\n %79 = add nsw i32 %78, 1\n store i32 %79, i32* %6, align 4\n br label %8\n"]
  1112. 77 --> 8
  1113. 80["Block 80:\n %81 = load i32, i32* %5, align 4\n ret i32 %81\n"]:::critical
  1114. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1115. ```
  1116. ```mermaid: projectB_main
  1117. graph TD
  1118. 0["Block 0:\n %1 = alloca [14 x i8], align 1\n %2 = alloca [8 x i32], align 16\n %3 = alloca i32, align 4\n %4 = alloca i32, align 4\n %5 = alloca [100 x [100 x i32]], align 16\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = call i32 @testPoints(i32 5)\n call void @llvm.memset.p0i8.i64(i8* align 16 ...\n %10 = bitcast [14 x i8]* %1 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %11 = getelementptr inbounds [14 x i8], [14 x...\n call void @reverseString(i8* %11)\n %12 = bitcast [8 x i32]* %2 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n store i32 8, i32* %3, align 4\n %13 = getelementptr inbounds [8 x i32], [8 x ...\n %14 = load i32, i32* %3, align 4\n %15 = call i32 @longestIncreasingSubsequence(...\n store i32 %15, i32* %4, align 4\n %16 = bitcast [100 x [100 x i32]]* %5 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %17 = getelementptr inbounds [100 x [100 x i3...\n %18 = call i32 @processMatrix([100 x i32]* %1...\n store i32 %18, i32* %6, align 4\n store i32 0, i32* %7, align 4\n br label %19\n"]:::critical
  1119. 0 --> 19
  1120. 19["Block 19:\n %20 = load i32, i32* %7, align 4\n %21 = call i32 @memoizedFib(i32 %20)\n %22 = load i32, i32* %7, align 4\n %23 = add nsw i32 %22, 1\n store i32 %23, i32* %7, align 4\n br label %24\n"]:::critical
  1121. 19 --> 24
  1122. 24["Block 24:\n %25 = load i32, i32* %7, align 4\n %26 = icmp slt i32 %25, 10\n br i1 %26, label %19, label %27\n"]:::critical
  1123. 24 -->|true| 19
  1124. 24 -->|false| 27
  1125. 27["Block 27:\n %28 = load i32, i32* %4, align 4\n %29 = icmp sgt i32 %28, 5\n br i1 %29, label %30, label %40\n"]:::critical
  1126. 27 -->|true| 30
  1127. 27 -->|false| 40
  1128. 30["Block 30:\n %31 = load i32, i32* %6, align 4\n %32 = icmp sgt i32 %31, 0\n br i1 %32, label %33, label %36\n"]
  1129. 30 -->|true| 33
  1130. 30 -->|false| 36
  1131. 33["Block 33:\n %34 = load i32, i32* %4, align 4\n %35 = call i32 @memoizedFib(i32 %34)\n store i32 %35, i32* %8, align 4\n br label %39\n"]
  1132. 33 --> 39
  1133. 36["Block 36:\n %37 = load i32, i32* %6, align 4\n %38 = call i32 @countSetBits(i32 %37)\n store i32 %38, i32* %8, align 4\n br label %39\n"]
  1134. 36 --> 39
  1135. 39["Block 39:\n br label %47\n"]
  1136. 39 --> 47
  1137. 40["Block 40:\n %41 = getelementptr inbounds [14 x i8], [14 x...\n %42 = call i64 @strlen(i8* %41) #7\n %43 = load i32, i32* %6, align 4\n %44 = sext i32 %43 to i64\n %45 = add i64 %42, %44\n %46 = trunc i64 %45 to i32\n store i32 %46, i32* %8, align 4\n br label %47\n"]
  1138. 40 --> 47
  1139. 47["Block 47:\n %48 = load i32, i32* %8, align 4\n ret i32 %48\n"]:::critical
  1140. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1141. ```
  1142. [INFO][runOnModule] Creating slices for target functions
  1143. [INFO][runOnModule] targetFuncName: countSetBits
  1144. [INFO][createFunctionSlices] Created 2 slices for target function countSetBits
  1145. [DEBUG][createFunctionSlices] Slice 0 of function countSetBits contains blocks: %1
  1146. [DEBUG][createFunctionSlices] Slice 1 of function countSetBits contains blocks: %4, %7, %14
  1147. [INFO][runOnModule] targetFuncName: longestIncreasingSubsequence
  1148. [INFO][createFunctionSlices] Created 4 slices for target function longestIncreasingSubsequence
  1149. [DEBUG][createFunctionSlices] Slice 0 of function longestIncreasingSubsequence contains blocks: %2
  1150. [DEBUG][createFunctionSlices] Slice 1 of function longestIncreasingSubsequence contains blocks: %11, %15, %22, %19
  1151. [DEBUG][createFunctionSlices] Slice 2 of function longestIncreasingSubsequence contains blocks: %23, %27, %72, %28, %32, %68, %44, %64, %69, %55, %65
  1152. [DEBUG][createFunctionSlices] Slice 3 of function longestIncreasingSubsequence contains blocks: %73, %77, %93, %84, %89, %90
  1153. [INFO][runOnModule] targetFuncName: memoizedFib
  1154. [INFO][createFunctionSlices] Created 1 slices for target function memoizedFib
  1155. [DEBUG][createFunctionSlices] Slice 0 of function memoizedFib contains blocks: %1, %9, %14, %34, %17, %19
  1156. [INFO][runOnModule] targetFuncName: processMatrix
  1157. [INFO][createFunctionSlices] Created 2 slices for target function processMatrix
  1158. [DEBUG][createFunctionSlices] Slice 0 of function processMatrix contains blocks: %2
  1159. [DEBUG][createFunctionSlices] Slice 1 of function processMatrix contains blocks: %8, %12, %80, %13, %17, %76, %21, %55, %77, %32, %43, %59, %71, %54, %72, %73
  1160. [INFO][runOnModule] targetFuncName: projectB_main
  1161. [INFO][createFunctionSlices] Created 3 slices for target function projectB_main
  1162. [DEBUG][createFunctionSlices] Slice 0 of function projectB_main contains blocks: %0
  1163. [DEBUG][createFunctionSlices] Slice 1 of function projectB_main contains blocks: %19, %24
  1164. [DEBUG][createFunctionSlices] Slice 2 of function projectB_main contains blocks: %27, %30, %40, %33, %36, %47, %39
  1165. [INFO][runOnModule] targetFuncName: reverseString
  1166. [INFO][createFunctionSlices] Created 2 slices for target function reverseString
  1167. [DEBUG][createFunctionSlices] Slice 0 of function reverseString contains blocks: %1
  1168. [DEBUG][createFunctionSlices] Slice 1 of function reverseString contains blocks: %9, %14, %43, %40
  1169. [INFO][runOnModule] targetFuncName: testPoints
  1170. [INFO][createFunctionSlices] Created 2 slices for target function testPoints
  1171. [DEBUG][createFunctionSlices] Slice 0 of function testPoints contains blocks: %1
  1172. [DEBUG][createFunctionSlices] Slice 1 of function testPoints contains blocks: %6, %9, %19, %14, %15, %21, %16
  1173. [INFO][runOnModule] Creating fusion points for bunker functions
  1174. [INFO][runOnModule] bunkerFuncName: calculateCircleArea
  1175. [INFO][countFusionPoints] Counted 2 fusion points for bunker function calculateCircleArea
  1176. [INFO][runOnModule] bunkerFuncName: calculateDistance
  1177. [INFO][countFusionPoints] Counted 2 fusion points for bunker function calculateDistance
  1178. [INFO][runOnModule] bunkerFuncName: createDynamicArray
  1179. [INFO][countFusionPoints] Counted 2 fusion points for bunker function createDynamicArray
  1180. [INFO][runOnModule] bunkerFuncName: createMatrix
  1181. [INFO][countFusionPoints] Counted 2 fusion points for bunker function createMatrix
  1182. [INFO][runOnModule] bunkerFuncName: factorial
  1183. [INFO][countFusionPoints] Counted 2 fusion points for bunker function factorial
  1184. [INFO][runOnModule] bunkerFuncName: findCentroid
  1185. [INFO][countFusionPoints] Counted 2 fusion points for bunker function findCentroid
  1186. [INFO][runOnModule] bunkerFuncName: getErrorMessage
  1187. [INFO][countFusionPoints] Counted 2 fusion points for bunker function getErrorMessage
  1188. [INFO][runOnModule] bunkerFuncName: insertNode
  1189. [INFO][countFusionPoints] Counted 2 fusion points for bunker function insertNode
  1190. [INFO][runOnModule] bunkerFuncName: multiplyMatrices
  1191. [INFO][countFusionPoints] Counted 2 fusion points for bunker function multiplyMatrices
  1192. [INFO][runOnModule] bunkerFuncName: performSimpleCalculations
  1193. [INFO][countFusionPoints] Counted 7 fusion points for bunker function performSimpleCalculations
  1194. [INFO][runOnModule] bunkerFuncName: projectA_main
  1195. [INFO][countFusionPoints] Counted 2 fusion points for bunker function projectA_main
  1196. [INFO][runOnModule] bunkerFuncName: pushBack
  1197. [INFO][countFusionPoints] Counted 2 fusion points for bunker function pushBack
  1198. [INFO][runOnModule] bunkerFuncName: quickSort
  1199. [INFO][countFusionPoints] Counted 2 fusion points for bunker function quickSort
  1200. [INFO][runOnModule] bunkerFuncName: removeDuplicates
  1201. [INFO][countFusionPoints] Counted 2 fusion points for bunker function removeDuplicates
  1202. [INFO][runOnModule] bunkerFuncName: setErrorMessage
  1203. [INFO][countFusionPoints] Counted 3 fusion points for bunker function setErrorMessage
  1204. [INFO][runOnModule] bunkerFuncName: validateMatrix
  1205. [INFO][countFusionPoints] Counted 2 fusion points for bunker function validateMatrix
  1206. [INFO][matchFunctionsForFusion] Starting function matching process
  1207. [INFO][matchFunctionsForFusion] Matched target longestIncreasingSubsequence (4 slices) with bunker projectA_main (7 fusion points)
  1208. [INFO][matchFunctionsForFusion] Matched target projectB_main (3 slices) with bunker setErrorMessage (3 fusion points)
  1209. [INFO][matchFunctionsForFusion] Matched target countSetBits (2 slices) with bunker removeDuplicates (2 fusion points)
  1210. [INFO][matchFunctionsForFusion] Matched target processMatrix (2 slices) with bunker createMatrix (2 fusion points)
  1211. [INFO][matchFunctionsForFusion] Matched target reverseString (2 slices) with bunker factorial (2 fusion points)
  1212. [INFO][matchFunctionsForFusion] Matched target testPoints (2 slices) with bunker matchFunctionsFo (2 fusion points)
  1213. [INFO][matchFunctionsForFusion] Matched target memoizedFib (1 slices) with bunker Ð’����`û� (2 fusion points)
  1214. [INFO][generateFusionMatchGraph] Generating fusion match visualization
  1215. ```mermaid
  1216. graph LR
  1217. %% Fusion Match Graph
  1218. %% Left side: Target Project, Right side: Bunker Project
  1219. subgraph Target["Target Project"]
  1220. direction TB
  1221. countSetBits["countSetBits\nSliceNum: 2"]:::target
  1222. longestIncreasingSubsequence["longestIncreasingSubsequence\nSliceNum: 4"]:::target
  1223. memoizedFib["memoizedFib\nSliceNum: 1"]:::target
  1224. processMatrix["processMatrix\nSliceNum: 2"]:::target
  1225. projectB_main["projectB_main\nSliceNum: 3"]:::target
  1226. reverseString["reverseString\nSliceNum: 2"]:::target
  1227. testPoints["testPoints\nSliceNum: 2"]:::target
  1228. end
  1229. subgraph Bunker["Bunker Project"]
  1230. direction TB
  1231. calculateCircleArea["calculateCircleArea\nCritical Points: 2"]:::bunker
  1232. calculateDistance["calculateDistance\nCritical Points: 2"]:::bunker
  1233. createDynamicArray["createDynamicArray\nCritical Points: 2"]:::bunker
  1234. createMatrix["createMatrix\nCritical Points: 2"]:::bunker
  1235. factorial["factorial\nCritical Points: 2"]:::bunker
  1236. findCentroid["findCentroid\nCritical Points: 2"]:::bunker
  1237. getErrorMessage["getErrorMessage\nCritical Points: 2"]:::bunker
  1238. insertNode["insertNode\nCritical Points: 2"]:::bunker
  1239. multiplyMatrices["multiplyMatrices\nCritical Points: 2"]:::bunker
  1240. performSimpleCalculations["performSimpleCalculations\nCritical Points: 7"]:::bunker
  1241. projectA_main["projectA_main\nCritical Points: 2"]:::bunker
  1242. pushBack["pushBack\nCritical Points: 2"]:::bunker
  1243. quickSort["quickSort\nCritical Points: 2"]:::bunker
  1244. removeDuplicates["removeDuplicates\nCritical Points: 2"]:::bunker
  1245. setErrorMessage["setErrorMessage\nCritical Points: 3"]:::bunker
  1246. validateMatrix["validateMatrix\nCritical Points: 2"]:::bunker
  1247. end
  1248. %% Fusion Matches
  1249. countSetBits ==>|fusion| quickSort
  1250. longestIncreasingSubsequence ==>|fusion| performSimpleCalculations
  1251. memoizedFib ==>|fusion| projectA_main
  1252. processMatrix ==>|fusion| createDynamicArray
  1253. projectB_main ==>|fusion| setErrorMessage
  1254. reverseString ==>|fusion| createMatrix
  1255. testPoints ==>|fusion| removeDuplicates
  1256. %% Styles
  1257. classDef target fill:#f96,stroke:#333,stroke-width:2px
  1258. classDef bunker fill:#9cf,stroke:#333,stroke-width:2px
  1259. style Target fill:#fff,stroke:#f96,stroke-width:2px
  1260. style Bunker fill:#fff,stroke:#9cf,stroke-width:2px
  1261. ```
  1262. [INFO][generateFusionMatchGraph] Generated visualization with 7 target functions and 16 bunker functions
  1263. [INFO][generateFusionMatchGraph] Total fusion matches: 7
  1264. [INFO][performCodeFusion] Starting code fusion
  1265. [INFO][performCodeFusion] Processing function pair: target=countSetBits, bunker=quickSort
  1266. [INFO][performCodeFusion] adding: %7
  1267. [INFO][performCodeFusion] before push Block ID: %7
  1268. [INFO][performCodeFusion] adding: %255
  1269. [INFO][performCodeFusion] adding: %258
  1270. [INFO][performCodeFusion] adding: %265
  1271. [INFO][performCodeFusion] before push Block ID: %255
  1272. [INFO][performCodeFusion] before push Block ID: %258
  1273. [INFO][performCodeFusion] before push Block ID: %265
  1274. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_quickSort
  1275. ```mermaid: fused_quickSort
  1276. graph TD
  1277. entry["Block entry:\n br label %target_cond_0\n"]
  1278. entry --> target_cond_0
  1279. target_cond_0["Block target_cond_0:\n %6 = icmp eq i1 %0, true\n br i1 %6, label %7, label %target_skip_0\n"]
  1280. target_cond_0 -->|true| 7
  1281. target_cond_0 -->|false| target_skip_0
  1282. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  1283. target_skip_0 --> target_phi_0
  1284. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  1285. target_phi_0 --> bunker_cond_0
  1286. 7["Block 7:\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n store i32 %5, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  1287. 7 --> target_phi_0
  1288. bunker_cond_0["Block bunker_cond_0:\n %10 = icmp eq i1 %0, false\n br i1 %10, label %11, label %bunker_skip_0\n"]
  1289. bunker_cond_0 -->|true| 11
  1290. bunker_cond_0 -->|false| bunker_skip_0
  1291. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  1292. bunker_skip_0 --> bunker_phi_0
  1293. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  1294. bunker_phi_0 --> target_cond_1
  1295. 11["Block 11:\n %12 = alloca i32*, align 8\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n %15 = alloca i32*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca i32, align 4\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n %21 = alloca i32, align 4\n store i32* %1, i32** %12, align 8\n store i32 %2, i32* %13, align 4\n store i32 %3, i32* %14, align 4\n store i32* %4, i32** %15, align 8\n %22 = load i32, i32* @recursionDepth, align 4\n %23 = add nsw i32 %22, 1\n store i32 %23, i32* @recursionDepth, align 4\n %24 = icmp sgt i32 %23, 1000\n br i1 %24, label %25, label %29\n"]
  1296. 11 -->|true| 25
  1297. 11 -->|false| 29
  1298. 25["Block 25:\n call void @setErrorMessage(i8* getelementptr ...\n %26 = load i32*, i32** %15, align 8\n store i32 1, i32* %26, align 4\n %27 = load i32, i32* @recursionDepth, align 4\n %28 = add nsw i32 %27, -1\n store i32 %28, i32* @recursionDepth, align 4\n br label %268\n"]
  1299. 25 --> 268
  1300. 29["Block 29:\n %30 = load i32*, i32** %12, align 8\n %31 = icmp ne i32* %30, null\n br i1 %31, label %36, label %32\n"]
  1301. 29 -->|true| 36
  1302. 29 -->|false| 32
  1303. 32["Block 32:\n call void @setErrorMessage(i8* getelementptr ...\n %33 = load i32*, i32** %15, align 8\n store i32 1, i32* %33, align 4\n %34 = load i32, i32* @recursionDepth, align 4\n %35 = add nsw i32 %34, -1\n store i32 %35, i32* @recursionDepth, align 4\n br label %268\n"]
  1304. 32 --> 268
  1305. 36["Block 36:\n %37 = load i32, i32* %13, align 4\n %38 = icmp slt i32 %37, 0\n br i1 %38, label %48, label %39\n"]
  1306. 36 -->|true| 48
  1307. 36 -->|false| 39
  1308. 39["Block 39:\n %40 = load i32, i32* %14, align 4\n %41 = icmp slt i32 %40, 0\n br i1 %41, label %48, label %42\n"]
  1309. 39 -->|true| 48
  1310. 39 -->|false| 42
  1311. 42["Block 42:\n %43 = load i32, i32* %13, align 4\n %44 = icmp sge i32 %43, 1000\n br i1 %44, label %48, label %45\n"]
  1312. 42 -->|true| 48
  1313. 42 -->|false| 45
  1314. 45["Block 45:\n %46 = load i32, i32* %14, align 4\n %47 = icmp sge i32 %46, 1000\n br i1 %47, label %48, label %52\n"]
  1315. 45 -->|true| 48
  1316. 45 -->|false| 52
  1317. 48["Block 48:\n call void @setErrorMessage(i8* getelementptr ...\n %49 = load i32*, i32** %15, align 8\n store i32 1, i32* %49, align 4\n %50 = load i32, i32* @recursionDepth, align 4\n %51 = add nsw i32 %50, -1\n store i32 %51, i32* @recursionDepth, align 4\n br label %268\n"]
  1318. 48 --> 268
  1319. 52["Block 52:\n %53 = load i32, i32* %13, align 4\n %54 = load i32, i32* %14, align 4\n %55 = icmp slt i32 %53, %54\n br i1 %55, label %56, label %251\n"]
  1320. 52 -->|true| 56
  1321. 52 -->|false| 251
  1322. 56["Block 56:\n %57 = load i32, i32* %13, align 4\n %58 = load i32, i32* %14, align 4\n %59 = load i32, i32* %13, align 4\n %60 = sub nsw i32 %58, %59\n %61 = sdiv i32 %60, 2\n %62 = add nsw i32 %57, %61\n store i32 %62, i32* %16, align 4\n %63 = load i32*, i32** %12, align 8\n %64 = load i32, i32* %13, align 4\n %65 = sext i32 %64 to i64\n %66 = getelementptr inbounds i32, i32* %63, i...\n %67 = load i32, i32* %66, align 4\n %68 = load i32*, i32** %12, align 8\n %69 = load i32, i32* %16, align 4\n %70 = sext i32 %69 to i64\n %71 = getelementptr inbounds i32, i32* %68, i...\n %72 = load i32, i32* %71, align 4\n %73 = icmp sle i32 %67, %72\n br i1 %73, label %74, label %106\n"]
  1323. 56 -->|true| 74
  1324. 56 -->|false| 106
  1325. 74["Block 74:\n %75 = load i32*, i32** %12, align 8\n %76 = load i32, i32* %16, align 4\n %77 = sext i32 %76 to i64\n %78 = getelementptr inbounds i32, i32* %75, i...\n %79 = load i32, i32* %78, align 4\n %80 = load i32*, i32** %12, align 8\n %81 = load i32, i32* %14, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds i32, i32* %80, i...\n %84 = load i32, i32* %83, align 4\n %85 = icmp sle i32 %79, %84\n br i1 %85, label %86, label %88\n"]
  1326. 74 -->|true| 86
  1327. 74 -->|false| 88
  1328. 86["Block 86:\n %87 = load i32, i32* %16, align 4\n store i32 %87, i32* %17, align 4\n br label %105\n"]
  1329. 86 --> 105
  1330. 88["Block 88:\n %89 = load i32*, i32** %12, align 8\n %90 = load i32, i32* %13, align 4\n %91 = sext i32 %90 to i64\n %92 = getelementptr inbounds i32, i32* %89, i...\n %93 = load i32, i32* %92, align 4\n %94 = load i32*, i32** %12, align 8\n %95 = load i32, i32* %14, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds i32, i32* %94, i...\n %98 = load i32, i32* %97, align 4\n %99 = icmp sle i32 %93, %98\n br i1 %99, label %100, label %102\n"]
  1331. 88 -->|true| 100
  1332. 88 -->|false| 102
  1333. 100["Block 100:\n %101 = load i32, i32* %14, align 4\n store i32 %101, i32* %17, align 4\n br label %104\n"]
  1334. 100 --> 104
  1335. 102["Block 102:\n %103 = load i32, i32* %13, align 4\n store i32 %103, i32* %17, align 4\n br label %104\n"]
  1336. 102 --> 104
  1337. 104["Block 104:\n br label %105\n"]
  1338. 104 --> 105
  1339. 105["Block 105:\n br label %138\n"]
  1340. 105 --> 138
  1341. 106["Block 106:\n %107 = load i32*, i32** %12, align 8\n %108 = load i32, i32* %13, align 4\n %109 = sext i32 %108 to i64\n %110 = getelementptr inbounds i32, i32* %107,...\n %111 = load i32, i32* %110, align 4\n %112 = load i32*, i32** %12, align 8\n %113 = load i32, i32* %14, align 4\n %114 = sext i32 %113 to i64\n %115 = getelementptr inbounds i32, i32* %112,...\n %116 = load i32, i32* %115, align 4\n %117 = icmp sle i32 %111, %116\n br i1 %117, label %118, label %120\n"]
  1342. 106 -->|true| 118
  1343. 106 -->|false| 120
  1344. 118["Block 118:\n %119 = load i32, i32* %13, align 4\n store i32 %119, i32* %17, align 4\n br label %137\n"]
  1345. 118 --> 137
  1346. 120["Block 120:\n %121 = load i32*, i32** %12, align 8\n %122 = load i32, i32* %16, align 4\n %123 = sext i32 %122 to i64\n %124 = getelementptr inbounds i32, i32* %121,...\n %125 = load i32, i32* %124, align 4\n %126 = load i32*, i32** %12, align 8\n %127 = load i32, i32* %14, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32, i32* %126,...\n %130 = load i32, i32* %129, align 4\n %131 = icmp sle i32 %125, %130\n br i1 %131, label %132, label %134\n"]
  1347. 120 -->|true| 132
  1348. 120 -->|false| 134
  1349. 132["Block 132:\n %133 = load i32, i32* %14, align 4\n store i32 %133, i32* %17, align 4\n br label %136\n"]
  1350. 132 --> 136
  1351. 134["Block 134:\n %135 = load i32, i32* %16, align 4\n store i32 %135, i32* %17, align 4\n br label %136\n"]
  1352. 134 --> 136
  1353. 136["Block 136:\n br label %137\n"]
  1354. 136 --> 137
  1355. 137["Block 137:\n br label %138\n"]
  1356. 137 --> 138
  1357. 138["Block 138:\n %139 = load i32*, i32** %12, align 8\n %140 = load i32, i32* %14, align 4\n %141 = sext i32 %140 to i64\n %142 = getelementptr inbounds i32, i32* %139,...\n %143 = load i32, i32* %142, align 4\n store i32 %143, i32* %18, align 4\n %144 = load i32*, i32** %12, align 8\n %145 = load i32, i32* %17, align 4\n %146 = sext i32 %145 to i64\n %147 = getelementptr inbounds i32, i32* %144,...\n %148 = load i32, i32* %147, align 4\n %149 = load i32*, i32** %12, align 8\n %150 = load i32, i32* %14, align 4\n %151 = sext i32 %150 to i64\n %152 = getelementptr inbounds i32, i32* %149,...\n store i32 %148, i32* %152, align 4\n %153 = load i32, i32* %18, align 4\n %154 = load i32*, i32** %12, align 8\n %155 = load i32, i32* %17, align 4\n %156 = sext i32 %155 to i64\n %157 = getelementptr inbounds i32, i32* %154,...\n store i32 %153, i32* %157, align 4\n %158 = load i32*, i32** %12, align 8\n %159 = load i32, i32* %14, align 4\n %160 = sext i32 %159 to i64\n %161 = getelementptr inbounds i32, i32* %158,...\n %162 = load i32, i32* %161, align 4\n store i32 %162, i32* %19, align 4\n %163 = load i32, i32* %13, align 4\n %164 = sub nsw i32 %163, 1\n store i32 %164, i32* %20, align 4\n %165 = load i32, i32* %13, align 4\n store i32 %165, i32* %21, align 4\n br label %166\n"]
  1358. 138 --> 166
  1359. 166["Block 166:\n %167 = load i32, i32* %21, align 4\n %168 = load i32, i32* %14, align 4\n %169 = icmp slt i32 %167, %168\n br i1 %169, label %170, label %206\n"]
  1360. 166 -->|true| 170
  1361. 166 -->|false| 206
  1362. 170["Block 170:\n %171 = load i32*, i32** %12, align 8\n %172 = load i32, i32* %21, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32, i32* %171,...\n %175 = load i32, i32* %174, align 4\n %176 = load i32, i32* %19, align 4\n %177 = icmp sle i32 %175, %176\n br i1 %177, label %178, label %202\n"]
  1363. 170 -->|true| 178
  1364. 170 -->|false| 202
  1365. 178["Block 178:\n %179 = load i32, i32* %20, align 4\n %180 = add nsw i32 %179, 1\n store i32 %180, i32* %20, align 4\n %181 = load i32*, i32** %12, align 8\n %182 = load i32, i32* %20, align 4\n %183 = sext i32 %182 to i64\n %184 = getelementptr inbounds i32, i32* %181,...\n %185 = load i32, i32* %184, align 4\n store i32 %185, i32* %18, align 4\n %186 = load i32*, i32** %12, align 8\n %187 = load i32, i32* %21, align 4\n %188 = sext i32 %187 to i64\n %189 = getelementptr inbounds i32, i32* %186,...\n %190 = load i32, i32* %189, align 4\n %191 = load i32*, i32** %12, align 8\n %192 = load i32, i32* %20, align 4\n %193 = sext i32 %192 to i64\n %194 = getelementptr inbounds i32, i32* %191,...\n store i32 %190, i32* %194, align 4\n %195 = load i32, i32* %18, align 4\n %196 = load i32*, i32** %12, align 8\n %197 = load i32, i32* %21, align 4\n %198 = sext i32 %197 to i64\n %199 = getelementptr inbounds i32, i32* %196,...\n store i32 %195, i32* %199, align 4\n %200 = load i32, i32* @globalCounter, align 4\n %201 = add nsw i32 %200, 1\n store i32 %201, i32* @globalCounter, align 4\n br label %202\n"]
  1366. 178 --> 202
  1367. 202["Block 202:\n br label %203\n"]
  1368. 202 --> 203
  1369. 203["Block 203:\n %204 = load i32, i32* %21, align 4\n %205 = add nsw i32 %204, 1\n store i32 %205, i32* %21, align 4\n br label %166\n"]
  1370. 203 --> 166
  1371. 206["Block 206:\n %207 = load i32*, i32** %12, align 8\n %208 = load i32, i32* %20, align 4\n %209 = add nsw i32 %208, 1\n %210 = sext i32 %209 to i64\n %211 = getelementptr inbounds i32, i32* %207,...\n %212 = load i32, i32* %211, align 4\n store i32 %212, i32* %18, align 4\n %213 = load i32*, i32** %12, align 8\n %214 = load i32, i32* %14, align 4\n %215 = sext i32 %214 to i64\n %216 = getelementptr inbounds i32, i32* %213,...\n %217 = load i32, i32* %216, align 4\n %218 = load i32*, i32** %12, align 8\n %219 = load i32, i32* %20, align 4\n %220 = add nsw i32 %219, 1\n %221 = sext i32 %220 to i64\n %222 = getelementptr inbounds i32, i32* %218,...\n store i32 %217, i32* %222, align 4\n %223 = load i32, i32* %18, align 4\n %224 = load i32*, i32** %12, align 8\n %225 = load i32, i32* %14, align 4\n %226 = sext i32 %225 to i64\n %227 = getelementptr inbounds i32, i32* %224,...\n store i32 %223, i32* %227, align 4\n %228 = load i32*, i32** %12, align 8\n %229 = load i32, i32* %13, align 4\n %230 = load i32, i32* %20, align 4\n %231 = load i32*, i32** %15, align 8\n call void @quickSort(i32* %228, i32 %229, i32...\n %232 = load i32*, i32** %15, align 8\n %233 = load i32, i32* %232, align 4\n %234 = icmp ne i32 %233, 0\n br i1 %234, label %235, label %238\n"]
  1372. 206 -->|true| 235
  1373. 206 -->|false| 238
  1374. 235["Block 235:\n %236 = load i32, i32* @recursionDepth, align 4\n %237 = add nsw i32 %236, -1\n store i32 %237, i32* @recursionDepth, align 4\n br label %268\n"]
  1375. 235 --> 268
  1376. 238["Block 238:\n %239 = load i32*, i32** %12, align 8\n %240 = load i32, i32* %20, align 4\n %241 = add nsw i32 %240, 2\n %242 = load i32, i32* %14, align 4\n %243 = load i32*, i32** %15, align 8\n call void @quickSort(i32* %239, i32 %241, i32...\n %244 = load i32*, i32** %15, align 8\n %245 = load i32, i32* %244, align 4\n %246 = icmp ne i32 %245, 0\n br i1 %246, label %247, label %250\n"]
  1377. 238 -->|true| 247
  1378. 238 -->|false| 250
  1379. 247["Block 247:\n %248 = load i32, i32* @recursionDepth, align 4\n %249 = add nsw i32 %248, -1\n store i32 %249, i32* @recursionDepth, align 4\n br label %268\n"]
  1380. 247 --> 268
  1381. 250["Block 250:\n br label %251\n"]
  1382. 250 --> 251
  1383. 251["Block 251:\n %252 = load i32, i32* @recursionDepth, align 4\n %253 = add nsw i32 %252, -1\n store i32 %253, i32* @recursionDepth, align 4\n br label %bunker_phi_0\n"]
  1384. 251 --> bunker_phi_0
  1385. target_cond_1["Block target_cond_1:\n %254 = icmp eq i1 %0, true\n br i1 %254, label %255, label %target_skip_1\n"]
  1386. target_cond_1 -->|true| 255
  1387. target_cond_1 -->|false| target_skip_1
  1388. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  1389. target_skip_1 --> target_phi_1
  1390. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  1391. target_phi_1 --> bunker_cond_1
  1392. 255["Block 255:\n %256 = load i32, i32* %8, align 4\n %257 = icmp ne i32 %256, 0\n br i1 %257, label %258, label %265\n"]
  1393. 255 -->|true| 258
  1394. 255 -->|false| 265
  1395. 258["Block 258:\n %259 = load i32, i32* %8, align 4\n %260 = and i32 %259, 1\n %261 = load i32, i32* %9, align 4\n %262 = add nsw i32 %261, %260\n store i32 %262, i32* %9, align 4\n %263 = load i32, i32* %8, align 4\n %264 = ashr i32 %263, 1\n store i32 %264, i32* %8, align 4\n br label %255\n"]
  1396. 258 --> 255
  1397. 265["Block 265:\n %266 = load i32, i32* %9, align 4\n ret i32 %266\n br label %target_phi_1\n"]
  1398. 265 --> target_phi_1
  1399. bunker_cond_1["Block bunker_cond_1:\n %267 = icmp eq i1 %0, false\n br i1 %267, label %268, label %bunker_skip_1\n"]
  1400. bunker_cond_1 -->|true| 268
  1401. bunker_cond_1 -->|false| bunker_skip_1
  1402. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  1403. bunker_skip_1 --> bunker_phi_1
  1404. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  1405. 268["Block 268:\n ret void\n br label %bunker_phi_1\n"]
  1406. 268 --> bunker_phi_1
  1407. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1408. ```
  1409. [DEBUG][performCodeFusion] Processing return values for fused function: fused_quickSort
  1410. [DEBUG][performCodeFusion] Fused function return type: i32
  1411. [DEBUG][performCodeFusion] Non-struct return type detected: i32
  1412. [DEBUG][performCodeFusion] Processing bunker block: %52
  1413. [DEBUG][performCodeFusion] Block %52 - Processing instruction: %53 = load i32, i32* %13, align 4 (opcode: load)
  1414. [DEBUG][performCodeFusion] Block %52 - Processing instruction: %54 = load i32, i32* %14, align 4 (opcode: load)
  1415. [DEBUG][performCodeFusion] Block %52 - Processing instruction: %55 = icmp slt i32 %53, %54 (opcode: icmp)
  1416. [DEBUG][performCodeFusion] Block %52 - Processing instruction: br i1 %55, label %56, label %251 (opcode: br)
  1417. [DEBUG][performCodeFusion] Processing bunker block: %29
  1418. [DEBUG][performCodeFusion] Block %29 - Processing instruction: %30 = load i32*, i32** %12, align 8 (opcode: load)
  1419. [DEBUG][performCodeFusion] Block %29 - Processing instruction: %31 = icmp ne i32* %30, null (opcode: icmp)
  1420. [DEBUG][performCodeFusion] Block %29 - Processing instruction: br i1 %31, label %36, label %32 (opcode: br)
  1421. [DEBUG][performCodeFusion] Processing bunker block: %39
  1422. [DEBUG][performCodeFusion] Block %39 - Processing instruction: %40 = load i32, i32* %14, align 4 (opcode: load)
  1423. [DEBUG][performCodeFusion] Block %39 - Processing instruction: %41 = icmp slt i32 %40, 0 (opcode: icmp)
  1424. [DEBUG][performCodeFusion] Block %39 - Processing instruction: br i1 %41, label %48, label %42 (opcode: br)
  1425. [DEBUG][performCodeFusion] Processing bunker block: %36
  1426. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %37 = load i32, i32* %13, align 4 (opcode: load)
  1427. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %38 = icmp slt i32 %37, 0 (opcode: icmp)
  1428. [DEBUG][performCodeFusion] Block %36 - Processing instruction: br i1 %38, label %48, label %39 (opcode: br)
  1429. [DEBUG][performCodeFusion] Processing bunker block: %32
  1430. [DEBUG][performCodeFusion] Block %32 - Processing instruction: call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0)) (opcode: call)
  1431. [DEBUG][performCodeFusion] Block %32 - Processing instruction: %33 = load i32*, i32** %15, align 8 (opcode: load)
  1432. [DEBUG][performCodeFusion] Block %32 - Processing instruction: store i32 1, i32* %33, align 4 (opcode: store)
  1433. [DEBUG][performCodeFusion] Block %32 - Processing instruction: %34 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1434. [DEBUG][performCodeFusion] Block %32 - Processing instruction: %35 = add nsw i32 %34, -1 (opcode: add)
  1435. [DEBUG][performCodeFusion] Block %32 - Processing instruction: store i32 %35, i32* @recursionDepth, align 4 (opcode: store)
  1436. [DEBUG][performCodeFusion] Block %32 - Processing instruction: br label %268 (opcode: br)
  1437. [DEBUG][performCodeFusion] Processing bunker block: %25
  1438. [DEBUG][performCodeFusion] Block %25 - Processing instruction: call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0)) (opcode: call)
  1439. [DEBUG][performCodeFusion] Block %25 - Processing instruction: %26 = load i32*, i32** %15, align 8 (opcode: load)
  1440. [DEBUG][performCodeFusion] Block %25 - Processing instruction: store i32 1, i32* %26, align 4 (opcode: store)
  1441. [DEBUG][performCodeFusion] Block %25 - Processing instruction: %27 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1442. [DEBUG][performCodeFusion] Block %25 - Processing instruction: %28 = add nsw i32 %27, -1 (opcode: add)
  1443. [DEBUG][performCodeFusion] Block %25 - Processing instruction: store i32 %28, i32* @recursionDepth, align 4 (opcode: store)
  1444. [DEBUG][performCodeFusion] Block %25 - Processing instruction: br label %268 (opcode: br)
  1445. [DEBUG][performCodeFusion] Processing bunker block: %11
  1446. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %12 = alloca i32*, align 8 (opcode: alloca)
  1447. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %13 = alloca i32, align 4 (opcode: alloca)
  1448. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %14 = alloca i32, align 4 (opcode: alloca)
  1449. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %15 = alloca i32*, align 8 (opcode: alloca)
  1450. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %16 = alloca i32, align 4 (opcode: alloca)
  1451. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %17 = alloca i32, align 4 (opcode: alloca)
  1452. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %18 = alloca i32, align 4 (opcode: alloca)
  1453. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %19 = alloca i32, align 4 (opcode: alloca)
  1454. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %20 = alloca i32, align 4 (opcode: alloca)
  1455. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %21 = alloca i32, align 4 (opcode: alloca)
  1456. [DEBUG][performCodeFusion] Block %11 - Processing instruction: store i32* %1, i32** %12, align 8 (opcode: store)
  1457. [DEBUG][performCodeFusion] Block %11 - Processing instruction: store i32 %2, i32* %13, align 4 (opcode: store)
  1458. [DEBUG][performCodeFusion] Block %11 - Processing instruction: store i32 %3, i32* %14, align 4 (opcode: store)
  1459. [DEBUG][performCodeFusion] Block %11 - Processing instruction: store i32* %4, i32** %15, align 8 (opcode: store)
  1460. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %22 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1461. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %23 = add nsw i32 %22, 1 (opcode: add)
  1462. [DEBUG][performCodeFusion] Block %11 - Processing instruction: store i32 %23, i32* @recursionDepth, align 4 (opcode: store)
  1463. [DEBUG][performCodeFusion] Block %11 - Processing instruction: %24 = icmp sgt i32 %23, 1000 (opcode: icmp)
  1464. [DEBUG][performCodeFusion] Block %11 - Processing instruction: br i1 %24, label %25, label %29 (opcode: br)
  1465. [DEBUG][performCodeFusion] Processing bunker block: %42
  1466. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %43 = load i32, i32* %13, align 4 (opcode: load)
  1467. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %44 = icmp sge i32 %43, 1000 (opcode: icmp)
  1468. [DEBUG][performCodeFusion] Block %42 - Processing instruction: br i1 %44, label %48, label %45 (opcode: br)
  1469. [DEBUG][performCodeFusion] Processing bunker block: %45
  1470. [DEBUG][performCodeFusion] Block %45 - Processing instruction: %46 = load i32, i32* %14, align 4 (opcode: load)
  1471. [DEBUG][performCodeFusion] Block %45 - Processing instruction: %47 = icmp sge i32 %46, 1000 (opcode: icmp)
  1472. [DEBUG][performCodeFusion] Block %45 - Processing instruction: br i1 %47, label %48, label %52 (opcode: br)
  1473. [DEBUG][performCodeFusion] Processing bunker block: %48
  1474. [DEBUG][performCodeFusion] Block %48 - Processing instruction: call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0)) (opcode: call)
  1475. [DEBUG][performCodeFusion] Block %48 - Processing instruction: %49 = load i32*, i32** %15, align 8 (opcode: load)
  1476. [DEBUG][performCodeFusion] Block %48 - Processing instruction: store i32 1, i32* %49, align 4 (opcode: store)
  1477. [DEBUG][performCodeFusion] Block %48 - Processing instruction: %50 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1478. [DEBUG][performCodeFusion] Block %48 - Processing instruction: %51 = add nsw i32 %50, -1 (opcode: add)
  1479. [DEBUG][performCodeFusion] Block %48 - Processing instruction: store i32 %51, i32* @recursionDepth, align 4 (opcode: store)
  1480. [DEBUG][performCodeFusion] Block %48 - Processing instruction: br label %268 (opcode: br)
  1481. [DEBUG][performCodeFusion] Processing bunker block: %118
  1482. [DEBUG][performCodeFusion] Block %118 - Processing instruction: %119 = load i32, i32* %13, align 4 (opcode: load)
  1483. [DEBUG][performCodeFusion] Block %118 - Processing instruction: store i32 %119, i32* %17, align 4 (opcode: store)
  1484. [DEBUG][performCodeFusion] Block %118 - Processing instruction: br label %137 (opcode: br)
  1485. [DEBUG][performCodeFusion] Processing bunker block: %120
  1486. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %121 = load i32*, i32** %12, align 8 (opcode: load)
  1487. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %122 = load i32, i32* %16, align 4 (opcode: load)
  1488. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %123 = sext i32 %122 to i64 (opcode: sext)
  1489. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %124 = getelementptr inbounds i32, i32* %121, i64 %123 (opcode: getelementptr)
  1490. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %125 = load i32, i32* %124, align 4 (opcode: load)
  1491. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %126 = load i32*, i32** %12, align 8 (opcode: load)
  1492. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %127 = load i32, i32* %14, align 4 (opcode: load)
  1493. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %128 = sext i32 %127 to i64 (opcode: sext)
  1494. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %129 = getelementptr inbounds i32, i32* %126, i64 %128 (opcode: getelementptr)
  1495. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %130 = load i32, i32* %129, align 4 (opcode: load)
  1496. [DEBUG][performCodeFusion] Block %120 - Processing instruction: %131 = icmp sle i32 %125, %130 (opcode: icmp)
  1497. [DEBUG][performCodeFusion] Block %120 - Processing instruction: br i1 %131, label %132, label %134 (opcode: br)
  1498. [DEBUG][performCodeFusion] Processing bunker block: %132
  1499. [DEBUG][performCodeFusion] Block %132 - Processing instruction: %133 = load i32, i32* %14, align 4 (opcode: load)
  1500. [DEBUG][performCodeFusion] Block %132 - Processing instruction: store i32 %133, i32* %17, align 4 (opcode: store)
  1501. [DEBUG][performCodeFusion] Block %132 - Processing instruction: br label %136 (opcode: br)
  1502. [DEBUG][performCodeFusion] Processing bunker block: %134
  1503. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %135 = load i32, i32* %16, align 4 (opcode: load)
  1504. [DEBUG][performCodeFusion] Block %134 - Processing instruction: store i32 %135, i32* %17, align 4 (opcode: store)
  1505. [DEBUG][performCodeFusion] Block %134 - Processing instruction: br label %136 (opcode: br)
  1506. [DEBUG][performCodeFusion] Processing bunker block: %136
  1507. [DEBUG][performCodeFusion] Block %136 - Processing instruction: br label %137 (opcode: br)
  1508. [DEBUG][performCodeFusion] Processing bunker block: %137
  1509. [DEBUG][performCodeFusion] Block %137 - Processing instruction: br label %138 (opcode: br)
  1510. [DEBUG][performCodeFusion] Processing bunker block: %138
  1511. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %139 = load i32*, i32** %12, align 8 (opcode: load)
  1512. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %140 = load i32, i32* %14, align 4 (opcode: load)
  1513. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %141 = sext i32 %140 to i64 (opcode: sext)
  1514. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %142 = getelementptr inbounds i32, i32* %139, i64 %141 (opcode: getelementptr)
  1515. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %143 = load i32, i32* %142, align 4 (opcode: load)
  1516. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %143, i32* %18, align 4 (opcode: store)
  1517. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %144 = load i32*, i32** %12, align 8 (opcode: load)
  1518. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %145 = load i32, i32* %17, align 4 (opcode: load)
  1519. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %146 = sext i32 %145 to i64 (opcode: sext)
  1520. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %147 = getelementptr inbounds i32, i32* %144, i64 %146 (opcode: getelementptr)
  1521. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %148 = load i32, i32* %147, align 4 (opcode: load)
  1522. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %149 = load i32*, i32** %12, align 8 (opcode: load)
  1523. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %150 = load i32, i32* %14, align 4 (opcode: load)
  1524. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %151 = sext i32 %150 to i64 (opcode: sext)
  1525. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %152 = getelementptr inbounds i32, i32* %149, i64 %151 (opcode: getelementptr)
  1526. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %148, i32* %152, align 4 (opcode: store)
  1527. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %153 = load i32, i32* %18, align 4 (opcode: load)
  1528. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %154 = load i32*, i32** %12, align 8 (opcode: load)
  1529. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %155 = load i32, i32* %17, align 4 (opcode: load)
  1530. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %156 = sext i32 %155 to i64 (opcode: sext)
  1531. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %157 = getelementptr inbounds i32, i32* %154, i64 %156 (opcode: getelementptr)
  1532. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %153, i32* %157, align 4 (opcode: store)
  1533. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %158 = load i32*, i32** %12, align 8 (opcode: load)
  1534. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %159 = load i32, i32* %14, align 4 (opcode: load)
  1535. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %160 = sext i32 %159 to i64 (opcode: sext)
  1536. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %161 = getelementptr inbounds i32, i32* %158, i64 %160 (opcode: getelementptr)
  1537. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %162 = load i32, i32* %161, align 4 (opcode: load)
  1538. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %162, i32* %19, align 4 (opcode: store)
  1539. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %163 = load i32, i32* %13, align 4 (opcode: load)
  1540. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %164 = sub nsw i32 %163, 1 (opcode: sub)
  1541. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %164, i32* %20, align 4 (opcode: store)
  1542. [DEBUG][performCodeFusion] Block %138 - Processing instruction: %165 = load i32, i32* %13, align 4 (opcode: load)
  1543. [DEBUG][performCodeFusion] Block %138 - Processing instruction: store i32 %165, i32* %21, align 4 (opcode: store)
  1544. [DEBUG][performCodeFusion] Block %138 - Processing instruction: br label %166 (opcode: br)
  1545. [DEBUG][performCodeFusion] Processing bunker block: %86
  1546. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %87 = load i32, i32* %16, align 4 (opcode: load)
  1547. [DEBUG][performCodeFusion] Block %86 - Processing instruction: store i32 %87, i32* %17, align 4 (opcode: store)
  1548. [DEBUG][performCodeFusion] Block %86 - Processing instruction: br label %105 (opcode: br)
  1549. [DEBUG][performCodeFusion] Processing bunker block: %88
  1550. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %89 = load i32*, i32** %12, align 8 (opcode: load)
  1551. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %90 = load i32, i32* %13, align 4 (opcode: load)
  1552. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %91 = sext i32 %90 to i64 (opcode: sext)
  1553. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %92 = getelementptr inbounds i32, i32* %89, i64 %91 (opcode: getelementptr)
  1554. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %93 = load i32, i32* %92, align 4 (opcode: load)
  1555. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %94 = load i32*, i32** %12, align 8 (opcode: load)
  1556. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %95 = load i32, i32* %14, align 4 (opcode: load)
  1557. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %96 = sext i32 %95 to i64 (opcode: sext)
  1558. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %97 = getelementptr inbounds i32, i32* %94, i64 %96 (opcode: getelementptr)
  1559. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %98 = load i32, i32* %97, align 4 (opcode: load)
  1560. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %99 = icmp sle i32 %93, %98 (opcode: icmp)
  1561. [DEBUG][performCodeFusion] Block %88 - Processing instruction: br i1 %99, label %100, label %102 (opcode: br)
  1562. [DEBUG][performCodeFusion] Processing bunker block: %100
  1563. [DEBUG][performCodeFusion] Block %100 - Processing instruction: %101 = load i32, i32* %14, align 4 (opcode: load)
  1564. [DEBUG][performCodeFusion] Block %100 - Processing instruction: store i32 %101, i32* %17, align 4 (opcode: store)
  1565. [DEBUG][performCodeFusion] Block %100 - Processing instruction: br label %104 (opcode: br)
  1566. [DEBUG][performCodeFusion] Processing bunker block: %102
  1567. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %103 = load i32, i32* %13, align 4 (opcode: load)
  1568. [DEBUG][performCodeFusion] Block %102 - Processing instruction: store i32 %103, i32* %17, align 4 (opcode: store)
  1569. [DEBUG][performCodeFusion] Block %102 - Processing instruction: br label %104 (opcode: br)
  1570. [DEBUG][performCodeFusion] Processing bunker block: %104
  1571. [DEBUG][performCodeFusion] Block %104 - Processing instruction: br label %105 (opcode: br)
  1572. [DEBUG][performCodeFusion] Processing bunker block: %105
  1573. [DEBUG][performCodeFusion] Block %105 - Processing instruction: br label %138 (opcode: br)
  1574. [DEBUG][performCodeFusion] Processing bunker block: %106
  1575. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %107 = load i32*, i32** %12, align 8 (opcode: load)
  1576. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %108 = load i32, i32* %13, align 4 (opcode: load)
  1577. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %109 = sext i32 %108 to i64 (opcode: sext)
  1578. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %110 = getelementptr inbounds i32, i32* %107, i64 %109 (opcode: getelementptr)
  1579. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %111 = load i32, i32* %110, align 4 (opcode: load)
  1580. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %112 = load i32*, i32** %12, align 8 (opcode: load)
  1581. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %113 = load i32, i32* %14, align 4 (opcode: load)
  1582. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %114 = sext i32 %113 to i64 (opcode: sext)
  1583. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %115 = getelementptr inbounds i32, i32* %112, i64 %114 (opcode: getelementptr)
  1584. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %116 = load i32, i32* %115, align 4 (opcode: load)
  1585. [DEBUG][performCodeFusion] Block %106 - Processing instruction: %117 = icmp sle i32 %111, %116 (opcode: icmp)
  1586. [DEBUG][performCodeFusion] Block %106 - Processing instruction: br i1 %117, label %118, label %120 (opcode: br)
  1587. [DEBUG][performCodeFusion] Processing bunker block: %56
  1588. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %57 = load i32, i32* %13, align 4 (opcode: load)
  1589. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %58 = load i32, i32* %14, align 4 (opcode: load)
  1590. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %59 = load i32, i32* %13, align 4 (opcode: load)
  1591. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %60 = sub nsw i32 %58, %59 (opcode: sub)
  1592. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %61 = sdiv i32 %60, 2 (opcode: sdiv)
  1593. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %62 = add nsw i32 %57, %61 (opcode: add)
  1594. [DEBUG][performCodeFusion] Block %56 - Processing instruction: store i32 %62, i32* %16, align 4 (opcode: store)
  1595. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %63 = load i32*, i32** %12, align 8 (opcode: load)
  1596. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %64 = load i32, i32* %13, align 4 (opcode: load)
  1597. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %65 = sext i32 %64 to i64 (opcode: sext)
  1598. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %66 = getelementptr inbounds i32, i32* %63, i64 %65 (opcode: getelementptr)
  1599. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %67 = load i32, i32* %66, align 4 (opcode: load)
  1600. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %68 = load i32*, i32** %12, align 8 (opcode: load)
  1601. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %69 = load i32, i32* %16, align 4 (opcode: load)
  1602. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %70 = sext i32 %69 to i64 (opcode: sext)
  1603. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %71 = getelementptr inbounds i32, i32* %68, i64 %70 (opcode: getelementptr)
  1604. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %72 = load i32, i32* %71, align 4 (opcode: load)
  1605. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %73 = icmp sle i32 %67, %72 (opcode: icmp)
  1606. [DEBUG][performCodeFusion] Block %56 - Processing instruction: br i1 %73, label %74, label %106 (opcode: br)
  1607. [DEBUG][performCodeFusion] Processing bunker block: %74
  1608. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %75 = load i32*, i32** %12, align 8 (opcode: load)
  1609. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %76 = load i32, i32* %16, align 4 (opcode: load)
  1610. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %77 = sext i32 %76 to i64 (opcode: sext)
  1611. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %78 = getelementptr inbounds i32, i32* %75, i64 %77 (opcode: getelementptr)
  1612. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %79 = load i32, i32* %78, align 4 (opcode: load)
  1613. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %80 = load i32*, i32** %12, align 8 (opcode: load)
  1614. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %81 = load i32, i32* %14, align 4 (opcode: load)
  1615. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %82 = sext i32 %81 to i64 (opcode: sext)
  1616. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %83 = getelementptr inbounds i32, i32* %80, i64 %82 (opcode: getelementptr)
  1617. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %84 = load i32, i32* %83, align 4 (opcode: load)
  1618. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %85 = icmp sle i32 %79, %84 (opcode: icmp)
  1619. [DEBUG][performCodeFusion] Block %74 - Processing instruction: br i1 %85, label %86, label %88 (opcode: br)
  1620. [DEBUG][performCodeFusion] Processing bunker block: %170
  1621. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %171 = load i32*, i32** %12, align 8 (opcode: load)
  1622. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %172 = load i32, i32* %21, align 4 (opcode: load)
  1623. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %173 = sext i32 %172 to i64 (opcode: sext)
  1624. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %174 = getelementptr inbounds i32, i32* %171, i64 %173 (opcode: getelementptr)
  1625. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %175 = load i32, i32* %174, align 4 (opcode: load)
  1626. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %176 = load i32, i32* %19, align 4 (opcode: load)
  1627. [DEBUG][performCodeFusion] Block %170 - Processing instruction: %177 = icmp sle i32 %175, %176 (opcode: icmp)
  1628. [DEBUG][performCodeFusion] Block %170 - Processing instruction: br i1 %177, label %178, label %202 (opcode: br)
  1629. [DEBUG][performCodeFusion] Processing bunker block: %178
  1630. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %179 = load i32, i32* %20, align 4 (opcode: load)
  1631. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %180 = add nsw i32 %179, 1 (opcode: add)
  1632. [DEBUG][performCodeFusion] Block %178 - Processing instruction: store i32 %180, i32* %20, align 4 (opcode: store)
  1633. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %181 = load i32*, i32** %12, align 8 (opcode: load)
  1634. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %182 = load i32, i32* %20, align 4 (opcode: load)
  1635. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %183 = sext i32 %182 to i64 (opcode: sext)
  1636. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %184 = getelementptr inbounds i32, i32* %181, i64 %183 (opcode: getelementptr)
  1637. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %185 = load i32, i32* %184, align 4 (opcode: load)
  1638. [DEBUG][performCodeFusion] Block %178 - Processing instruction: store i32 %185, i32* %18, align 4 (opcode: store)
  1639. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %186 = load i32*, i32** %12, align 8 (opcode: load)
  1640. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %187 = load i32, i32* %21, align 4 (opcode: load)
  1641. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %188 = sext i32 %187 to i64 (opcode: sext)
  1642. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %189 = getelementptr inbounds i32, i32* %186, i64 %188 (opcode: getelementptr)
  1643. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %190 = load i32, i32* %189, align 4 (opcode: load)
  1644. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %191 = load i32*, i32** %12, align 8 (opcode: load)
  1645. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %192 = load i32, i32* %20, align 4 (opcode: load)
  1646. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %193 = sext i32 %192 to i64 (opcode: sext)
  1647. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %194 = getelementptr inbounds i32, i32* %191, i64 %193 (opcode: getelementptr)
  1648. [DEBUG][performCodeFusion] Block %178 - Processing instruction: store i32 %190, i32* %194, align 4 (opcode: store)
  1649. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %195 = load i32, i32* %18, align 4 (opcode: load)
  1650. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %196 = load i32*, i32** %12, align 8 (opcode: load)
  1651. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %197 = load i32, i32* %21, align 4 (opcode: load)
  1652. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %198 = sext i32 %197 to i64 (opcode: sext)
  1653. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %199 = getelementptr inbounds i32, i32* %196, i64 %198 (opcode: getelementptr)
  1654. [DEBUG][performCodeFusion] Block %178 - Processing instruction: store i32 %195, i32* %199, align 4 (opcode: store)
  1655. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %200 = load i32, i32* @globalCounter, align 4 (opcode: load)
  1656. [DEBUG][performCodeFusion] Block %178 - Processing instruction: %201 = add nsw i32 %200, 1 (opcode: add)
  1657. [DEBUG][performCodeFusion] Block %178 - Processing instruction: store i32 %201, i32* @globalCounter, align 4 (opcode: store)
  1658. [DEBUG][performCodeFusion] Block %178 - Processing instruction: br label %202 (opcode: br)
  1659. [DEBUG][performCodeFusion] Processing bunker block: %202
  1660. [DEBUG][performCodeFusion] Block %202 - Processing instruction: br label %203 (opcode: br)
  1661. [DEBUG][performCodeFusion] Processing bunker block: %203
  1662. [DEBUG][performCodeFusion] Block %203 - Processing instruction: %204 = load i32, i32* %21, align 4 (opcode: load)
  1663. [DEBUG][performCodeFusion] Block %203 - Processing instruction: %205 = add nsw i32 %204, 1 (opcode: add)
  1664. [DEBUG][performCodeFusion] Block %203 - Processing instruction: store i32 %205, i32* %21, align 4 (opcode: store)
  1665. [DEBUG][performCodeFusion] Block %203 - Processing instruction: br label %166 (opcode: br)
  1666. [DEBUG][performCodeFusion] Processing bunker block: %206
  1667. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %207 = load i32*, i32** %12, align 8 (opcode: load)
  1668. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %208 = load i32, i32* %20, align 4 (opcode: load)
  1669. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %209 = add nsw i32 %208, 1 (opcode: add)
  1670. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %210 = sext i32 %209 to i64 (opcode: sext)
  1671. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %211 = getelementptr inbounds i32, i32* %207, i64 %210 (opcode: getelementptr)
  1672. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %212 = load i32, i32* %211, align 4 (opcode: load)
  1673. [DEBUG][performCodeFusion] Block %206 - Processing instruction: store i32 %212, i32* %18, align 4 (opcode: store)
  1674. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %213 = load i32*, i32** %12, align 8 (opcode: load)
  1675. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %214 = load i32, i32* %14, align 4 (opcode: load)
  1676. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %215 = sext i32 %214 to i64 (opcode: sext)
  1677. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %216 = getelementptr inbounds i32, i32* %213, i64 %215 (opcode: getelementptr)
  1678. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %217 = load i32, i32* %216, align 4 (opcode: load)
  1679. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %218 = load i32*, i32** %12, align 8 (opcode: load)
  1680. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %219 = load i32, i32* %20, align 4 (opcode: load)
  1681. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %220 = add nsw i32 %219, 1 (opcode: add)
  1682. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %221 = sext i32 %220 to i64 (opcode: sext)
  1683. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %222 = getelementptr inbounds i32, i32* %218, i64 %221 (opcode: getelementptr)
  1684. [DEBUG][performCodeFusion] Block %206 - Processing instruction: store i32 %217, i32* %222, align 4 (opcode: store)
  1685. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %223 = load i32, i32* %18, align 4 (opcode: load)
  1686. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %224 = load i32*, i32** %12, align 8 (opcode: load)
  1687. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %225 = load i32, i32* %14, align 4 (opcode: load)
  1688. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %226 = sext i32 %225 to i64 (opcode: sext)
  1689. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %227 = getelementptr inbounds i32, i32* %224, i64 %226 (opcode: getelementptr)
  1690. [DEBUG][performCodeFusion] Block %206 - Processing instruction: store i32 %223, i32* %227, align 4 (opcode: store)
  1691. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %228 = load i32*, i32** %12, align 8 (opcode: load)
  1692. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %229 = load i32, i32* %13, align 4 (opcode: load)
  1693. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %230 = load i32, i32* %20, align 4 (opcode: load)
  1694. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %231 = load i32*, i32** %15, align 8 (opcode: load)
  1695. [DEBUG][performCodeFusion] Block %206 - Processing instruction: call void @quickSort(i32* %228, i32 %229, i32 %230, i32* %231) (opcode: call)
  1696. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %232 = load i32*, i32** %15, align 8 (opcode: load)
  1697. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %233 = load i32, i32* %232, align 4 (opcode: load)
  1698. [DEBUG][performCodeFusion] Block %206 - Processing instruction: %234 = icmp ne i32 %233, 0 (opcode: icmp)
  1699. [DEBUG][performCodeFusion] Block %206 - Processing instruction: br i1 %234, label %235, label %238 (opcode: br)
  1700. [DEBUG][performCodeFusion] Processing bunker block: %235
  1701. [DEBUG][performCodeFusion] Block %235 - Processing instruction: %236 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1702. [DEBUG][performCodeFusion] Block %235 - Processing instruction: %237 = add nsw i32 %236, -1 (opcode: add)
  1703. [DEBUG][performCodeFusion] Block %235 - Processing instruction: store i32 %237, i32* @recursionDepth, align 4 (opcode: store)
  1704. [DEBUG][performCodeFusion] Block %235 - Processing instruction: br label %268 (opcode: br)
  1705. [DEBUG][performCodeFusion] Processing bunker block: %238
  1706. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %239 = load i32*, i32** %12, align 8 (opcode: load)
  1707. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %240 = load i32, i32* %20, align 4 (opcode: load)
  1708. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %241 = add nsw i32 %240, 2 (opcode: add)
  1709. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %242 = load i32, i32* %14, align 4 (opcode: load)
  1710. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %243 = load i32*, i32** %15, align 8 (opcode: load)
  1711. [DEBUG][performCodeFusion] Block %238 - Processing instruction: call void @quickSort(i32* %239, i32 %241, i32 %242, i32* %243) (opcode: call)
  1712. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %244 = load i32*, i32** %15, align 8 (opcode: load)
  1713. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %245 = load i32, i32* %244, align 4 (opcode: load)
  1714. [DEBUG][performCodeFusion] Block %238 - Processing instruction: %246 = icmp ne i32 %245, 0 (opcode: icmp)
  1715. [DEBUG][performCodeFusion] Block %238 - Processing instruction: br i1 %246, label %247, label %250 (opcode: br)
  1716. [DEBUG][performCodeFusion] Processing bunker block: %247
  1717. [DEBUG][performCodeFusion] Block %247 - Processing instruction: %248 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1718. [DEBUG][performCodeFusion] Block %247 - Processing instruction: %249 = add nsw i32 %248, -1 (opcode: add)
  1719. [DEBUG][performCodeFusion] Block %247 - Processing instruction: store i32 %249, i32* @recursionDepth, align 4 (opcode: store)
  1720. [DEBUG][performCodeFusion] Block %247 - Processing instruction: br label %268 (opcode: br)
  1721. [DEBUG][performCodeFusion] Processing bunker block: %250
  1722. [DEBUG][performCodeFusion] Block %250 - Processing instruction: br label %251 (opcode: br)
  1723. [DEBUG][performCodeFusion] Processing bunker block: %251
  1724. [DEBUG][performCodeFusion] Block %251 - Processing instruction: %252 = load i32, i32* @recursionDepth, align 4 (opcode: load)
  1725. [DEBUG][performCodeFusion] Block %251 - Processing instruction: %253 = add nsw i32 %252, -1 (opcode: add)
  1726. [DEBUG][performCodeFusion] Block %251 - Processing instruction: store i32 %253, i32* @recursionDepth, align 4 (opcode: store)
  1727. [DEBUG][performCodeFusion] Block %251 - Processing instruction: br label %bunker_phi_0 (opcode: br)
  1728. [DEBUG][performCodeFusion] Processing bunker block: %268
  1729. [DEBUG][performCodeFusion] Block %268 - Processing instruction: ret void (opcode: ret)
  1730. [DEBUG][performCodeFusion] Setting default bunker return value
  1731. [DEBUG][performCodeFusion] Updated bunker return in block %268 with value type i32
  1732. [DEBUG][performCodeFusion] Block %268 - Processing instruction: br label %bunker_phi_1 (opcode: br)
  1733. [DEBUG][performCodeFusion] Removing extra instruction after return in block %268: br
  1734. [DEBUG][performCodeFusion] Processing bunker block: %166
  1735. [DEBUG][performCodeFusion] Block %166 - Processing instruction: %167 = load i32, i32* %21, align 4 (opcode: load)
  1736. [DEBUG][performCodeFusion] Block %166 - Processing instruction: %168 = load i32, i32* %14, align 4 (opcode: load)
  1737. [DEBUG][performCodeFusion] Block %166 - Processing instruction: %169 = icmp slt i32 %167, %168 (opcode: icmp)
  1738. [DEBUG][performCodeFusion] Block %166 - Processing instruction: br i1 %169, label %170, label %206 (opcode: br)
  1739. [DEBUG][performCodeFusion] Processing target block: %7
  1740. [DEBUG][performCodeFusion] Block %7 - Processing instruction: %8 = alloca i32, align 4 (opcode: alloca)
  1741. [DEBUG][performCodeFusion] Block %7 - Processing instruction: %9 = alloca i32, align 4 (opcode: alloca)
  1742. [DEBUG][performCodeFusion] Block %7 - Processing instruction: store i32 %5, i32* %8, align 4 (opcode: store)
  1743. [DEBUG][performCodeFusion] Block %7 - Processing instruction: store i32 0, i32* %9, align 4 (opcode: store)
  1744. [DEBUG][performCodeFusion] Block %7 - Processing instruction: br label %target_phi_0 (opcode: br)
  1745. [DEBUG][performCodeFusion] Processing target block: %255
  1746. [DEBUG][performCodeFusion] Block %255 - Processing instruction: %256 = load i32, i32* %8, align 4 (opcode: load)
  1747. [DEBUG][performCodeFusion] Block %255 - Processing instruction: %257 = icmp ne i32 %256, 0 (opcode: icmp)
  1748. [DEBUG][performCodeFusion] Block %255 - Processing instruction: br i1 %257, label %258, label %265 (opcode: br)
  1749. [DEBUG][performCodeFusion] Processing target block: %258
  1750. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %259 = load i32, i32* %8, align 4 (opcode: load)
  1751. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %260 = and i32 %259, 1 (opcode: and)
  1752. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %261 = load i32, i32* %9, align 4 (opcode: load)
  1753. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %262 = add nsw i32 %261, %260 (opcode: add)
  1754. [DEBUG][performCodeFusion] Block %258 - Processing instruction: store i32 %262, i32* %9, align 4 (opcode: store)
  1755. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %263 = load i32, i32* %8, align 4 (opcode: load)
  1756. [DEBUG][performCodeFusion] Block %258 - Processing instruction: %264 = ashr i32 %263, 1 (opcode: ashr)
  1757. [DEBUG][performCodeFusion] Block %258 - Processing instruction: store i32 %264, i32* %8, align 4 (opcode: store)
  1758. [DEBUG][performCodeFusion] Block %258 - Processing instruction: br label %255 (opcode: br)
  1759. [DEBUG][performCodeFusion] Processing target block: %265
  1760. [DEBUG][performCodeFusion] Block %265 - Processing instruction: %266 = load i32, i32* %9, align 4 (opcode: load)
  1761. [DEBUG][performCodeFusion] Block %265 - Processing instruction: ret i32 %266 (opcode: ret)
  1762. [DEBUG][performCodeFusion] Updated target return in block %265 with value type i32
  1763. [DEBUG][performCodeFusion] Block %265 - Processing instruction: br label %target_phi_1 (opcode: br)
  1764. [DEBUG][performCodeFusion] Removing extra instruction after return in block %265: br
  1765. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_quickSort
  1766. ```mermaid: fused_quickSort
  1767. graph TD
  1768. entry["Block entry:\n br label %target_cond_0\n"]
  1769. entry --> target_cond_0
  1770. target_cond_0["Block target_cond_0:\n %6 = icmp eq i1 %0, true\n br i1 %6, label %7, label %target_skip_0\n"]
  1771. target_cond_0 -->|true| 7
  1772. target_cond_0 -->|false| target_skip_0
  1773. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  1774. target_skip_0 --> target_phi_0
  1775. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  1776. target_phi_0 --> bunker_cond_0
  1777. 7["Block 7:\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n store i32 %5, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  1778. 7 --> target_phi_0
  1779. bunker_cond_0["Block bunker_cond_0:\n %10 = icmp eq i1 %0, false\n br i1 %10, label %11, label %bunker_skip_0\n"]
  1780. bunker_cond_0 -->|true| 11
  1781. bunker_cond_0 -->|false| bunker_skip_0
  1782. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  1783. bunker_skip_0 --> bunker_phi_0
  1784. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  1785. bunker_phi_0 --> target_cond_1
  1786. 11["Block 11:\n %12 = alloca i32*, align 8\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n %15 = alloca i32*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca i32, align 4\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n %21 = alloca i32, align 4\n store i32* %1, i32** %12, align 8\n store i32 %2, i32* %13, align 4\n store i32 %3, i32* %14, align 4\n store i32* %4, i32** %15, align 8\n %22 = load i32, i32* @recursionDepth, align 4\n %23 = add nsw i32 %22, 1\n store i32 %23, i32* @recursionDepth, align 4\n %24 = icmp sgt i32 %23, 1000\n br i1 %24, label %25, label %29\n"]
  1787. 11 -->|true| 25
  1788. 11 -->|false| 29
  1789. 25["Block 25:\n call void @setErrorMessage(i8* getelementptr ...\n %26 = load i32*, i32** %15, align 8\n store i32 1, i32* %26, align 4\n %27 = load i32, i32* @recursionDepth, align 4\n %28 = add nsw i32 %27, -1\n store i32 %28, i32* @recursionDepth, align 4\n br label %268\n"]
  1790. 25 --> 268
  1791. 29["Block 29:\n %30 = load i32*, i32** %12, align 8\n %31 = icmp ne i32* %30, null\n br i1 %31, label %36, label %32\n"]
  1792. 29 -->|true| 36
  1793. 29 -->|false| 32
  1794. 32["Block 32:\n call void @setErrorMessage(i8* getelementptr ...\n %33 = load i32*, i32** %15, align 8\n store i32 1, i32* %33, align 4\n %34 = load i32, i32* @recursionDepth, align 4\n %35 = add nsw i32 %34, -1\n store i32 %35, i32* @recursionDepth, align 4\n br label %268\n"]
  1795. 32 --> 268
  1796. 36["Block 36:\n %37 = load i32, i32* %13, align 4\n %38 = icmp slt i32 %37, 0\n br i1 %38, label %48, label %39\n"]
  1797. 36 -->|true| 48
  1798. 36 -->|false| 39
  1799. 39["Block 39:\n %40 = load i32, i32* %14, align 4\n %41 = icmp slt i32 %40, 0\n br i1 %41, label %48, label %42\n"]
  1800. 39 -->|true| 48
  1801. 39 -->|false| 42
  1802. 42["Block 42:\n %43 = load i32, i32* %13, align 4\n %44 = icmp sge i32 %43, 1000\n br i1 %44, label %48, label %45\n"]
  1803. 42 -->|true| 48
  1804. 42 -->|false| 45
  1805. 45["Block 45:\n %46 = load i32, i32* %14, align 4\n %47 = icmp sge i32 %46, 1000\n br i1 %47, label %48, label %52\n"]
  1806. 45 -->|true| 48
  1807. 45 -->|false| 52
  1808. 48["Block 48:\n call void @setErrorMessage(i8* getelementptr ...\n %49 = load i32*, i32** %15, align 8\n store i32 1, i32* %49, align 4\n %50 = load i32, i32* @recursionDepth, align 4\n %51 = add nsw i32 %50, -1\n store i32 %51, i32* @recursionDepth, align 4\n br label %268\n"]
  1809. 48 --> 268
  1810. 52["Block 52:\n %53 = load i32, i32* %13, align 4\n %54 = load i32, i32* %14, align 4\n %55 = icmp slt i32 %53, %54\n br i1 %55, label %56, label %251\n"]
  1811. 52 -->|true| 56
  1812. 52 -->|false| 251
  1813. 56["Block 56:\n %57 = load i32, i32* %13, align 4\n %58 = load i32, i32* %14, align 4\n %59 = load i32, i32* %13, align 4\n %60 = sub nsw i32 %58, %59\n %61 = sdiv i32 %60, 2\n %62 = add nsw i32 %57, %61\n store i32 %62, i32* %16, align 4\n %63 = load i32*, i32** %12, align 8\n %64 = load i32, i32* %13, align 4\n %65 = sext i32 %64 to i64\n %66 = getelementptr inbounds i32, i32* %63, i...\n %67 = load i32, i32* %66, align 4\n %68 = load i32*, i32** %12, align 8\n %69 = load i32, i32* %16, align 4\n %70 = sext i32 %69 to i64\n %71 = getelementptr inbounds i32, i32* %68, i...\n %72 = load i32, i32* %71, align 4\n %73 = icmp sle i32 %67, %72\n br i1 %73, label %74, label %106\n"]
  1814. 56 -->|true| 74
  1815. 56 -->|false| 106
  1816. 74["Block 74:\n %75 = load i32*, i32** %12, align 8\n %76 = load i32, i32* %16, align 4\n %77 = sext i32 %76 to i64\n %78 = getelementptr inbounds i32, i32* %75, i...\n %79 = load i32, i32* %78, align 4\n %80 = load i32*, i32** %12, align 8\n %81 = load i32, i32* %14, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds i32, i32* %80, i...\n %84 = load i32, i32* %83, align 4\n %85 = icmp sle i32 %79, %84\n br i1 %85, label %86, label %88\n"]
  1817. 74 -->|true| 86
  1818. 74 -->|false| 88
  1819. 86["Block 86:\n %87 = load i32, i32* %16, align 4\n store i32 %87, i32* %17, align 4\n br label %105\n"]
  1820. 86 --> 105
  1821. 88["Block 88:\n %89 = load i32*, i32** %12, align 8\n %90 = load i32, i32* %13, align 4\n %91 = sext i32 %90 to i64\n %92 = getelementptr inbounds i32, i32* %89, i...\n %93 = load i32, i32* %92, align 4\n %94 = load i32*, i32** %12, align 8\n %95 = load i32, i32* %14, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds i32, i32* %94, i...\n %98 = load i32, i32* %97, align 4\n %99 = icmp sle i32 %93, %98\n br i1 %99, label %100, label %102\n"]
  1822. 88 -->|true| 100
  1823. 88 -->|false| 102
  1824. 100["Block 100:\n %101 = load i32, i32* %14, align 4\n store i32 %101, i32* %17, align 4\n br label %104\n"]
  1825. 100 --> 104
  1826. 102["Block 102:\n %103 = load i32, i32* %13, align 4\n store i32 %103, i32* %17, align 4\n br label %104\n"]
  1827. 102 --> 104
  1828. 104["Block 104:\n br label %105\n"]
  1829. 104 --> 105
  1830. 105["Block 105:\n br label %138\n"]
  1831. 105 --> 138
  1832. 106["Block 106:\n %107 = load i32*, i32** %12, align 8\n %108 = load i32, i32* %13, align 4\n %109 = sext i32 %108 to i64\n %110 = getelementptr inbounds i32, i32* %107,...\n %111 = load i32, i32* %110, align 4\n %112 = load i32*, i32** %12, align 8\n %113 = load i32, i32* %14, align 4\n %114 = sext i32 %113 to i64\n %115 = getelementptr inbounds i32, i32* %112,...\n %116 = load i32, i32* %115, align 4\n %117 = icmp sle i32 %111, %116\n br i1 %117, label %118, label %120\n"]
  1833. 106 -->|true| 118
  1834. 106 -->|false| 120
  1835. 118["Block 118:\n %119 = load i32, i32* %13, align 4\n store i32 %119, i32* %17, align 4\n br label %137\n"]
  1836. 118 --> 137
  1837. 120["Block 120:\n %121 = load i32*, i32** %12, align 8\n %122 = load i32, i32* %16, align 4\n %123 = sext i32 %122 to i64\n %124 = getelementptr inbounds i32, i32* %121,...\n %125 = load i32, i32* %124, align 4\n %126 = load i32*, i32** %12, align 8\n %127 = load i32, i32* %14, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32, i32* %126,...\n %130 = load i32, i32* %129, align 4\n %131 = icmp sle i32 %125, %130\n br i1 %131, label %132, label %134\n"]
  1838. 120 -->|true| 132
  1839. 120 -->|false| 134
  1840. 132["Block 132:\n %133 = load i32, i32* %14, align 4\n store i32 %133, i32* %17, align 4\n br label %136\n"]
  1841. 132 --> 136
  1842. 134["Block 134:\n %135 = load i32, i32* %16, align 4\n store i32 %135, i32* %17, align 4\n br label %136\n"]
  1843. 134 --> 136
  1844. 136["Block 136:\n br label %137\n"]
  1845. 136 --> 137
  1846. 137["Block 137:\n br label %138\n"]
  1847. 137 --> 138
  1848. 138["Block 138:\n %139 = load i32*, i32** %12, align 8\n %140 = load i32, i32* %14, align 4\n %141 = sext i32 %140 to i64\n %142 = getelementptr inbounds i32, i32* %139,...\n %143 = load i32, i32* %142, align 4\n store i32 %143, i32* %18, align 4\n %144 = load i32*, i32** %12, align 8\n %145 = load i32, i32* %17, align 4\n %146 = sext i32 %145 to i64\n %147 = getelementptr inbounds i32, i32* %144,...\n %148 = load i32, i32* %147, align 4\n %149 = load i32*, i32** %12, align 8\n %150 = load i32, i32* %14, align 4\n %151 = sext i32 %150 to i64\n %152 = getelementptr inbounds i32, i32* %149,...\n store i32 %148, i32* %152, align 4\n %153 = load i32, i32* %18, align 4\n %154 = load i32*, i32** %12, align 8\n %155 = load i32, i32* %17, align 4\n %156 = sext i32 %155 to i64\n %157 = getelementptr inbounds i32, i32* %154,...\n store i32 %153, i32* %157, align 4\n %158 = load i32*, i32** %12, align 8\n %159 = load i32, i32* %14, align 4\n %160 = sext i32 %159 to i64\n %161 = getelementptr inbounds i32, i32* %158,...\n %162 = load i32, i32* %161, align 4\n store i32 %162, i32* %19, align 4\n %163 = load i32, i32* %13, align 4\n %164 = sub nsw i32 %163, 1\n store i32 %164, i32* %20, align 4\n %165 = load i32, i32* %13, align 4\n store i32 %165, i32* %21, align 4\n br label %166\n"]
  1849. 138 --> 166
  1850. 166["Block 166:\n %167 = load i32, i32* %21, align 4\n %168 = load i32, i32* %14, align 4\n %169 = icmp slt i32 %167, %168\n br i1 %169, label %170, label %206\n"]
  1851. 166 -->|true| 170
  1852. 166 -->|false| 206
  1853. 170["Block 170:\n %171 = load i32*, i32** %12, align 8\n %172 = load i32, i32* %21, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32, i32* %171,...\n %175 = load i32, i32* %174, align 4\n %176 = load i32, i32* %19, align 4\n %177 = icmp sle i32 %175, %176\n br i1 %177, label %178, label %202\n"]
  1854. 170 -->|true| 178
  1855. 170 -->|false| 202
  1856. 178["Block 178:\n %179 = load i32, i32* %20, align 4\n %180 = add nsw i32 %179, 1\n store i32 %180, i32* %20, align 4\n %181 = load i32*, i32** %12, align 8\n %182 = load i32, i32* %20, align 4\n %183 = sext i32 %182 to i64\n %184 = getelementptr inbounds i32, i32* %181,...\n %185 = load i32, i32* %184, align 4\n store i32 %185, i32* %18, align 4\n %186 = load i32*, i32** %12, align 8\n %187 = load i32, i32* %21, align 4\n %188 = sext i32 %187 to i64\n %189 = getelementptr inbounds i32, i32* %186,...\n %190 = load i32, i32* %189, align 4\n %191 = load i32*, i32** %12, align 8\n %192 = load i32, i32* %20, align 4\n %193 = sext i32 %192 to i64\n %194 = getelementptr inbounds i32, i32* %191,...\n store i32 %190, i32* %194, align 4\n %195 = load i32, i32* %18, align 4\n %196 = load i32*, i32** %12, align 8\n %197 = load i32, i32* %21, align 4\n %198 = sext i32 %197 to i64\n %199 = getelementptr inbounds i32, i32* %196,...\n store i32 %195, i32* %199, align 4\n %200 = load i32, i32* @globalCounter, align 4\n %201 = add nsw i32 %200, 1\n store i32 %201, i32* @globalCounter, align 4\n br label %202\n"]
  1857. 178 --> 202
  1858. 202["Block 202:\n br label %203\n"]
  1859. 202 --> 203
  1860. 203["Block 203:\n %204 = load i32, i32* %21, align 4\n %205 = add nsw i32 %204, 1\n store i32 %205, i32* %21, align 4\n br label %166\n"]
  1861. 203 --> 166
  1862. 206["Block 206:\n %207 = load i32*, i32** %12, align 8\n %208 = load i32, i32* %20, align 4\n %209 = add nsw i32 %208, 1\n %210 = sext i32 %209 to i64\n %211 = getelementptr inbounds i32, i32* %207,...\n %212 = load i32, i32* %211, align 4\n store i32 %212, i32* %18, align 4\n %213 = load i32*, i32** %12, align 8\n %214 = load i32, i32* %14, align 4\n %215 = sext i32 %214 to i64\n %216 = getelementptr inbounds i32, i32* %213,...\n %217 = load i32, i32* %216, align 4\n %218 = load i32*, i32** %12, align 8\n %219 = load i32, i32* %20, align 4\n %220 = add nsw i32 %219, 1\n %221 = sext i32 %220 to i64\n %222 = getelementptr inbounds i32, i32* %218,...\n store i32 %217, i32* %222, align 4\n %223 = load i32, i32* %18, align 4\n %224 = load i32*, i32** %12, align 8\n %225 = load i32, i32* %14, align 4\n %226 = sext i32 %225 to i64\n %227 = getelementptr inbounds i32, i32* %224,...\n store i32 %223, i32* %227, align 4\n %228 = load i32*, i32** %12, align 8\n %229 = load i32, i32* %13, align 4\n %230 = load i32, i32* %20, align 4\n %231 = load i32*, i32** %15, align 8\n call void @quickSort(i32* %228, i32 %229, i32...\n %232 = load i32*, i32** %15, align 8\n %233 = load i32, i32* %232, align 4\n %234 = icmp ne i32 %233, 0\n br i1 %234, label %235, label %238\n"]
  1863. 206 -->|true| 235
  1864. 206 -->|false| 238
  1865. 235["Block 235:\n %236 = load i32, i32* @recursionDepth, align 4\n %237 = add nsw i32 %236, -1\n store i32 %237, i32* @recursionDepth, align 4\n br label %268\n"]
  1866. 235 --> 268
  1867. 238["Block 238:\n %239 = load i32*, i32** %12, align 8\n %240 = load i32, i32* %20, align 4\n %241 = add nsw i32 %240, 2\n %242 = load i32, i32* %14, align 4\n %243 = load i32*, i32** %15, align 8\n call void @quickSort(i32* %239, i32 %241, i32...\n %244 = load i32*, i32** %15, align 8\n %245 = load i32, i32* %244, align 4\n %246 = icmp ne i32 %245, 0\n br i1 %246, label %247, label %250\n"]
  1868. 238 -->|true| 247
  1869. 238 -->|false| 250
  1870. 247["Block 247:\n %248 = load i32, i32* @recursionDepth, align 4\n %249 = add nsw i32 %248, -1\n store i32 %249, i32* @recursionDepth, align 4\n br label %268\n"]
  1871. 247 --> 268
  1872. 250["Block 250:\n br label %251\n"]
  1873. 250 --> 251
  1874. 251["Block 251:\n %252 = load i32, i32* @recursionDepth, align 4\n %253 = add nsw i32 %252, -1\n store i32 %253, i32* @recursionDepth, align 4\n br label %bunker_phi_0\n"]
  1875. 251 --> bunker_phi_0
  1876. target_cond_1["Block target_cond_1:\n %254 = icmp eq i1 %0, true\n br i1 %254, label %255, label %target_skip_1\n"]
  1877. target_cond_1 -->|true| 255
  1878. target_cond_1 -->|false| target_skip_1
  1879. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  1880. target_skip_1 --> target_phi_1
  1881. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  1882. target_phi_1 --> bunker_cond_1
  1883. 255["Block 255:\n %256 = load i32, i32* %8, align 4\n %257 = icmp ne i32 %256, 0\n br i1 %257, label %258, label %265\n"]
  1884. 255 -->|true| 258
  1885. 255 -->|false| 265
  1886. 258["Block 258:\n %259 = load i32, i32* %8, align 4\n %260 = and i32 %259, 1\n %261 = load i32, i32* %9, align 4\n %262 = add nsw i32 %261, %260\n store i32 %262, i32* %9, align 4\n %263 = load i32, i32* %8, align 4\n %264 = ashr i32 %263, 1\n store i32 %264, i32* %8, align 4\n br label %255\n"]
  1887. 258 --> 255
  1888. 265["Block 265:\n %266 = load i32, i32* %9, align 4\n ret i32 %266\n"]
  1889. bunker_cond_1["Block bunker_cond_1:\n %267 = icmp eq i1 %0, false\n br i1 %267, label %268, label %bunker_skip_1\n"]
  1890. bunker_cond_1 -->|true| 268
  1891. bunker_cond_1 -->|false| bunker_skip_1
  1892. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  1893. bunker_skip_1 --> bunker_phi_1
  1894. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  1895. 268["Block 268:\n ret i32 0\n"]
  1896. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  1897. ```
  1898. [DEBUG][updateCallSite] Original call instruction:
  1899. call void @quickSort(i32* %239, i32 %241, i32 %242, i32* %243)
  1900. [DEBUG][updateCallSite] Adding bunker control parameter
  1901. [DEBUG][updateCallSite] Adding original call parameters:
  1902. [DEBUG][updateCallSite] Argument 0: type=i32*
  1903. [DEBUG][updateCallSite] Argument 1: type=i32
  1904. [DEBUG][updateCallSite] Argument 2: type=i32
  1905. [DEBUG][updateCallSite] Argument 3: type=i32*
  1906. [DEBUG][updateCallSite] Adding default target parameters:
  1907. [DEBUG][updateCallSite] Parameter type: i32
  1908. [DEBUG][updateCallSite] New call instruction:
  1909. %244 = call i32 @fused_quickSort(i1 false, i32* %239, i32 %241, i32 %242, i32* %243, i32 0)
  1910. [DEBUG][updateCallSite] Void return type, no value processing needed
  1911. [INFO][updateCallSite] Successfully updated call site from call void @quickSort(i32* %239, i32 %241, i32 %242, i32* %243) to %244 = call i32 @fused_quickSort(i1 false, i32* %239, i32 %241, i32 %242, i32* %243, i32 0)
  1912. [DEBUG][updateCallSite] Original call instruction:
  1913. call void @quickSort(i32* %228, i32 %229, i32 %230, i32* %231)
  1914. [DEBUG][updateCallSite] Adding bunker control parameter
  1915. [DEBUG][updateCallSite] Adding original call parameters:
  1916. [DEBUG][updateCallSite] Argument 0: type=i32*
  1917. [DEBUG][updateCallSite] Argument 1: type=i32
  1918. [DEBUG][updateCallSite] Argument 2: type=i32
  1919. [DEBUG][updateCallSite] Argument 3: type=i32*
  1920. [DEBUG][updateCallSite] Adding default target parameters:
  1921. [DEBUG][updateCallSite] Parameter type: i32
  1922. [DEBUG][updateCallSite] New call instruction:
  1923. %232 = call i32 @fused_quickSort(i1 false, i32* %228, i32 %229, i32 %230, i32* %231, i32 0)
  1924. [DEBUG][updateCallSite] Void return type, no value processing needed
  1925. [INFO][updateCallSite] Successfully updated call site from call void @quickSort(i32* %228, i32 %229, i32 %230, i32* %231) to %232 = call i32 @fused_quickSort(i1 false, i32* %228, i32 %229, i32 %230, i32* %231, i32 0)
  1926. [DEBUG][updateCallSite] Original call instruction:
  1927. call void @quickSort(i32* %23, i32 0, i32 %27, i32* %3)
  1928. [DEBUG][updateCallSite] Adding bunker control parameter
  1929. [DEBUG][updateCallSite] Adding original call parameters:
  1930. [DEBUG][updateCallSite] Argument 0: type=i32*
  1931. [DEBUG][updateCallSite] Argument 1: type=i32
  1932. [DEBUG][updateCallSite] Argument 2: type=i32
  1933. [DEBUG][updateCallSite] Argument 3: type=i32*
  1934. [DEBUG][updateCallSite] Adding default target parameters:
  1935. [DEBUG][updateCallSite] Parameter type: i32
  1936. [DEBUG][updateCallSite] New call instruction:
  1937. %28 = call i32 @fused_quickSort(i1 false, i32* %23, i32 0, i32 %27, i32* %3, i32 0)
  1938. [DEBUG][updateCallSite] Void return type, no value processing needed
  1939. [INFO][updateCallSite] Successfully updated call site from call void @quickSort(i32* %23, i32 0, i32 %27, i32* %3) to %28 = call i32 @fused_quickSort(i1 false, i32* %23, i32 0, i32 %27, i32* %3, i32 0)
  1940. [DEBUG][updateCallSite] Original call instruction:
  1941. call void @quickSort(i32* %232, i32 %234, i32 %235, i32* %236)
  1942. [DEBUG][updateCallSite] Adding bunker control parameter
  1943. [DEBUG][updateCallSite] Adding original call parameters:
  1944. [DEBUG][updateCallSite] Argument 0: type=i32*
  1945. [DEBUG][updateCallSite] Argument 1: type=i32
  1946. [DEBUG][updateCallSite] Argument 2: type=i32
  1947. [DEBUG][updateCallSite] Argument 3: type=i32*
  1948. [DEBUG][updateCallSite] Adding default target parameters:
  1949. [DEBUG][updateCallSite] Parameter type: i32
  1950. [DEBUG][updateCallSite] New call instruction:
  1951. %237 = call i32 @fused_quickSort(i1 false, i32* %232, i32 %234, i32 %235, i32* %236, i32 0)
  1952. [DEBUG][updateCallSite] Void return type, no value processing needed
  1953. [INFO][updateCallSite] Successfully updated call site from call void @quickSort(i32* %232, i32 %234, i32 %235, i32* %236) to %237 = call i32 @fused_quickSort(i1 false, i32* %232, i32 %234, i32 %235, i32* %236, i32 0)
  1954. [DEBUG][updateCallSite] Original call instruction:
  1955. call void @quickSort(i32* %221, i32 %222, i32 %223, i32* %224)
  1956. [DEBUG][updateCallSite] Adding bunker control parameter
  1957. [DEBUG][updateCallSite] Adding original call parameters:
  1958. [DEBUG][updateCallSite] Argument 0: type=i32*
  1959. [DEBUG][updateCallSite] Argument 1: type=i32
  1960. [DEBUG][updateCallSite] Argument 2: type=i32
  1961. [DEBUG][updateCallSite] Argument 3: type=i32*
  1962. [DEBUG][updateCallSite] Adding default target parameters:
  1963. [DEBUG][updateCallSite] Parameter type: i32
  1964. [DEBUG][updateCallSite] New call instruction:
  1965. %225 = call i32 @fused_quickSort(i1 false, i32* %221, i32 %222, i32 %223, i32* %224, i32 0)
  1966. [DEBUG][updateCallSite] Void return type, no value processing needed
  1967. [INFO][updateCallSite] Successfully updated call site from call void @quickSort(i32* %221, i32 %222, i32 %223, i32* %224) to %225 = call i32 @fused_quickSort(i1 false, i32* %221, i32 %222, i32 %223, i32* %224, i32 0)
  1968. [DEBUG][updateCallSite] Original call instruction:
  1969. %38 = call i32 @countSetBits(i32 %37)
  1970. [DEBUG][updateCallSite] Adding target control parameter
  1971. [DEBUG][updateCallSite] Adding default bunker parameters:
  1972. [DEBUG][updateCallSite] Parameter type: i32*
  1973. [DEBUG][updateCallSite] Parameter type: i32
  1974. [DEBUG][updateCallSite] Parameter type: i32
  1975. [DEBUG][updateCallSite] Parameter type: i32*
  1976. [DEBUG][updateCallSite] Adding original call parameters:
  1977. [DEBUG][updateCallSite] Argument 0: type=i32
  1978. [DEBUG][updateCallSite] New call instruction:
  1979. %38 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %37)
  1980. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  1981. [DEBUG][updateCallSite] Using direct return value
  1982. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  1983. [INFO][updateCallSite] Successfully updated call site from %38 = call i32 @countSetBits(i32 %37) to %38 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %37)
  1984. [DEBUG][updateCallSite] Original call instruction:
  1985. %68 = call i32 @countSetBits(i32 %67)
  1986. [DEBUG][updateCallSite] Adding target control parameter
  1987. [DEBUG][updateCallSite] Adding default bunker parameters:
  1988. [DEBUG][updateCallSite] Parameter type: i32*
  1989. [DEBUG][updateCallSite] Parameter type: i32
  1990. [DEBUG][updateCallSite] Parameter type: i32
  1991. [DEBUG][updateCallSite] Parameter type: i32*
  1992. [DEBUG][updateCallSite] Adding original call parameters:
  1993. [DEBUG][updateCallSite] Argument 0: type=i32
  1994. [DEBUG][updateCallSite] New call instruction:
  1995. %68 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %67)
  1996. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  1997. [DEBUG][updateCallSite] Using direct return value
  1998. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  1999. [INFO][updateCallSite] Successfully updated call site from %68 = call i32 @countSetBits(i32 %67) to %68 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %67)
  2000. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_quickSort
  2001. ```mermaid: fused_quickSort
  2002. graph TD
  2003. entry["Block entry:\n br label %target_cond_0\n"]
  2004. entry --> target_cond_0
  2005. target_cond_0["Block target_cond_0:\n %6 = icmp eq i1 %0, true\n br i1 %6, label %7, label %target_skip_0\n"]
  2006. target_cond_0 -->|true| 7
  2007. target_cond_0 -->|false| target_skip_0
  2008. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  2009. target_skip_0 --> target_phi_0
  2010. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  2011. target_phi_0 --> bunker_cond_0
  2012. 7["Block 7:\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n store i32 %5, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  2013. 7 --> target_phi_0
  2014. bunker_cond_0["Block bunker_cond_0:\n %10 = icmp eq i1 %0, false\n br i1 %10, label %11, label %bunker_skip_0\n"]
  2015. bunker_cond_0 -->|true| 11
  2016. bunker_cond_0 -->|false| bunker_skip_0
  2017. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  2018. bunker_skip_0 --> bunker_phi_0
  2019. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  2020. bunker_phi_0 --> target_cond_1
  2021. 11["Block 11:\n %12 = alloca i32*, align 8\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n %15 = alloca i32*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca i32, align 4\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n %21 = alloca i32, align 4\n store i32* %1, i32** %12, align 8\n store i32 %2, i32* %13, align 4\n store i32 %3, i32* %14, align 4\n store i32* %4, i32** %15, align 8\n %22 = load i32, i32* @recursionDepth, align 4\n %23 = add nsw i32 %22, 1\n store i32 %23, i32* @recursionDepth, align 4\n %24 = icmp sgt i32 %23, 1000\n br i1 %24, label %25, label %29\n"]
  2022. 11 -->|true| 25
  2023. 11 -->|false| 29
  2024. 25["Block 25:\n call void @setErrorMessage(i8* getelementptr ...\n %26 = load i32*, i32** %15, align 8\n store i32 1, i32* %26, align 4\n %27 = load i32, i32* @recursionDepth, align 4\n %28 = add nsw i32 %27, -1\n store i32 %28, i32* @recursionDepth, align 4\n br label %270\n"]
  2025. 25 --> 270
  2026. 29["Block 29:\n %30 = load i32*, i32** %12, align 8\n %31 = icmp ne i32* %30, null\n br i1 %31, label %36, label %32\n"]
  2027. 29 -->|true| 36
  2028. 29 -->|false| 32
  2029. 32["Block 32:\n call void @setErrorMessage(i8* getelementptr ...\n %33 = load i32*, i32** %15, align 8\n store i32 1, i32* %33, align 4\n %34 = load i32, i32* @recursionDepth, align 4\n %35 = add nsw i32 %34, -1\n store i32 %35, i32* @recursionDepth, align 4\n br label %270\n"]
  2030. 32 --> 270
  2031. 36["Block 36:\n %37 = load i32, i32* %13, align 4\n %38 = icmp slt i32 %37, 0\n br i1 %38, label %48, label %39\n"]
  2032. 36 -->|true| 48
  2033. 36 -->|false| 39
  2034. 39["Block 39:\n %40 = load i32, i32* %14, align 4\n %41 = icmp slt i32 %40, 0\n br i1 %41, label %48, label %42\n"]
  2035. 39 -->|true| 48
  2036. 39 -->|false| 42
  2037. 42["Block 42:\n %43 = load i32, i32* %13, align 4\n %44 = icmp sge i32 %43, 1000\n br i1 %44, label %48, label %45\n"]
  2038. 42 -->|true| 48
  2039. 42 -->|false| 45
  2040. 45["Block 45:\n %46 = load i32, i32* %14, align 4\n %47 = icmp sge i32 %46, 1000\n br i1 %47, label %48, label %52\n"]
  2041. 45 -->|true| 48
  2042. 45 -->|false| 52
  2043. 48["Block 48:\n call void @setErrorMessage(i8* getelementptr ...\n %49 = load i32*, i32** %15, align 8\n store i32 1, i32* %49, align 4\n %50 = load i32, i32* @recursionDepth, align 4\n %51 = add nsw i32 %50, -1\n store i32 %51, i32* @recursionDepth, align 4\n br label %270\n"]
  2044. 48 --> 270
  2045. 52["Block 52:\n %53 = load i32, i32* %13, align 4\n %54 = load i32, i32* %14, align 4\n %55 = icmp slt i32 %53, %54\n br i1 %55, label %56, label %253\n"]
  2046. 52 -->|true| 56
  2047. 52 -->|false| 253
  2048. 56["Block 56:\n %57 = load i32, i32* %13, align 4\n %58 = load i32, i32* %14, align 4\n %59 = load i32, i32* %13, align 4\n %60 = sub nsw i32 %58, %59\n %61 = sdiv i32 %60, 2\n %62 = add nsw i32 %57, %61\n store i32 %62, i32* %16, align 4\n %63 = load i32*, i32** %12, align 8\n %64 = load i32, i32* %13, align 4\n %65 = sext i32 %64 to i64\n %66 = getelementptr inbounds i32, i32* %63, i...\n %67 = load i32, i32* %66, align 4\n %68 = load i32*, i32** %12, align 8\n %69 = load i32, i32* %16, align 4\n %70 = sext i32 %69 to i64\n %71 = getelementptr inbounds i32, i32* %68, i...\n %72 = load i32, i32* %71, align 4\n %73 = icmp sle i32 %67, %72\n br i1 %73, label %74, label %106\n"]
  2049. 56 -->|true| 74
  2050. 56 -->|false| 106
  2051. 74["Block 74:\n %75 = load i32*, i32** %12, align 8\n %76 = load i32, i32* %16, align 4\n %77 = sext i32 %76 to i64\n %78 = getelementptr inbounds i32, i32* %75, i...\n %79 = load i32, i32* %78, align 4\n %80 = load i32*, i32** %12, align 8\n %81 = load i32, i32* %14, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds i32, i32* %80, i...\n %84 = load i32, i32* %83, align 4\n %85 = icmp sle i32 %79, %84\n br i1 %85, label %86, label %88\n"]
  2052. 74 -->|true| 86
  2053. 74 -->|false| 88
  2054. 86["Block 86:\n %87 = load i32, i32* %16, align 4\n store i32 %87, i32* %17, align 4\n br label %105\n"]
  2055. 86 --> 105
  2056. 88["Block 88:\n %89 = load i32*, i32** %12, align 8\n %90 = load i32, i32* %13, align 4\n %91 = sext i32 %90 to i64\n %92 = getelementptr inbounds i32, i32* %89, i...\n %93 = load i32, i32* %92, align 4\n %94 = load i32*, i32** %12, align 8\n %95 = load i32, i32* %14, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds i32, i32* %94, i...\n %98 = load i32, i32* %97, align 4\n %99 = icmp sle i32 %93, %98\n br i1 %99, label %100, label %102\n"]
  2057. 88 -->|true| 100
  2058. 88 -->|false| 102
  2059. 100["Block 100:\n %101 = load i32, i32* %14, align 4\n store i32 %101, i32* %17, align 4\n br label %104\n"]
  2060. 100 --> 104
  2061. 102["Block 102:\n %103 = load i32, i32* %13, align 4\n store i32 %103, i32* %17, align 4\n br label %104\n"]
  2062. 102 --> 104
  2063. 104["Block 104:\n br label %105\n"]
  2064. 104 --> 105
  2065. 105["Block 105:\n br label %138\n"]
  2066. 105 --> 138
  2067. 106["Block 106:\n %107 = load i32*, i32** %12, align 8\n %108 = load i32, i32* %13, align 4\n %109 = sext i32 %108 to i64\n %110 = getelementptr inbounds i32, i32* %107,...\n %111 = load i32, i32* %110, align 4\n %112 = load i32*, i32** %12, align 8\n %113 = load i32, i32* %14, align 4\n %114 = sext i32 %113 to i64\n %115 = getelementptr inbounds i32, i32* %112,...\n %116 = load i32, i32* %115, align 4\n %117 = icmp sle i32 %111, %116\n br i1 %117, label %118, label %120\n"]
  2068. 106 -->|true| 118
  2069. 106 -->|false| 120
  2070. 118["Block 118:\n %119 = load i32, i32* %13, align 4\n store i32 %119, i32* %17, align 4\n br label %137\n"]
  2071. 118 --> 137
  2072. 120["Block 120:\n %121 = load i32*, i32** %12, align 8\n %122 = load i32, i32* %16, align 4\n %123 = sext i32 %122 to i64\n %124 = getelementptr inbounds i32, i32* %121,...\n %125 = load i32, i32* %124, align 4\n %126 = load i32*, i32** %12, align 8\n %127 = load i32, i32* %14, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32, i32* %126,...\n %130 = load i32, i32* %129, align 4\n %131 = icmp sle i32 %125, %130\n br i1 %131, label %132, label %134\n"]
  2073. 120 -->|true| 132
  2074. 120 -->|false| 134
  2075. 132["Block 132:\n %133 = load i32, i32* %14, align 4\n store i32 %133, i32* %17, align 4\n br label %136\n"]
  2076. 132 --> 136
  2077. 134["Block 134:\n %135 = load i32, i32* %16, align 4\n store i32 %135, i32* %17, align 4\n br label %136\n"]
  2078. 134 --> 136
  2079. 136["Block 136:\n br label %137\n"]
  2080. 136 --> 137
  2081. 137["Block 137:\n br label %138\n"]
  2082. 137 --> 138
  2083. 138["Block 138:\n %139 = load i32*, i32** %12, align 8\n %140 = load i32, i32* %14, align 4\n %141 = sext i32 %140 to i64\n %142 = getelementptr inbounds i32, i32* %139,...\n %143 = load i32, i32* %142, align 4\n store i32 %143, i32* %18, align 4\n %144 = load i32*, i32** %12, align 8\n %145 = load i32, i32* %17, align 4\n %146 = sext i32 %145 to i64\n %147 = getelementptr inbounds i32, i32* %144,...\n %148 = load i32, i32* %147, align 4\n %149 = load i32*, i32** %12, align 8\n %150 = load i32, i32* %14, align 4\n %151 = sext i32 %150 to i64\n %152 = getelementptr inbounds i32, i32* %149,...\n store i32 %148, i32* %152, align 4\n %153 = load i32, i32* %18, align 4\n %154 = load i32*, i32** %12, align 8\n %155 = load i32, i32* %17, align 4\n %156 = sext i32 %155 to i64\n %157 = getelementptr inbounds i32, i32* %154,...\n store i32 %153, i32* %157, align 4\n %158 = load i32*, i32** %12, align 8\n %159 = load i32, i32* %14, align 4\n %160 = sext i32 %159 to i64\n %161 = getelementptr inbounds i32, i32* %158,...\n %162 = load i32, i32* %161, align 4\n store i32 %162, i32* %19, align 4\n %163 = load i32, i32* %13, align 4\n %164 = sub nsw i32 %163, 1\n store i32 %164, i32* %20, align 4\n %165 = load i32, i32* %13, align 4\n store i32 %165, i32* %21, align 4\n br label %166\n"]
  2084. 138 --> 166
  2085. 166["Block 166:\n %167 = load i32, i32* %21, align 4\n %168 = load i32, i32* %14, align 4\n %169 = icmp slt i32 %167, %168\n br i1 %169, label %170, label %206\n"]
  2086. 166 -->|true| 170
  2087. 166 -->|false| 206
  2088. 170["Block 170:\n %171 = load i32*, i32** %12, align 8\n %172 = load i32, i32* %21, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32, i32* %171,...\n %175 = load i32, i32* %174, align 4\n %176 = load i32, i32* %19, align 4\n %177 = icmp sle i32 %175, %176\n br i1 %177, label %178, label %202\n"]
  2089. 170 -->|true| 178
  2090. 170 -->|false| 202
  2091. 178["Block 178:\n %179 = load i32, i32* %20, align 4\n %180 = add nsw i32 %179, 1\n store i32 %180, i32* %20, align 4\n %181 = load i32*, i32** %12, align 8\n %182 = load i32, i32* %20, align 4\n %183 = sext i32 %182 to i64\n %184 = getelementptr inbounds i32, i32* %181,...\n %185 = load i32, i32* %184, align 4\n store i32 %185, i32* %18, align 4\n %186 = load i32*, i32** %12, align 8\n %187 = load i32, i32* %21, align 4\n %188 = sext i32 %187 to i64\n %189 = getelementptr inbounds i32, i32* %186,...\n %190 = load i32, i32* %189, align 4\n %191 = load i32*, i32** %12, align 8\n %192 = load i32, i32* %20, align 4\n %193 = sext i32 %192 to i64\n %194 = getelementptr inbounds i32, i32* %191,...\n store i32 %190, i32* %194, align 4\n %195 = load i32, i32* %18, align 4\n %196 = load i32*, i32** %12, align 8\n %197 = load i32, i32* %21, align 4\n %198 = sext i32 %197 to i64\n %199 = getelementptr inbounds i32, i32* %196,...\n store i32 %195, i32* %199, align 4\n %200 = load i32, i32* @globalCounter, align 4\n %201 = add nsw i32 %200, 1\n store i32 %201, i32* @globalCounter, align 4\n br label %202\n"]
  2092. 178 --> 202
  2093. 202["Block 202:\n br label %203\n"]
  2094. 202 --> 203
  2095. 203["Block 203:\n %204 = load i32, i32* %21, align 4\n %205 = add nsw i32 %204, 1\n store i32 %205, i32* %21, align 4\n br label %166\n"]
  2096. 203 --> 166
  2097. 206["Block 206:\n %207 = load i32*, i32** %12, align 8\n %208 = load i32, i32* %20, align 4\n %209 = add nsw i32 %208, 1\n %210 = sext i32 %209 to i64\n %211 = getelementptr inbounds i32, i32* %207,...\n %212 = load i32, i32* %211, align 4\n store i32 %212, i32* %18, align 4\n %213 = load i32*, i32** %12, align 8\n %214 = load i32, i32* %14, align 4\n %215 = sext i32 %214 to i64\n %216 = getelementptr inbounds i32, i32* %213,...\n %217 = load i32, i32* %216, align 4\n %218 = load i32*, i32** %12, align 8\n %219 = load i32, i32* %20, align 4\n %220 = add nsw i32 %219, 1\n %221 = sext i32 %220 to i64\n %222 = getelementptr inbounds i32, i32* %218,...\n store i32 %217, i32* %222, align 4\n %223 = load i32, i32* %18, align 4\n %224 = load i32*, i32** %12, align 8\n %225 = load i32, i32* %14, align 4\n %226 = sext i32 %225 to i64\n %227 = getelementptr inbounds i32, i32* %224,...\n store i32 %223, i32* %227, align 4\n %228 = load i32*, i32** %12, align 8\n %229 = load i32, i32* %13, align 4\n %230 = load i32, i32* %20, align 4\n %231 = load i32*, i32** %15, align 8\n %232 = call i32 @fused_quickSort(i1 false, i3...\n %233 = load i32*, i32** %15, align 8\n %234 = load i32, i32* %233, align 4\n %235 = icmp ne i32 %234, 0\n br i1 %235, label %236, label %239\n"]
  2098. 206 -->|true| 236
  2099. 206 -->|false| 239
  2100. 236["Block 236:\n %237 = load i32, i32* @recursionDepth, align 4\n %238 = add nsw i32 %237, -1\n store i32 %238, i32* @recursionDepth, align 4\n br label %270\n"]
  2101. 236 --> 270
  2102. 239["Block 239:\n %240 = load i32*, i32** %12, align 8\n %241 = load i32, i32* %20, align 4\n %242 = add nsw i32 %241, 2\n %243 = load i32, i32* %14, align 4\n %244 = load i32*, i32** %15, align 8\n %245 = call i32 @fused_quickSort(i1 false, i3...\n %246 = load i32*, i32** %15, align 8\n %247 = load i32, i32* %246, align 4\n %248 = icmp ne i32 %247, 0\n br i1 %248, label %249, label %252\n"]
  2103. 239 -->|true| 249
  2104. 239 -->|false| 252
  2105. 249["Block 249:\n %250 = load i32, i32* @recursionDepth, align 4\n %251 = add nsw i32 %250, -1\n store i32 %251, i32* @recursionDepth, align 4\n br label %270\n"]
  2106. 249 --> 270
  2107. 252["Block 252:\n br label %253\n"]
  2108. 252 --> 253
  2109. 253["Block 253:\n %254 = load i32, i32* @recursionDepth, align 4\n %255 = add nsw i32 %254, -1\n store i32 %255, i32* @recursionDepth, align 4\n br label %bunker_phi_0\n"]
  2110. 253 --> bunker_phi_0
  2111. target_cond_1["Block target_cond_1:\n %256 = icmp eq i1 %0, true\n br i1 %256, label %257, label %target_skip_1\n"]
  2112. target_cond_1 -->|true| 257
  2113. target_cond_1 -->|false| target_skip_1
  2114. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  2115. target_skip_1 --> target_phi_1
  2116. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  2117. target_phi_1 --> bunker_cond_1
  2118. 257["Block 257:\n %258 = load i32, i32* %8, align 4\n %259 = icmp ne i32 %258, 0\n br i1 %259, label %260, label %267\n"]
  2119. 257 -->|true| 260
  2120. 257 -->|false| 267
  2121. 260["Block 260:\n %261 = load i32, i32* %8, align 4\n %262 = and i32 %261, 1\n %263 = load i32, i32* %9, align 4\n %264 = add nsw i32 %263, %262\n store i32 %264, i32* %9, align 4\n %265 = load i32, i32* %8, align 4\n %266 = ashr i32 %265, 1\n store i32 %266, i32* %8, align 4\n br label %257\n"]
  2122. 260 --> 257
  2123. 267["Block 267:\n %268 = load i32, i32* %9, align 4\n ret i32 %268\n"]
  2124. bunker_cond_1["Block bunker_cond_1:\n %269 = icmp eq i1 %0, false\n br i1 %269, label %270, label %bunker_skip_1\n"]
  2125. bunker_cond_1 -->|true| 270
  2126. bunker_cond_1 -->|false| bunker_skip_1
  2127. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  2128. bunker_skip_1 --> bunker_phi_1
  2129. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  2130. 270["Block 270:\n ret i32 0\n"]
  2131. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  2132. ```
  2133. [INFO][performCodeFusion] Completed function fusion: fused_quickSort
  2134. [INFO][performCodeFusion] Processing function pair: target=longestIncreasingSubsequence, bunker=performSimpleCalculations
  2135. [INFO][performCodeFusion] adding: %4
  2136. [INFO][performCodeFusion] before push Block ID: %4
  2137. [INFO][performCodeFusion] adding: %29
  2138. [INFO][performCodeFusion] adding: %33
  2139. [INFO][performCodeFusion] adding: %37
  2140. [INFO][performCodeFusion] adding: %38
  2141. [INFO][performCodeFusion] before push Block ID: %29
  2142. [INFO][performCodeFusion] before push Block ID: %33
  2143. [INFO][performCodeFusion] before push Block ID: %37
  2144. [INFO][performCodeFusion] before push Block ID: %38
  2145. [INFO][performCodeFusion] adding: %53
  2146. [INFO][performCodeFusion] adding: %57
  2147. [INFO][performCodeFusion] adding: %58
  2148. [INFO][performCodeFusion] adding: %59
  2149. [INFO][performCodeFusion] adding: %63
  2150. [INFO][performCodeFusion] adding: %75
  2151. [INFO][performCodeFusion] adding: %76
  2152. [INFO][performCodeFusion] adding: %87
  2153. [INFO][performCodeFusion] adding: %88
  2154. [INFO][performCodeFusion] adding: %91
  2155. [INFO][performCodeFusion] adding: %100
  2156. [INFO][performCodeFusion] before push Block ID: %53
  2157. [INFO][performCodeFusion] before push Block ID: %57
  2158. [INFO][performCodeFusion] before push Block ID: %58
  2159. [INFO][performCodeFusion] before push Block ID: %59
  2160. [INFO][performCodeFusion] before push Block ID: %63
  2161. [INFO][performCodeFusion] before push Block ID: %75
  2162. [INFO][performCodeFusion] before push Block ID: %76
  2163. [INFO][performCodeFusion] before push Block ID: %87
  2164. [INFO][performCodeFusion] before push Block ID: %88
  2165. [INFO][performCodeFusion] before push Block ID: %91
  2166. [INFO][performCodeFusion] before push Block ID: %100
  2167. [INFO][performCodeFusion] adding: %117
  2168. [INFO][performCodeFusion] adding: %121
  2169. [INFO][performCodeFusion] adding: %128
  2170. [INFO][performCodeFusion] adding: %130
  2171. [INFO][performCodeFusion] adding: %135
  2172. [INFO][performCodeFusion] adding: %136
  2173. [INFO][performCodeFusion] before push Block ID: %117
  2174. [INFO][performCodeFusion] before push Block ID: %121
  2175. [INFO][performCodeFusion] before push Block ID: %128
  2176. [INFO][performCodeFusion] before push Block ID: %130
  2177. [INFO][performCodeFusion] before push Block ID: %135
  2178. [INFO][performCodeFusion] before push Block ID: %136
  2179. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_performSimpleCalculations
  2180. ```mermaid: fused_performSimpleCalculations
  2181. graph TD
  2182. entry["Block entry:\n br label %target_cond_0\n"]
  2183. entry --> target_cond_0
  2184. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  2185. target_cond_0 -->|true| 4
  2186. target_cond_0 -->|false| target_skip_0
  2187. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  2188. target_skip_0 --> target_phi_0
  2189. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  2190. target_phi_0 --> bunker_cond_0
  2191. 4["Block 4:\n %5 = alloca i32*, align 8\n %6 = alloca i32, align 4\n %7 = alloca [100 x i32], align 16\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = alloca i32, align 4\n store i32* %1, i32** %5, align 8\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  2192. 4 --> target_phi_0
  2193. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  2194. bunker_cond_0 -->|true| 14
  2195. bunker_cond_0 -->|false| bunker_skip_0
  2196. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  2197. bunker_skip_0 --> bunker_phi_0
  2198. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  2199. bunker_phi_0 --> target_cond_1
  2200. 14["Block 14:\n %15 = alloca i32, align 4\n store i32 100, i32* %15, align 4\n %16 = load i32, i32* %15, align 4\n %17 = icmp sgt i32 %16, 50\n br i1 %17, label %18, label %23\n"]
  2201. 14 -->|true| 18
  2202. 14 -->|false| 23
  2203. 18["Block 18:\n %19 = load i32, i32* %15, align 4\n %20 = mul nsw i32 %19, 2\n %21 = load i32, i32* @calculationResult, align 4\n %22 = add nsw i32 %21, %20\n store i32 %22, i32* @calculationResult, align 4\n br label %42\n"]
  2204. 18 --> 42
  2205. 23["Block 23:\n %24 = load i32, i32* %15, align 4\n %25 = sdiv i32 %24, 2\n %26 = load i32, i32* @calculationResult, align 4\n %27 = add nsw i32 %26, %25\n store i32 %27, i32* @calculationResult, align 4\n br label %bunker_phi_0\n"]
  2206. 23 --> bunker_phi_0
  2207. target_cond_1["Block target_cond_1:\n %28 = icmp eq i1 %0, true\n br i1 %28, label %29, label %target_skip_1\n"]
  2208. target_cond_1 -->|true| 29
  2209. target_cond_1 -->|false| target_skip_1
  2210. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  2211. target_skip_1 --> target_phi_1
  2212. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  2213. target_phi_1 --> bunker_cond_1
  2214. 29["Block 29:\n %30 = load i32, i32* %8, align 4\n %31 = load i32, i32* %6, align 4\n %32 = icmp slt i32 %30, %31\n br i1 %32, label %33, label %37\n"]
  2215. 29 -->|true| 33
  2216. 29 -->|false| 37
  2217. 33["Block 33:\n %34 = load i32, i32* %8, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n store i32 1, i32* %36, align 4\n br label %38\n"]
  2218. 33 --> 38
  2219. 37["Block 37:\n store i32 1, i32* %9, align 4\n br label %53\n"]
  2220. 37 --> 53
  2221. 38["Block 38:\n %39 = load i32, i32* %8, align 4\n %40 = add nsw i32 %39, 1\n store i32 %40, i32* %8, align 4\n br label %target_phi_1\n"]
  2222. 38 --> target_phi_1
  2223. bunker_cond_1["Block bunker_cond_1:\n %41 = icmp eq i1 %0, false\n br i1 %41, label %42, label %bunker_skip_1\n"]
  2224. bunker_cond_1 -->|true| 42
  2225. bunker_cond_1 -->|false| bunker_skip_1
  2226. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  2227. bunker_skip_1 --> bunker_phi_1
  2228. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  2229. bunker_phi_1 --> target_cond_2
  2230. 42["Block 42:\n %43 = load i32, i32* %15, align 4\n %44 = srem i32 %43, 3\n %45 = icmp eq i32 %44, 0\n br i1 %45, label %46, label %49\n"]
  2231. 42 -->|true| 46
  2232. 42 -->|false| 49
  2233. 46["Block 46:\n %47 = load i32, i32* @calculationResult, align 4\n %48 = mul nsw i32 %47, 3\n store i32 %48, i32* @calculationResult, align 4\n br label %104\n"]
  2234. 46 --> 104
  2235. 49["Block 49:\n %50 = load i32, i32* @calculationResult, align 4\n %51 = add nsw i32 %50, 3\n store i32 %51, i32* @calculationResult, align 4\n br label %bunker_phi_1\n"]
  2236. 49 --> bunker_phi_1
  2237. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  2238. target_cond_2 -->|true| 53
  2239. target_cond_2 -->|false| target_skip_2
  2240. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  2241. target_skip_2 --> target_phi_2
  2242. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  2243. target_phi_2 --> bunker_cond_2
  2244. 53["Block 53:\n %54 = load i32, i32* %9, align 4\n %55 = load i32, i32* %6, align 4\n %56 = icmp slt i32 %54, %55\n br i1 %56, label %57, label %58\n"]
  2245. 53 -->|true| 57
  2246. 53 -->|false| 58
  2247. 57["Block 57:\n store i32 0, i32* %10, align 4\n br label %59\n"]
  2248. 57 --> 59
  2249. 58["Block 58:\n store i32 0, i32* %11, align 4\n store i32 0, i32* %12, align 4\n br label %117\n"]
  2250. 58 --> 117
  2251. 59["Block 59:\n %60 = load i32, i32* %10, align 4\n %61 = load i32, i32* %9, align 4\n %62 = icmp slt i32 %60, %61\n br i1 %62, label %63, label %75\n"]
  2252. 59 -->|true| 63
  2253. 59 -->|false| 75
  2254. 63["Block 63:\n %64 = load i32*, i32** %5, align 8\n %65 = load i32, i32* %9, align 4\n %66 = sext i32 %65 to i64\n %67 = getelementptr inbounds i32, i32* %64, i...\n %68 = load i32, i32* %67, align 4\n %69 = load i32*, i32** %5, align 8\n %70 = load i32, i32* %10, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = icmp sgt i32 %68, %73\n br i1 %74, label %76, label %87\n"]
  2255. 63 -->|true| 76
  2256. 63 -->|false| 87
  2257. 75["Block 75:\n br label %88\n"]
  2258. 75 --> 88
  2259. 76["Block 76:\n %77 = load i32, i32* %9, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = load i32, i32* %10, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds [100 x i32], [10...\n %84 = load i32, i32* %83, align 4\n %85 = add nsw i32 %84, 1\n %86 = icmp slt i32 %80, %85\n br i1 %86, label %91, label %87\n"]
  2260. 76 -->|true| 91
  2261. 76 -->|false| 87
  2262. 87["Block 87:\n br label %100\n"]
  2263. 87 --> 100
  2264. 88["Block 88:\n %89 = load i32, i32* %9, align 4\n %90 = add nsw i32 %89, 1\n store i32 %90, i32* %9, align 4\n br label %53\n"]
  2265. 88 --> 53
  2266. 91["Block 91:\n %92 = load i32, i32* %10, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %94, align 4\n %96 = add nsw i32 %95, 1\n %97 = load i32, i32* %9, align 4\n %98 = sext i32 %97 to i64\n %99 = getelementptr inbounds [100 x i32], [10...\n store i32 %96, i32* %99, align 4\n br label %87\n"]
  2267. 91 --> 87
  2268. 100["Block 100:\n %101 = load i32, i32* %10, align 4\n %102 = add nsw i32 %101, 1\n store i32 %102, i32* %10, align 4\n br label %target_phi_2\n"]
  2269. 100 --> target_phi_2
  2270. bunker_cond_2["Block bunker_cond_2:\n %103 = icmp eq i1 %0, false\n br i1 %103, label %104, label %bunker_skip_2\n"]
  2271. bunker_cond_2 -->|true| 104
  2272. bunker_cond_2 -->|false| bunker_skip_2
  2273. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  2274. bunker_skip_2 --> bunker_phi_2
  2275. bunker_phi_2["Block bunker_phi_2:\n br label %target_cond_3\n"]
  2276. bunker_phi_2 --> target_cond_3
  2277. 104["Block 104:\n %105 = load i32, i32* @calculationResult, ali...\n %106 = icmp sge i32 %105, 150\n br i1 %106, label %107, label %113\n"]
  2278. 104 -->|true| 107
  2279. 104 -->|false| 113
  2280. 107["Block 107:\n %108 = load i32, i32* @calculationResult, ali...\n %109 = icmp sle i32 %108, 300\n br i1 %109, label %110, label %113\n"]
  2281. 107 -->|true| 110
  2282. 107 -->|false| 113
  2283. 110["Block 110:\n %111 = load i32, i32* @calculationResult, ali...\n %112 = sub nsw i32 %111, 50\n store i32 %112, i32* @calculationResult, align 4\n br label %140\n"]
  2284. 110 --> 140
  2285. 113["Block 113:\n %114 = load i32, i32* @calculationResult, ali...\n %115 = add nsw i32 %114, 50\n store i32 %115, i32* @calculationResult, align 4\n br label %bunker_phi_2\n"]
  2286. 113 --> bunker_phi_2
  2287. target_cond_3["Block target_cond_3:\n %116 = icmp eq i1 %0, true\n br i1 %116, label %117, label %target_skip_3\n"]
  2288. target_cond_3 -->|true| 117
  2289. target_cond_3 -->|false| target_skip_3
  2290. target_skip_3["Block target_skip_3:\n br label %target_phi_3\n"]
  2291. target_skip_3 --> target_phi_3
  2292. target_phi_3["Block target_phi_3:\n br label %bunker_cond_3\n"]
  2293. target_phi_3 --> bunker_cond_3
  2294. 117["Block 117:\n %118 = load i32, i32* %12, align 4\n %119 = load i32, i32* %6, align 4\n %120 = icmp slt i32 %118, %119\n br i1 %120, label %121, label %128\n"]
  2295. 117 -->|true| 121
  2296. 117 -->|false| 128
  2297. 121["Block 121:\n %122 = load i32, i32* %11, align 4\n %123 = load i32, i32* %12, align 4\n %124 = sext i32 %123 to i64\n %125 = getelementptr inbounds [100 x i32], [1...\n %126 = load i32, i32* %125, align 4\n %127 = icmp slt i32 %122, %126\n br i1 %127, label %130, label %135\n"]
  2298. 121 -->|true| 130
  2299. 121 -->|false| 135
  2300. 128["Block 128:\n %129 = load i32, i32* %11, align 4\n ret i32 %94\n"]
  2301. 130["Block 130:\n %131 = load i32, i32* %12, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds [100 x i32], [1...\n %134 = load i32, i32* %133, align 4\n store i32 %134, i32* %11, align 4\n br label %135\n"]
  2302. 130 --> 135
  2303. 135["Block 135:\n br label %136\n"]
  2304. 135 --> 136
  2305. 136["Block 136:\n %137 = load i32, i32* %12, align 4\n %138 = add nsw i32 %137, 1\n store i32 %138, i32* %12, align 4\n br label %target_phi_3\n"]
  2306. 136 --> target_phi_3
  2307. bunker_cond_3["Block bunker_cond_3:\n %139 = icmp eq i1 %0, false\n br i1 %139, label %140, label %bunker_skip_3\n"]
  2308. bunker_cond_3 -->|true| 140
  2309. bunker_cond_3 -->|false| bunker_skip_3
  2310. bunker_skip_3["Block bunker_skip_3:\n br label %bunker_phi_3\n"]
  2311. bunker_skip_3 --> bunker_phi_3
  2312. bunker_phi_3["Block bunker_phi_3:\n ret i32 0\n"]
  2313. 140["Block 140:\n %141 = load i32, i32* @calculationResult, ali...\n %142 = srem i32 %141, 2\n %143 = icmp eq i32 %142, 0\n br i1 %143, label %144, label %147\n"]
  2314. 140 -->|true| 144
  2315. 140 -->|false| 147
  2316. 144["Block 144:\n %145 = load i32, i32* @calculationResult, ali...\n %146 = sdiv i32 %145, 2\n store i32 %146, i32* @calculationResult, align 4\n br label %150\n"]
  2317. 144 --> 150
  2318. 147["Block 147:\n %148 = load i32, i32* @calculationResult, ali...\n %149 = mul nsw i32 %148, 2\n store i32 %149, i32* @calculationResult, align 4\n br label %150\n"]
  2319. 147 --> 150
  2320. 150["Block 150:\n %151 = load i32, i32* @calculationResult, ali...\n %152 = srem i32 %151, 10\n %153 = icmp slt i32 %152, 5\n br i1 %153, label %154, label %157\n"]
  2321. 150 -->|true| 154
  2322. 150 -->|false| 157
  2323. 154["Block 154:\n %155 = load i32, i32* @calculationResult, ali...\n %156 = add nsw i32 %155, 5\n store i32 %156, i32* @calculationResult, align 4\n br label %160\n"]
  2324. 154 --> 160
  2325. 157["Block 157:\n %158 = load i32, i32* @calculationResult, ali...\n %159 = sub nsw i32 %158, 5\n store i32 %159, i32* @calculationResult, align 4\n br label %160\n"]
  2326. 157 --> 160
  2327. 160["Block 160:\n %161 = load i32, i32* @calculationResult, ali...\n %162 = icmp sgt i32 %161, 1000\n br i1 %162, label %163, label %164\n"]
  2328. 160 -->|true| 163
  2329. 160 -->|false| 164
  2330. 163["Block 163:\n store i32 1000, i32* @calculationResult, align 4\n br label %167\n"]
  2331. 163 --> 167
  2332. 164["Block 164:\n %165 = load i32, i32* @calculationResult, ali...\n %166 = add nsw i32 %165, 10\n store i32 %166, i32* @calculationResult, align 4\n br label %167\n"]
  2333. 164 --> 167
  2334. 167["Block 167:\n %168 = load i32, i32* @calculationResult, ali...\n %169 = call i32 (i8*, ...) @printf(i8* getele...\n ret void\n br label %bunker_phi_3\n"]
  2335. 167 --> bunker_phi_3
  2336. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  2337. ```
  2338. [DEBUG][performCodeFusion] Processing return values for fused function: fused_performSimpleCalculations
  2339. [DEBUG][performCodeFusion] Fused function return type: i32
  2340. [DEBUG][performCodeFusion] Non-struct return type detected: i32
  2341. [DEBUG][performCodeFusion] Processing bunker block: %49
  2342. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %50 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2343. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %51 = add nsw i32 %50, 3 (opcode: add)
  2344. [DEBUG][performCodeFusion] Block %49 - Processing instruction: store i32 %51, i32* @calculationResult, align 4 (opcode: store)
  2345. [DEBUG][performCodeFusion] Block %49 - Processing instruction: br label %bunker_phi_1 (opcode: br)
  2346. [DEBUG][performCodeFusion] Processing bunker block: %42
  2347. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %43 = load i32, i32* %15, align 4 (opcode: load)
  2348. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %44 = srem i32 %43, 3 (opcode: srem)
  2349. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %45 = icmp eq i32 %44, 0 (opcode: icmp)
  2350. [DEBUG][performCodeFusion] Block %42 - Processing instruction: br i1 %45, label %46, label %49 (opcode: br)
  2351. [DEBUG][performCodeFusion] Processing bunker block: %107
  2352. [DEBUG][performCodeFusion] Block %107 - Processing instruction: %108 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2353. [DEBUG][performCodeFusion] Block %107 - Processing instruction: %109 = icmp sle i32 %108, 300 (opcode: icmp)
  2354. [DEBUG][performCodeFusion] Block %107 - Processing instruction: br i1 %109, label %110, label %113 (opcode: br)
  2355. [DEBUG][performCodeFusion] Processing bunker block: %18
  2356. [DEBUG][performCodeFusion] Block %18 - Processing instruction: %19 = load i32, i32* %15, align 4 (opcode: load)
  2357. [DEBUG][performCodeFusion] Block %18 - Processing instruction: %20 = mul nsw i32 %19, 2 (opcode: mul)
  2358. [DEBUG][performCodeFusion] Block %18 - Processing instruction: %21 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2359. [DEBUG][performCodeFusion] Block %18 - Processing instruction: %22 = add nsw i32 %21, %20 (opcode: add)
  2360. [DEBUG][performCodeFusion] Block %18 - Processing instruction: store i32 %22, i32* @calculationResult, align 4 (opcode: store)
  2361. [DEBUG][performCodeFusion] Block %18 - Processing instruction: br label %42 (opcode: br)
  2362. [DEBUG][performCodeFusion] Processing bunker block: %104
  2363. [DEBUG][performCodeFusion] Block %104 - Processing instruction: %105 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2364. [DEBUG][performCodeFusion] Block %104 - Processing instruction: %106 = icmp sge i32 %105, 150 (opcode: icmp)
  2365. [DEBUG][performCodeFusion] Block %104 - Processing instruction: br i1 %106, label %107, label %113 (opcode: br)
  2366. [DEBUG][performCodeFusion] Processing bunker block: %110
  2367. [DEBUG][performCodeFusion] Block %110 - Processing instruction: %111 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2368. [DEBUG][performCodeFusion] Block %110 - Processing instruction: %112 = sub nsw i32 %111, 50 (opcode: sub)
  2369. [DEBUG][performCodeFusion] Block %110 - Processing instruction: store i32 %112, i32* @calculationResult, align 4 (opcode: store)
  2370. [DEBUG][performCodeFusion] Block %110 - Processing instruction: br label %140 (opcode: br)
  2371. [DEBUG][performCodeFusion] Processing bunker block: %144
  2372. [DEBUG][performCodeFusion] Block %144 - Processing instruction: %145 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2373. [DEBUG][performCodeFusion] Block %144 - Processing instruction: %146 = sdiv i32 %145, 2 (opcode: sdiv)
  2374. [DEBUG][performCodeFusion] Block %144 - Processing instruction: store i32 %146, i32* @calculationResult, align 4 (opcode: store)
  2375. [DEBUG][performCodeFusion] Block %144 - Processing instruction: br label %150 (opcode: br)
  2376. [DEBUG][performCodeFusion] Processing bunker block: %140
  2377. [DEBUG][performCodeFusion] Block %140 - Processing instruction: %141 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2378. [DEBUG][performCodeFusion] Block %140 - Processing instruction: %142 = srem i32 %141, 2 (opcode: srem)
  2379. [DEBUG][performCodeFusion] Block %140 - Processing instruction: %143 = icmp eq i32 %142, 0 (opcode: icmp)
  2380. [DEBUG][performCodeFusion] Block %140 - Processing instruction: br i1 %143, label %144, label %147 (opcode: br)
  2381. [DEBUG][performCodeFusion] Processing bunker block: %147
  2382. [DEBUG][performCodeFusion] Block %147 - Processing instruction: %148 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2383. [DEBUG][performCodeFusion] Block %147 - Processing instruction: %149 = mul nsw i32 %148, 2 (opcode: mul)
  2384. [DEBUG][performCodeFusion] Block %147 - Processing instruction: store i32 %149, i32* @calculationResult, align 4 (opcode: store)
  2385. [DEBUG][performCodeFusion] Block %147 - Processing instruction: br label %150 (opcode: br)
  2386. [DEBUG][performCodeFusion] Processing bunker block: %150
  2387. [DEBUG][performCodeFusion] Block %150 - Processing instruction: %151 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2388. [DEBUG][performCodeFusion] Block %150 - Processing instruction: %152 = srem i32 %151, 10 (opcode: srem)
  2389. [DEBUG][performCodeFusion] Block %150 - Processing instruction: %153 = icmp slt i32 %152, 5 (opcode: icmp)
  2390. [DEBUG][performCodeFusion] Block %150 - Processing instruction: br i1 %153, label %154, label %157 (opcode: br)
  2391. [DEBUG][performCodeFusion] Processing bunker block: %154
  2392. [DEBUG][performCodeFusion] Block %154 - Processing instruction: %155 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2393. [DEBUG][performCodeFusion] Block %154 - Processing instruction: %156 = add nsw i32 %155, 5 (opcode: add)
  2394. [DEBUG][performCodeFusion] Block %154 - Processing instruction: store i32 %156, i32* @calculationResult, align 4 (opcode: store)
  2395. [DEBUG][performCodeFusion] Block %154 - Processing instruction: br label %160 (opcode: br)
  2396. [DEBUG][performCodeFusion] Processing bunker block: %167
  2397. [DEBUG][performCodeFusion] Block %167 - Processing instruction: %168 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2398. [DEBUG][performCodeFusion] Block %167 - Processing instruction: %169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.27, i64 0, i64 0), i32 %168) (opcode: call)
  2399. [DEBUG][performCodeFusion] Block %167 - Processing instruction: ret void (opcode: ret)
  2400. [DEBUG][performCodeFusion] Setting default bunker return value
  2401. [DEBUG][performCodeFusion] Updated bunker return in block %167 with value type i32
  2402. [DEBUG][performCodeFusion] Block %167 - Processing instruction: br label %bunker_phi_3 (opcode: br)
  2403. [DEBUG][performCodeFusion] Removing extra instruction after return in block %167: br
  2404. [DEBUG][performCodeFusion] Processing bunker block: %157
  2405. [DEBUG][performCodeFusion] Block %157 - Processing instruction: %158 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2406. [DEBUG][performCodeFusion] Block %157 - Processing instruction: %159 = sub nsw i32 %158, 5 (opcode: sub)
  2407. [DEBUG][performCodeFusion] Block %157 - Processing instruction: store i32 %159, i32* @calculationResult, align 4 (opcode: store)
  2408. [DEBUG][performCodeFusion] Block %157 - Processing instruction: br label %160 (opcode: br)
  2409. [DEBUG][performCodeFusion] Processing bunker block: %160
  2410. [DEBUG][performCodeFusion] Block %160 - Processing instruction: %161 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2411. [DEBUG][performCodeFusion] Block %160 - Processing instruction: %162 = icmp sgt i32 %161, 1000 (opcode: icmp)
  2412. [DEBUG][performCodeFusion] Block %160 - Processing instruction: br i1 %162, label %163, label %164 (opcode: br)
  2413. [DEBUG][performCodeFusion] Processing bunker block: %163
  2414. [DEBUG][performCodeFusion] Block %163 - Processing instruction: store i32 1000, i32* @calculationResult, align 4 (opcode: store)
  2415. [DEBUG][performCodeFusion] Block %163 - Processing instruction: br label %167 (opcode: br)
  2416. [DEBUG][performCodeFusion] Processing bunker block: %164
  2417. [DEBUG][performCodeFusion] Block %164 - Processing instruction: %165 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2418. [DEBUG][performCodeFusion] Block %164 - Processing instruction: %166 = add nsw i32 %165, 10 (opcode: add)
  2419. [DEBUG][performCodeFusion] Block %164 - Processing instruction: store i32 %166, i32* @calculationResult, align 4 (opcode: store)
  2420. [DEBUG][performCodeFusion] Block %164 - Processing instruction: br label %167 (opcode: br)
  2421. [DEBUG][performCodeFusion] Processing bunker block: %46
  2422. [DEBUG][performCodeFusion] Block %46 - Processing instruction: %47 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2423. [DEBUG][performCodeFusion] Block %46 - Processing instruction: %48 = mul nsw i32 %47, 3 (opcode: mul)
  2424. [DEBUG][performCodeFusion] Block %46 - Processing instruction: store i32 %48, i32* @calculationResult, align 4 (opcode: store)
  2425. [DEBUG][performCodeFusion] Block %46 - Processing instruction: br label %104 (opcode: br)
  2426. [DEBUG][performCodeFusion] Processing bunker block: %23
  2427. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %24 = load i32, i32* %15, align 4 (opcode: load)
  2428. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %25 = sdiv i32 %24, 2 (opcode: sdiv)
  2429. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %26 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2430. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %27 = add nsw i32 %26, %25 (opcode: add)
  2431. [DEBUG][performCodeFusion] Block %23 - Processing instruction: store i32 %27, i32* @calculationResult, align 4 (opcode: store)
  2432. [DEBUG][performCodeFusion] Block %23 - Processing instruction: br label %bunker_phi_0 (opcode: br)
  2433. [DEBUG][performCodeFusion] Processing bunker block: %14
  2434. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %15 = alloca i32, align 4 (opcode: alloca)
  2435. [DEBUG][performCodeFusion] Block %14 - Processing instruction: store i32 100, i32* %15, align 4 (opcode: store)
  2436. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %16 = load i32, i32* %15, align 4 (opcode: load)
  2437. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %17 = icmp sgt i32 %16, 50 (opcode: icmp)
  2438. [DEBUG][performCodeFusion] Block %14 - Processing instruction: br i1 %17, label %18, label %23 (opcode: br)
  2439. [DEBUG][performCodeFusion] Processing bunker block: %113
  2440. [DEBUG][performCodeFusion] Block %113 - Processing instruction: %114 = load i32, i32* @calculationResult, align 4 (opcode: load)
  2441. [DEBUG][performCodeFusion] Block %113 - Processing instruction: %115 = add nsw i32 %114, 50 (opcode: add)
  2442. [DEBUG][performCodeFusion] Block %113 - Processing instruction: store i32 %115, i32* @calculationResult, align 4 (opcode: store)
  2443. [DEBUG][performCodeFusion] Block %113 - Processing instruction: br label %bunker_phi_2 (opcode: br)
  2444. [DEBUG][performCodeFusion] Processing target block: %57
  2445. [DEBUG][performCodeFusion] Block %57 - Processing instruction: store i32 0, i32* %10, align 4 (opcode: store)
  2446. [DEBUG][performCodeFusion] Block %57 - Processing instruction: br label %59 (opcode: br)
  2447. [DEBUG][performCodeFusion] Processing target block: %58
  2448. [DEBUG][performCodeFusion] Block %58 - Processing instruction: store i32 0, i32* %11, align 4 (opcode: store)
  2449. [DEBUG][performCodeFusion] Block %58 - Processing instruction: store i32 0, i32* %12, align 4 (opcode: store)
  2450. [DEBUG][performCodeFusion] Block %58 - Processing instruction: br label %117 (opcode: br)
  2451. [DEBUG][performCodeFusion] Processing target block: %59
  2452. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %60 = load i32, i32* %10, align 4 (opcode: load)
  2453. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %61 = load i32, i32* %9, align 4 (opcode: load)
  2454. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %62 = icmp slt i32 %60, %61 (opcode: icmp)
  2455. [DEBUG][performCodeFusion] Block %59 - Processing instruction: br i1 %62, label %63, label %75 (opcode: br)
  2456. [DEBUG][performCodeFusion] Processing target block: %63
  2457. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %64 = load i32*, i32** %5, align 8 (opcode: load)
  2458. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %65 = load i32, i32* %9, align 4 (opcode: load)
  2459. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %66 = sext i32 %65 to i64 (opcode: sext)
  2460. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %67 = getelementptr inbounds i32, i32* %64, i64 %66 (opcode: getelementptr)
  2461. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %68 = load i32, i32* %67, align 4 (opcode: load)
  2462. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %69 = load i32*, i32** %5, align 8 (opcode: load)
  2463. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %70 = load i32, i32* %10, align 4 (opcode: load)
  2464. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %71 = sext i32 %70 to i64 (opcode: sext)
  2465. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %72 = getelementptr inbounds i32, i32* %69, i64 %71 (opcode: getelementptr)
  2466. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %73 = load i32, i32* %72, align 4 (opcode: load)
  2467. [DEBUG][performCodeFusion] Block %63 - Processing instruction: %74 = icmp sgt i32 %68, %73 (opcode: icmp)
  2468. [DEBUG][performCodeFusion] Block %63 - Processing instruction: br i1 %74, label %76, label %87 (opcode: br)
  2469. [DEBUG][performCodeFusion] Processing target block: %117
  2470. [DEBUG][performCodeFusion] Block %117 - Processing instruction: %118 = load i32, i32* %12, align 4 (opcode: load)
  2471. [DEBUG][performCodeFusion] Block %117 - Processing instruction: %119 = load i32, i32* %6, align 4 (opcode: load)
  2472. [DEBUG][performCodeFusion] Block %117 - Processing instruction: %120 = icmp slt i32 %118, %119 (opcode: icmp)
  2473. [DEBUG][performCodeFusion] Block %117 - Processing instruction: br i1 %120, label %121, label %128 (opcode: br)
  2474. [DEBUG][performCodeFusion] Processing target block: %121
  2475. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %122 = load i32, i32* %11, align 4 (opcode: load)
  2476. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %123 = load i32, i32* %12, align 4 (opcode: load)
  2477. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %124 = sext i32 %123 to i64 (opcode: sext)
  2478. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %125 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %124 (opcode: getelementptr)
  2479. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %126 = load i32, i32* %125, align 4 (opcode: load)
  2480. [DEBUG][performCodeFusion] Block %121 - Processing instruction: %127 = icmp slt i32 %122, %126 (opcode: icmp)
  2481. [DEBUG][performCodeFusion] Block %121 - Processing instruction: br i1 %127, label %130, label %135 (opcode: br)
  2482. [DEBUG][performCodeFusion] Processing target block: %128
  2483. [DEBUG][performCodeFusion] Block %128 - Processing instruction: %129 = load i32, i32* %11, align 4 (opcode: load)
  2484. [DEBUG][performCodeFusion] Block %128 - Processing instruction: ret i32 %94 (opcode: ret)
  2485. [DEBUG][performCodeFusion] Updated target return in block %128 with value type i32
  2486. [DEBUG][performCodeFusion] Processing target block: %130
  2487. [DEBUG][performCodeFusion] Block %130 - Processing instruction: %131 = load i32, i32* %12, align 4 (opcode: load)
  2488. [DEBUG][performCodeFusion] Block %130 - Processing instruction: %132 = sext i32 %131 to i64 (opcode: sext)
  2489. [DEBUG][performCodeFusion] Block %130 - Processing instruction: %133 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %132 (opcode: getelementptr)
  2490. [DEBUG][performCodeFusion] Block %130 - Processing instruction: %134 = load i32, i32* %133, align 4 (opcode: load)
  2491. [DEBUG][performCodeFusion] Block %130 - Processing instruction: store i32 %134, i32* %11, align 4 (opcode: store)
  2492. [DEBUG][performCodeFusion] Block %130 - Processing instruction: br label %135 (opcode: br)
  2493. [DEBUG][performCodeFusion] Processing target block: %75
  2494. [DEBUG][performCodeFusion] Block %75 - Processing instruction: br label %88 (opcode: br)
  2495. [DEBUG][performCodeFusion] Processing target block: %76
  2496. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %77 = load i32, i32* %9, align 4 (opcode: load)
  2497. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %78 = sext i32 %77 to i64 (opcode: sext)
  2498. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %79 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %78 (opcode: getelementptr)
  2499. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %80 = load i32, i32* %79, align 4 (opcode: load)
  2500. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %81 = load i32, i32* %10, align 4 (opcode: load)
  2501. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %82 = sext i32 %81 to i64 (opcode: sext)
  2502. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %83 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %82 (opcode: getelementptr)
  2503. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %84 = load i32, i32* %83, align 4 (opcode: load)
  2504. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %85 = add nsw i32 %84, 1 (opcode: add)
  2505. [DEBUG][performCodeFusion] Block %76 - Processing instruction: %86 = icmp slt i32 %80, %85 (opcode: icmp)
  2506. [DEBUG][performCodeFusion] Block %76 - Processing instruction: br i1 %86, label %91, label %87 (opcode: br)
  2507. [DEBUG][performCodeFusion] Processing target block: %135
  2508. [DEBUG][performCodeFusion] Block %135 - Processing instruction: br label %136 (opcode: br)
  2509. [DEBUG][performCodeFusion] Processing target block: %136
  2510. [DEBUG][performCodeFusion] Block %136 - Processing instruction: %137 = load i32, i32* %12, align 4 (opcode: load)
  2511. [DEBUG][performCodeFusion] Block %136 - Processing instruction: %138 = add nsw i32 %137, 1 (opcode: add)
  2512. [DEBUG][performCodeFusion] Block %136 - Processing instruction: store i32 %138, i32* %12, align 4 (opcode: store)
  2513. [DEBUG][performCodeFusion] Block %136 - Processing instruction: br label %target_phi_3 (opcode: br)
  2514. [DEBUG][performCodeFusion] Processing target block: %87
  2515. [DEBUG][performCodeFusion] Block %87 - Processing instruction: br label %100 (opcode: br)
  2516. [DEBUG][performCodeFusion] Processing target block: %88
  2517. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %89 = load i32, i32* %9, align 4 (opcode: load)
  2518. [DEBUG][performCodeFusion] Block %88 - Processing instruction: %90 = add nsw i32 %89, 1 (opcode: add)
  2519. [DEBUG][performCodeFusion] Block %88 - Processing instruction: store i32 %90, i32* %9, align 4 (opcode: store)
  2520. [DEBUG][performCodeFusion] Block %88 - Processing instruction: br label %53 (opcode: br)
  2521. [DEBUG][performCodeFusion] Processing target block: %100
  2522. [DEBUG][performCodeFusion] Block %100 - Processing instruction: %101 = load i32, i32* %10, align 4 (opcode: load)
  2523. [DEBUG][performCodeFusion] Block %100 - Processing instruction: %102 = add nsw i32 %101, 1 (opcode: add)
  2524. [DEBUG][performCodeFusion] Block %100 - Processing instruction: store i32 %102, i32* %10, align 4 (opcode: store)
  2525. [DEBUG][performCodeFusion] Block %100 - Processing instruction: br label %target_phi_2 (opcode: br)
  2526. [DEBUG][performCodeFusion] Processing target block: %53
  2527. [DEBUG][performCodeFusion] Block %53 - Processing instruction: %54 = load i32, i32* %9, align 4 (opcode: load)
  2528. [DEBUG][performCodeFusion] Block %53 - Processing instruction: %55 = load i32, i32* %6, align 4 (opcode: load)
  2529. [DEBUG][performCodeFusion] Block %53 - Processing instruction: %56 = icmp slt i32 %54, %55 (opcode: icmp)
  2530. [DEBUG][performCodeFusion] Block %53 - Processing instruction: br i1 %56, label %57, label %58 (opcode: br)
  2531. [DEBUG][performCodeFusion] Processing target block: %91
  2532. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %92 = load i32, i32* %10, align 4 (opcode: load)
  2533. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %93 = sext i32 %92 to i64 (opcode: sext)
  2534. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %94 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %93 (opcode: getelementptr)
  2535. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %95 = load i32, i32* %94, align 4 (opcode: load)
  2536. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %96 = add nsw i32 %95, 1 (opcode: add)
  2537. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %97 = load i32, i32* %9, align 4 (opcode: load)
  2538. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %98 = sext i32 %97 to i64 (opcode: sext)
  2539. [DEBUG][performCodeFusion] Block %91 - Processing instruction: %99 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %98 (opcode: getelementptr)
  2540. [DEBUG][performCodeFusion] Block %91 - Processing instruction: store i32 %96, i32* %99, align 4 (opcode: store)
  2541. [DEBUG][performCodeFusion] Block %91 - Processing instruction: br label %87 (opcode: br)
  2542. [DEBUG][performCodeFusion] Processing target block: %33
  2543. [DEBUG][performCodeFusion] Block %33 - Processing instruction: %34 = load i32, i32* %8, align 4 (opcode: load)
  2544. [DEBUG][performCodeFusion] Block %33 - Processing instruction: %35 = sext i32 %34 to i64 (opcode: sext)
  2545. [DEBUG][performCodeFusion] Block %33 - Processing instruction: %36 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %35 (opcode: getelementptr)
  2546. [DEBUG][performCodeFusion] Block %33 - Processing instruction: store i32 1, i32* %36, align 4 (opcode: store)
  2547. [DEBUG][performCodeFusion] Block %33 - Processing instruction: br label %38 (opcode: br)
  2548. [DEBUG][performCodeFusion] Processing target block: %29
  2549. [DEBUG][performCodeFusion] Block %29 - Processing instruction: %30 = load i32, i32* %8, align 4 (opcode: load)
  2550. [DEBUG][performCodeFusion] Block %29 - Processing instruction: %31 = load i32, i32* %6, align 4 (opcode: load)
  2551. [DEBUG][performCodeFusion] Block %29 - Processing instruction: %32 = icmp slt i32 %30, %31 (opcode: icmp)
  2552. [DEBUG][performCodeFusion] Block %29 - Processing instruction: br i1 %32, label %33, label %37 (opcode: br)
  2553. [DEBUG][performCodeFusion] Processing target block: %37
  2554. [DEBUG][performCodeFusion] Block %37 - Processing instruction: store i32 1, i32* %9, align 4 (opcode: store)
  2555. [DEBUG][performCodeFusion] Block %37 - Processing instruction: br label %53 (opcode: br)
  2556. [DEBUG][performCodeFusion] Processing target block: %38
  2557. [DEBUG][performCodeFusion] Block %38 - Processing instruction: %39 = load i32, i32* %8, align 4 (opcode: load)
  2558. [DEBUG][performCodeFusion] Block %38 - Processing instruction: %40 = add nsw i32 %39, 1 (opcode: add)
  2559. [DEBUG][performCodeFusion] Block %38 - Processing instruction: store i32 %40, i32* %8, align 4 (opcode: store)
  2560. [DEBUG][performCodeFusion] Block %38 - Processing instruction: br label %target_phi_1 (opcode: br)
  2561. [DEBUG][performCodeFusion] Processing target block: %4
  2562. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %5 = alloca i32*, align 8 (opcode: alloca)
  2563. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %6 = alloca i32, align 4 (opcode: alloca)
  2564. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %7 = alloca [100 x i32], align 16 (opcode: alloca)
  2565. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %8 = alloca i32, align 4 (opcode: alloca)
  2566. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %9 = alloca i32, align 4 (opcode: alloca)
  2567. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %10 = alloca i32, align 4 (opcode: alloca)
  2568. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %11 = alloca i32, align 4 (opcode: alloca)
  2569. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %12 = alloca i32, align 4 (opcode: alloca)
  2570. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32* %1, i32** %5, align 8 (opcode: store)
  2571. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32 %2, i32* %6, align 4 (opcode: store)
  2572. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32 0, i32* %8, align 4 (opcode: store)
  2573. [DEBUG][performCodeFusion] Block %4 - Processing instruction: br label %target_phi_0 (opcode: br)
  2574. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_performSimpleCalculations
  2575. ```mermaid: fused_performSimpleCalculations
  2576. graph TD
  2577. entry["Block entry:\n br label %target_cond_0\n"]
  2578. entry --> target_cond_0
  2579. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  2580. target_cond_0 -->|true| 4
  2581. target_cond_0 -->|false| target_skip_0
  2582. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  2583. target_skip_0 --> target_phi_0
  2584. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  2585. target_phi_0 --> bunker_cond_0
  2586. 4["Block 4:\n %5 = alloca i32*, align 8\n %6 = alloca i32, align 4\n %7 = alloca [100 x i32], align 16\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = alloca i32, align 4\n store i32* %1, i32** %5, align 8\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  2587. 4 --> target_phi_0
  2588. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  2589. bunker_cond_0 -->|true| 14
  2590. bunker_cond_0 -->|false| bunker_skip_0
  2591. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  2592. bunker_skip_0 --> bunker_phi_0
  2593. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  2594. bunker_phi_0 --> target_cond_1
  2595. 14["Block 14:\n %15 = alloca i32, align 4\n store i32 100, i32* %15, align 4\n %16 = load i32, i32* %15, align 4\n %17 = icmp sgt i32 %16, 50\n br i1 %17, label %18, label %23\n"]
  2596. 14 -->|true| 18
  2597. 14 -->|false| 23
  2598. 18["Block 18:\n %19 = load i32, i32* %15, align 4\n %20 = mul nsw i32 %19, 2\n %21 = load i32, i32* @calculationResult, align 4\n %22 = add nsw i32 %21, %20\n store i32 %22, i32* @calculationResult, align 4\n br label %42\n"]
  2599. 18 --> 42
  2600. 23["Block 23:\n %24 = load i32, i32* %15, align 4\n %25 = sdiv i32 %24, 2\n %26 = load i32, i32* @calculationResult, align 4\n %27 = add nsw i32 %26, %25\n store i32 %27, i32* @calculationResult, align 4\n br label %bunker_phi_0\n"]
  2601. 23 --> bunker_phi_0
  2602. target_cond_1["Block target_cond_1:\n %28 = icmp eq i1 %0, true\n br i1 %28, label %29, label %target_skip_1\n"]
  2603. target_cond_1 -->|true| 29
  2604. target_cond_1 -->|false| target_skip_1
  2605. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  2606. target_skip_1 --> target_phi_1
  2607. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  2608. target_phi_1 --> bunker_cond_1
  2609. 29["Block 29:\n %30 = load i32, i32* %8, align 4\n %31 = load i32, i32* %6, align 4\n %32 = icmp slt i32 %30, %31\n br i1 %32, label %33, label %37\n"]
  2610. 29 -->|true| 33
  2611. 29 -->|false| 37
  2612. 33["Block 33:\n %34 = load i32, i32* %8, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n store i32 1, i32* %36, align 4\n br label %38\n"]
  2613. 33 --> 38
  2614. 37["Block 37:\n store i32 1, i32* %9, align 4\n br label %53\n"]
  2615. 37 --> 53
  2616. 38["Block 38:\n %39 = load i32, i32* %8, align 4\n %40 = add nsw i32 %39, 1\n store i32 %40, i32* %8, align 4\n br label %target_phi_1\n"]
  2617. 38 --> target_phi_1
  2618. bunker_cond_1["Block bunker_cond_1:\n %41 = icmp eq i1 %0, false\n br i1 %41, label %42, label %bunker_skip_1\n"]
  2619. bunker_cond_1 -->|true| 42
  2620. bunker_cond_1 -->|false| bunker_skip_1
  2621. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  2622. bunker_skip_1 --> bunker_phi_1
  2623. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  2624. bunker_phi_1 --> target_cond_2
  2625. 42["Block 42:\n %43 = load i32, i32* %15, align 4\n %44 = srem i32 %43, 3\n %45 = icmp eq i32 %44, 0\n br i1 %45, label %46, label %49\n"]
  2626. 42 -->|true| 46
  2627. 42 -->|false| 49
  2628. 46["Block 46:\n %47 = load i32, i32* @calculationResult, align 4\n %48 = mul nsw i32 %47, 3\n store i32 %48, i32* @calculationResult, align 4\n br label %104\n"]
  2629. 46 --> 104
  2630. 49["Block 49:\n %50 = load i32, i32* @calculationResult, align 4\n %51 = add nsw i32 %50, 3\n store i32 %51, i32* @calculationResult, align 4\n br label %bunker_phi_1\n"]
  2631. 49 --> bunker_phi_1
  2632. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  2633. target_cond_2 -->|true| 53
  2634. target_cond_2 -->|false| target_skip_2
  2635. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  2636. target_skip_2 --> target_phi_2
  2637. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  2638. target_phi_2 --> bunker_cond_2
  2639. 53["Block 53:\n %54 = load i32, i32* %9, align 4\n %55 = load i32, i32* %6, align 4\n %56 = icmp slt i32 %54, %55\n br i1 %56, label %57, label %58\n"]
  2640. 53 -->|true| 57
  2641. 53 -->|false| 58
  2642. 57["Block 57:\n store i32 0, i32* %10, align 4\n br label %59\n"]
  2643. 57 --> 59
  2644. 58["Block 58:\n store i32 0, i32* %11, align 4\n store i32 0, i32* %12, align 4\n br label %117\n"]
  2645. 58 --> 117
  2646. 59["Block 59:\n %60 = load i32, i32* %10, align 4\n %61 = load i32, i32* %9, align 4\n %62 = icmp slt i32 %60, %61\n br i1 %62, label %63, label %75\n"]
  2647. 59 -->|true| 63
  2648. 59 -->|false| 75
  2649. 63["Block 63:\n %64 = load i32*, i32** %5, align 8\n %65 = load i32, i32* %9, align 4\n %66 = sext i32 %65 to i64\n %67 = getelementptr inbounds i32, i32* %64, i...\n %68 = load i32, i32* %67, align 4\n %69 = load i32*, i32** %5, align 8\n %70 = load i32, i32* %10, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = icmp sgt i32 %68, %73\n br i1 %74, label %76, label %87\n"]
  2650. 63 -->|true| 76
  2651. 63 -->|false| 87
  2652. 75["Block 75:\n br label %88\n"]
  2653. 75 --> 88
  2654. 76["Block 76:\n %77 = load i32, i32* %9, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = load i32, i32* %10, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds [100 x i32], [10...\n %84 = load i32, i32* %83, align 4\n %85 = add nsw i32 %84, 1\n %86 = icmp slt i32 %80, %85\n br i1 %86, label %91, label %87\n"]
  2655. 76 -->|true| 91
  2656. 76 -->|false| 87
  2657. 87["Block 87:\n br label %100\n"]
  2658. 87 --> 100
  2659. 88["Block 88:\n %89 = load i32, i32* %9, align 4\n %90 = add nsw i32 %89, 1\n store i32 %90, i32* %9, align 4\n br label %53\n"]
  2660. 88 --> 53
  2661. 91["Block 91:\n %92 = load i32, i32* %10, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %94, align 4\n %96 = add nsw i32 %95, 1\n %97 = load i32, i32* %9, align 4\n %98 = sext i32 %97 to i64\n %99 = getelementptr inbounds [100 x i32], [10...\n store i32 %96, i32* %99, align 4\n br label %87\n"]
  2662. 91 --> 87
  2663. 100["Block 100:\n %101 = load i32, i32* %10, align 4\n %102 = add nsw i32 %101, 1\n store i32 %102, i32* %10, align 4\n br label %target_phi_2\n"]
  2664. 100 --> target_phi_2
  2665. bunker_cond_2["Block bunker_cond_2:\n %103 = icmp eq i1 %0, false\n br i1 %103, label %104, label %bunker_skip_2\n"]
  2666. bunker_cond_2 -->|true| 104
  2667. bunker_cond_2 -->|false| bunker_skip_2
  2668. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  2669. bunker_skip_2 --> bunker_phi_2
  2670. bunker_phi_2["Block bunker_phi_2:\n br label %target_cond_3\n"]
  2671. bunker_phi_2 --> target_cond_3
  2672. 104["Block 104:\n %105 = load i32, i32* @calculationResult, ali...\n %106 = icmp sge i32 %105, 150\n br i1 %106, label %107, label %113\n"]
  2673. 104 -->|true| 107
  2674. 104 -->|false| 113
  2675. 107["Block 107:\n %108 = load i32, i32* @calculationResult, ali...\n %109 = icmp sle i32 %108, 300\n br i1 %109, label %110, label %113\n"]
  2676. 107 -->|true| 110
  2677. 107 -->|false| 113
  2678. 110["Block 110:\n %111 = load i32, i32* @calculationResult, ali...\n %112 = sub nsw i32 %111, 50\n store i32 %112, i32* @calculationResult, align 4\n br label %140\n"]
  2679. 110 --> 140
  2680. 113["Block 113:\n %114 = load i32, i32* @calculationResult, ali...\n %115 = add nsw i32 %114, 50\n store i32 %115, i32* @calculationResult, align 4\n br label %bunker_phi_2\n"]
  2681. 113 --> bunker_phi_2
  2682. target_cond_3["Block target_cond_3:\n %116 = icmp eq i1 %0, true\n br i1 %116, label %117, label %target_skip_3\n"]
  2683. target_cond_3 -->|true| 117
  2684. target_cond_3 -->|false| target_skip_3
  2685. target_skip_3["Block target_skip_3:\n br label %target_phi_3\n"]
  2686. target_skip_3 --> target_phi_3
  2687. target_phi_3["Block target_phi_3:\n br label %bunker_cond_3\n"]
  2688. target_phi_3 --> bunker_cond_3
  2689. 117["Block 117:\n %118 = load i32, i32* %12, align 4\n %119 = load i32, i32* %6, align 4\n %120 = icmp slt i32 %118, %119\n br i1 %120, label %121, label %128\n"]
  2690. 117 -->|true| 121
  2691. 117 -->|false| 128
  2692. 121["Block 121:\n %122 = load i32, i32* %11, align 4\n %123 = load i32, i32* %12, align 4\n %124 = sext i32 %123 to i64\n %125 = getelementptr inbounds [100 x i32], [1...\n %126 = load i32, i32* %125, align 4\n %127 = icmp slt i32 %122, %126\n br i1 %127, label %130, label %135\n"]
  2693. 121 -->|true| 130
  2694. 121 -->|false| 135
  2695. 128["Block 128:\n %129 = load i32, i32* %11, align 4\n ret i32 %94\n"]
  2696. 130["Block 130:\n %131 = load i32, i32* %12, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds [100 x i32], [1...\n %134 = load i32, i32* %133, align 4\n store i32 %134, i32* %11, align 4\n br label %135\n"]
  2697. 130 --> 135
  2698. 135["Block 135:\n br label %136\n"]
  2699. 135 --> 136
  2700. 136["Block 136:\n %137 = load i32, i32* %12, align 4\n %138 = add nsw i32 %137, 1\n store i32 %138, i32* %12, align 4\n br label %target_phi_3\n"]
  2701. 136 --> target_phi_3
  2702. bunker_cond_3["Block bunker_cond_3:\n %139 = icmp eq i1 %0, false\n br i1 %139, label %140, label %bunker_skip_3\n"]
  2703. bunker_cond_3 -->|true| 140
  2704. bunker_cond_3 -->|false| bunker_skip_3
  2705. bunker_skip_3["Block bunker_skip_3:\n br label %bunker_phi_3\n"]
  2706. bunker_skip_3 --> bunker_phi_3
  2707. bunker_phi_3["Block bunker_phi_3:\n ret i32 0\n"]
  2708. 140["Block 140:\n %141 = load i32, i32* @calculationResult, ali...\n %142 = srem i32 %141, 2\n %143 = icmp eq i32 %142, 0\n br i1 %143, label %144, label %147\n"]
  2709. 140 -->|true| 144
  2710. 140 -->|false| 147
  2711. 144["Block 144:\n %145 = load i32, i32* @calculationResult, ali...\n %146 = sdiv i32 %145, 2\n store i32 %146, i32* @calculationResult, align 4\n br label %150\n"]
  2712. 144 --> 150
  2713. 147["Block 147:\n %148 = load i32, i32* @calculationResult, ali...\n %149 = mul nsw i32 %148, 2\n store i32 %149, i32* @calculationResult, align 4\n br label %150\n"]
  2714. 147 --> 150
  2715. 150["Block 150:\n %151 = load i32, i32* @calculationResult, ali...\n %152 = srem i32 %151, 10\n %153 = icmp slt i32 %152, 5\n br i1 %153, label %154, label %157\n"]
  2716. 150 -->|true| 154
  2717. 150 -->|false| 157
  2718. 154["Block 154:\n %155 = load i32, i32* @calculationResult, ali...\n %156 = add nsw i32 %155, 5\n store i32 %156, i32* @calculationResult, align 4\n br label %160\n"]
  2719. 154 --> 160
  2720. 157["Block 157:\n %158 = load i32, i32* @calculationResult, ali...\n %159 = sub nsw i32 %158, 5\n store i32 %159, i32* @calculationResult, align 4\n br label %160\n"]
  2721. 157 --> 160
  2722. 160["Block 160:\n %161 = load i32, i32* @calculationResult, ali...\n %162 = icmp sgt i32 %161, 1000\n br i1 %162, label %163, label %164\n"]
  2723. 160 -->|true| 163
  2724. 160 -->|false| 164
  2725. 163["Block 163:\n store i32 1000, i32* @calculationResult, align 4\n br label %167\n"]
  2726. 163 --> 167
  2727. 164["Block 164:\n %165 = load i32, i32* @calculationResult, ali...\n %166 = add nsw i32 %165, 10\n store i32 %166, i32* @calculationResult, align 4\n br label %167\n"]
  2728. 164 --> 167
  2729. 167["Block 167:\n %168 = load i32, i32* @calculationResult, ali...\n %169 = call i32 (i8*, ...) @printf(i8* getele...\n ret i32 0\n"]
  2730. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  2731. ```
  2732. [DEBUG][updateCallSite] Original call instruction:
  2733. call void @performSimpleCalculations()
  2734. [DEBUG][updateCallSite] Adding bunker control parameter
  2735. [DEBUG][updateCallSite] Adding original call parameters:
  2736. [DEBUG][updateCallSite] Adding default target parameters:
  2737. [DEBUG][updateCallSite] Parameter type: i32*
  2738. [DEBUG][updateCallSite] Parameter type: i32
  2739. [DEBUG][updateCallSite] New call instruction:
  2740. %322 = call i32 @fused_performSimpleCalculations(i1 false, i32* null, i32 0)
  2741. [DEBUG][updateCallSite] Void return type, no value processing needed
  2742. [INFO][updateCallSite] Successfully updated call site from call void @performSimpleCalculations() to %322 = call i32 @fused_performSimpleCalculations(i1 false, i32* null, i32 0)
  2743. [DEBUG][updateCallSite] Original call instruction:
  2744. %15 = call i32 @longestIncreasingSubsequence(i32* %13, i32 %14)
  2745. [DEBUG][updateCallSite] Adding target control parameter
  2746. [DEBUG][updateCallSite] Adding default bunker parameters:
  2747. [DEBUG][updateCallSite] Adding original call parameters:
  2748. [DEBUG][updateCallSite] Argument 0: type=i32*
  2749. [DEBUG][updateCallSite] Argument 1: type=i32
  2750. [DEBUG][updateCallSite] New call instruction:
  2751. %15 = call i32 @fused_performSimpleCalculations(i1 true, i32* %13, i32 %14)
  2752. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  2753. [DEBUG][updateCallSite] Using direct return value
  2754. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  2755. [INFO][updateCallSite] Successfully updated call site from %15 = call i32 @longestIncreasingSubsequence(i32* %13, i32 %14) to %15 = call i32 @fused_performSimpleCalculations(i1 true, i32* %13, i32 %14)
  2756. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_performSimpleCalculations
  2757. ```mermaid: fused_performSimpleCalculations
  2758. graph TD
  2759. entry["Block entry:\n br label %target_cond_0\n"]
  2760. entry --> target_cond_0
  2761. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  2762. target_cond_0 -->|true| 4
  2763. target_cond_0 -->|false| target_skip_0
  2764. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  2765. target_skip_0 --> target_phi_0
  2766. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  2767. target_phi_0 --> bunker_cond_0
  2768. 4["Block 4:\n %5 = alloca i32*, align 8\n %6 = alloca i32, align 4\n %7 = alloca [100 x i32], align 16\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = alloca i32, align 4\n store i32* %1, i32** %5, align 8\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  2769. 4 --> target_phi_0
  2770. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  2771. bunker_cond_0 -->|true| 14
  2772. bunker_cond_0 -->|false| bunker_skip_0
  2773. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  2774. bunker_skip_0 --> bunker_phi_0
  2775. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  2776. bunker_phi_0 --> target_cond_1
  2777. 14["Block 14:\n %15 = alloca i32, align 4\n store i32 100, i32* %15, align 4\n %16 = load i32, i32* %15, align 4\n %17 = icmp sgt i32 %16, 50\n br i1 %17, label %18, label %23\n"]
  2778. 14 -->|true| 18
  2779. 14 -->|false| 23
  2780. 18["Block 18:\n %19 = load i32, i32* %15, align 4\n %20 = mul nsw i32 %19, 2\n %21 = load i32, i32* @calculationResult, align 4\n %22 = add nsw i32 %21, %20\n store i32 %22, i32* @calculationResult, align 4\n br label %42\n"]
  2781. 18 --> 42
  2782. 23["Block 23:\n %24 = load i32, i32* %15, align 4\n %25 = sdiv i32 %24, 2\n %26 = load i32, i32* @calculationResult, align 4\n %27 = add nsw i32 %26, %25\n store i32 %27, i32* @calculationResult, align 4\n br label %bunker_phi_0\n"]
  2783. 23 --> bunker_phi_0
  2784. target_cond_1["Block target_cond_1:\n %28 = icmp eq i1 %0, true\n br i1 %28, label %29, label %target_skip_1\n"]
  2785. target_cond_1 -->|true| 29
  2786. target_cond_1 -->|false| target_skip_1
  2787. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  2788. target_skip_1 --> target_phi_1
  2789. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  2790. target_phi_1 --> bunker_cond_1
  2791. 29["Block 29:\n %30 = load i32, i32* %8, align 4\n %31 = load i32, i32* %6, align 4\n %32 = icmp slt i32 %30, %31\n br i1 %32, label %33, label %37\n"]
  2792. 29 -->|true| 33
  2793. 29 -->|false| 37
  2794. 33["Block 33:\n %34 = load i32, i32* %8, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n store i32 1, i32* %36, align 4\n br label %38\n"]
  2795. 33 --> 38
  2796. 37["Block 37:\n store i32 1, i32* %9, align 4\n br label %53\n"]
  2797. 37 --> 53
  2798. 38["Block 38:\n %39 = load i32, i32* %8, align 4\n %40 = add nsw i32 %39, 1\n store i32 %40, i32* %8, align 4\n br label %target_phi_1\n"]
  2799. 38 --> target_phi_1
  2800. bunker_cond_1["Block bunker_cond_1:\n %41 = icmp eq i1 %0, false\n br i1 %41, label %42, label %bunker_skip_1\n"]
  2801. bunker_cond_1 -->|true| 42
  2802. bunker_cond_1 -->|false| bunker_skip_1
  2803. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  2804. bunker_skip_1 --> bunker_phi_1
  2805. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  2806. bunker_phi_1 --> target_cond_2
  2807. 42["Block 42:\n %43 = load i32, i32* %15, align 4\n %44 = srem i32 %43, 3\n %45 = icmp eq i32 %44, 0\n br i1 %45, label %46, label %49\n"]
  2808. 42 -->|true| 46
  2809. 42 -->|false| 49
  2810. 46["Block 46:\n %47 = load i32, i32* @calculationResult, align 4\n %48 = mul nsw i32 %47, 3\n store i32 %48, i32* @calculationResult, align 4\n br label %104\n"]
  2811. 46 --> 104
  2812. 49["Block 49:\n %50 = load i32, i32* @calculationResult, align 4\n %51 = add nsw i32 %50, 3\n store i32 %51, i32* @calculationResult, align 4\n br label %bunker_phi_1\n"]
  2813. 49 --> bunker_phi_1
  2814. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  2815. target_cond_2 -->|true| 53
  2816. target_cond_2 -->|false| target_skip_2
  2817. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  2818. target_skip_2 --> target_phi_2
  2819. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  2820. target_phi_2 --> bunker_cond_2
  2821. 53["Block 53:\n %54 = load i32, i32* %9, align 4\n %55 = load i32, i32* %6, align 4\n %56 = icmp slt i32 %54, %55\n br i1 %56, label %57, label %58\n"]
  2822. 53 -->|true| 57
  2823. 53 -->|false| 58
  2824. 57["Block 57:\n store i32 0, i32* %10, align 4\n br label %59\n"]
  2825. 57 --> 59
  2826. 58["Block 58:\n store i32 0, i32* %11, align 4\n store i32 0, i32* %12, align 4\n br label %117\n"]
  2827. 58 --> 117
  2828. 59["Block 59:\n %60 = load i32, i32* %10, align 4\n %61 = load i32, i32* %9, align 4\n %62 = icmp slt i32 %60, %61\n br i1 %62, label %63, label %75\n"]
  2829. 59 -->|true| 63
  2830. 59 -->|false| 75
  2831. 63["Block 63:\n %64 = load i32*, i32** %5, align 8\n %65 = load i32, i32* %9, align 4\n %66 = sext i32 %65 to i64\n %67 = getelementptr inbounds i32, i32* %64, i...\n %68 = load i32, i32* %67, align 4\n %69 = load i32*, i32** %5, align 8\n %70 = load i32, i32* %10, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = icmp sgt i32 %68, %73\n br i1 %74, label %76, label %87\n"]
  2832. 63 -->|true| 76
  2833. 63 -->|false| 87
  2834. 75["Block 75:\n br label %88\n"]
  2835. 75 --> 88
  2836. 76["Block 76:\n %77 = load i32, i32* %9, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = load i32, i32* %10, align 4\n %82 = sext i32 %81 to i64\n %83 = getelementptr inbounds [100 x i32], [10...\n %84 = load i32, i32* %83, align 4\n %85 = add nsw i32 %84, 1\n %86 = icmp slt i32 %80, %85\n br i1 %86, label %91, label %87\n"]
  2837. 76 -->|true| 91
  2838. 76 -->|false| 87
  2839. 87["Block 87:\n br label %100\n"]
  2840. 87 --> 100
  2841. 88["Block 88:\n %89 = load i32, i32* %9, align 4\n %90 = add nsw i32 %89, 1\n store i32 %90, i32* %9, align 4\n br label %53\n"]
  2842. 88 --> 53
  2843. 91["Block 91:\n %92 = load i32, i32* %10, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %94, align 4\n %96 = add nsw i32 %95, 1\n %97 = load i32, i32* %9, align 4\n %98 = sext i32 %97 to i64\n %99 = getelementptr inbounds [100 x i32], [10...\n store i32 %96, i32* %99, align 4\n br label %87\n"]
  2844. 91 --> 87
  2845. 100["Block 100:\n %101 = load i32, i32* %10, align 4\n %102 = add nsw i32 %101, 1\n store i32 %102, i32* %10, align 4\n br label %target_phi_2\n"]
  2846. 100 --> target_phi_2
  2847. bunker_cond_2["Block bunker_cond_2:\n %103 = icmp eq i1 %0, false\n br i1 %103, label %104, label %bunker_skip_2\n"]
  2848. bunker_cond_2 -->|true| 104
  2849. bunker_cond_2 -->|false| bunker_skip_2
  2850. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  2851. bunker_skip_2 --> bunker_phi_2
  2852. bunker_phi_2["Block bunker_phi_2:\n br label %target_cond_3\n"]
  2853. bunker_phi_2 --> target_cond_3
  2854. 104["Block 104:\n %105 = load i32, i32* @calculationResult, ali...\n %106 = icmp sge i32 %105, 150\n br i1 %106, label %107, label %113\n"]
  2855. 104 -->|true| 107
  2856. 104 -->|false| 113
  2857. 107["Block 107:\n %108 = load i32, i32* @calculationResult, ali...\n %109 = icmp sle i32 %108, 300\n br i1 %109, label %110, label %113\n"]
  2858. 107 -->|true| 110
  2859. 107 -->|false| 113
  2860. 110["Block 110:\n %111 = load i32, i32* @calculationResult, ali...\n %112 = sub nsw i32 %111, 50\n store i32 %112, i32* @calculationResult, align 4\n br label %140\n"]
  2861. 110 --> 140
  2862. 113["Block 113:\n %114 = load i32, i32* @calculationResult, ali...\n %115 = add nsw i32 %114, 50\n store i32 %115, i32* @calculationResult, align 4\n br label %bunker_phi_2\n"]
  2863. 113 --> bunker_phi_2
  2864. target_cond_3["Block target_cond_3:\n %116 = icmp eq i1 %0, true\n br i1 %116, label %117, label %target_skip_3\n"]
  2865. target_cond_3 -->|true| 117
  2866. target_cond_3 -->|false| target_skip_3
  2867. target_skip_3["Block target_skip_3:\n br label %target_phi_3\n"]
  2868. target_skip_3 --> target_phi_3
  2869. target_phi_3["Block target_phi_3:\n br label %bunker_cond_3\n"]
  2870. target_phi_3 --> bunker_cond_3
  2871. 117["Block 117:\n %118 = load i32, i32* %12, align 4\n %119 = load i32, i32* %6, align 4\n %120 = icmp slt i32 %118, %119\n br i1 %120, label %121, label %128\n"]
  2872. 117 -->|true| 121
  2873. 117 -->|false| 128
  2874. 121["Block 121:\n %122 = load i32, i32* %11, align 4\n %123 = load i32, i32* %12, align 4\n %124 = sext i32 %123 to i64\n %125 = getelementptr inbounds [100 x i32], [1...\n %126 = load i32, i32* %125, align 4\n %127 = icmp slt i32 %122, %126\n br i1 %127, label %130, label %135\n"]
  2875. 121 -->|true| 130
  2876. 121 -->|false| 135
  2877. 128["Block 128:\n %129 = load i32, i32* %11, align 4\n ret i32 <badref>\n"]
  2878. 130["Block 130:\n %131 = load i32, i32* %12, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds [100 x i32], [1...\n %134 = load i32, i32* %133, align 4\n store i32 %134, i32* %11, align 4\n br label %135\n"]
  2879. 130 --> 135
  2880. 135["Block 135:\n br label %136\n"]
  2881. 135 --> 136
  2882. 136["Block 136:\n %137 = load i32, i32* %12, align 4\n %138 = add nsw i32 %137, 1\n store i32 %138, i32* %12, align 4\n br label %target_phi_3\n"]
  2883. 136 --> target_phi_3
  2884. bunker_cond_3["Block bunker_cond_3:\n %139 = icmp eq i1 %0, false\n br i1 %139, label %140, label %bunker_skip_3\n"]
  2885. bunker_cond_3 -->|true| 140
  2886. bunker_cond_3 -->|false| bunker_skip_3
  2887. bunker_skip_3["Block bunker_skip_3:\n br label %bunker_phi_3\n"]
  2888. bunker_skip_3 --> bunker_phi_3
  2889. bunker_phi_3["Block bunker_phi_3:\n ret i32 0\n"]
  2890. 140["Block 140:\n %141 = load i32, i32* @calculationResult, ali...\n %142 = srem i32 %141, 2\n %143 = icmp eq i32 %142, 0\n br i1 %143, label %144, label %147\n"]
  2891. 140 -->|true| 144
  2892. 140 -->|false| 147
  2893. 144["Block 144:\n %145 = load i32, i32* @calculationResult, ali...\n %146 = sdiv i32 %145, 2\n store i32 %146, i32* @calculationResult, align 4\n br label %150\n"]
  2894. 144 --> 150
  2895. 147["Block 147:\n %148 = load i32, i32* @calculationResult, ali...\n %149 = mul nsw i32 %148, 2\n store i32 %149, i32* @calculationResult, align 4\n br label %150\n"]
  2896. 147 --> 150
  2897. 150["Block 150:\n %151 = load i32, i32* @calculationResult, ali...\n %152 = srem i32 %151, 10\n %153 = icmp slt i32 %152, 5\n br i1 %153, label %154, label %157\n"]
  2898. 150 -->|true| 154
  2899. 150 -->|false| 157
  2900. 154["Block 154:\n %155 = load i32, i32* @calculationResult, ali...\n %156 = add nsw i32 %155, 5\n store i32 %156, i32* @calculationResult, align 4\n br label %160\n"]
  2901. 154 --> 160
  2902. 157["Block 157:\n %158 = load i32, i32* @calculationResult, ali...\n %159 = sub nsw i32 %158, 5\n store i32 %159, i32* @calculationResult, align 4\n br label %160\n"]
  2903. 157 --> 160
  2904. 160["Block 160:\n %161 = load i32, i32* @calculationResult, ali...\n %162 = icmp sgt i32 %161, 1000\n br i1 %162, label %163, label %164\n"]
  2905. 160 -->|true| 163
  2906. 160 -->|false| 164
  2907. 163["Block 163:\n store i32 1000, i32* @calculationResult, align 4\n br label %167\n"]
  2908. 163 --> 167
  2909. 164["Block 164:\n %165 = load i32, i32* @calculationResult, ali...\n %166 = add nsw i32 %165, 10\n store i32 %166, i32* @calculationResult, align 4\n br label %167\n"]
  2910. 164 --> 167
  2911. 167["Block 167:\n %168 = load i32, i32* @calculationResult, ali...\n %169 = call i32 (i8*, ...) @printf(i8* getele...\n ret i32 0\n"]
  2912. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  2913. ```
  2914. [INFO][performCodeFusion] Completed function fusion: fused_performSimpleCalculations
  2915. [INFO][performCodeFusion] Processing function pair: target=memoizedFib, bunker=projectA_main
  2916. [INFO][performCodeFusion] adding: %3
  2917. [INFO][performCodeFusion] adding: %11
  2918. [INFO][performCodeFusion] adding: %16
  2919. [INFO][performCodeFusion] adding: %19
  2920. [INFO][performCodeFusion] adding: %21
  2921. [INFO][performCodeFusion] adding: %23
  2922. [INFO][performCodeFusion] before push Block ID: %3
  2923. [INFO][performCodeFusion] before push Block ID: %11
  2924. [INFO][performCodeFusion] before push Block ID: %16
  2925. [INFO][performCodeFusion] before push Block ID: %19
  2926. [INFO][performCodeFusion] before push Block ID: %21
  2927. [INFO][performCodeFusion] before push Block ID: %23
  2928. [DEBUG][performCodeFusion] Processing PHI incoming block %251 in block %298
  2929. [DEBUG][performCodeFusion] Processing PHI incoming block %254 in block %298
  2930. [DEBUG][performCodeFusion] Processing PHI incoming block %280 in block %326
  2931. [DEBUG][performCodeFusion] Processing PHI incoming block %283 in block %326
  2932. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_projectA_main
  2933. ```mermaid: fused_projectA_main
  2934. graph TD
  2935. entry["Block entry:\n br label %target_cond_0\n"]
  2936. entry --> target_cond_0
  2937. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  2938. target_cond_0 -->|true| 3
  2939. target_cond_0 -->|false| target_skip_0
  2940. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  2941. target_skip_0 --> target_phi_0
  2942. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  2943. target_phi_0 --> bunker_cond_0
  2944. 3["Block 3:\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store i32 %1, i32* %5, align 4\n %6 = load i32, i32* %5, align 4\n %7 = sext i32 %6 to i64\n %8 = getelementptr inbounds [100 x i32], [100...\n %9 = load i32, i32* %8, align 4\n %10 = icmp ne i32 %9, -1\n br i1 %10, label %11, label %16\n"]
  2945. 3 -->|true| 11
  2946. 3 -->|false| 16
  2947. 11["Block 11:\n %12 = load i32, i32* %5, align 4\n %13 = sext i32 %12 to i64\n %14 = getelementptr inbounds [100 x i32], [10...\n %15 = load i32, i32* %14, align 4\n store i32 %15, i32* %4, align 4\n br label %19\n"]
  2948. 11 --> 19
  2949. 16["Block 16:\n %17 = load i32, i32* %5, align 4\n %18 = icmp sle i32 %17, 1\n br i1 %18, label %21, label %23\n"]
  2950. 16 -->|true| 21
  2951. 16 -->|false| 23
  2952. 19["Block 19:\n %20 = load i32, i32* %4, align 4\n ret i32 %35\n"]
  2953. 21["Block 21:\n %22 = load i32, i32* %5, align 4\n store i32 %22, i32* %4, align 4\n br label %19\n"]
  2954. 21 --> 19
  2955. 23["Block 23:\n %24 = load i32, i32* %5, align 4\n %25 = sub nsw i32 %24, 1\n %26 = call i32 @memoizedFib(i32 %25)\n %27 = load i32, i32* %5, align 4\n %28 = sub nsw i32 %27, 2\n %29 = call i32 @memoizedFib(i32 %28)\n %30 = add nsw i32 %26, %29\n %31 = load i32, i32* %5, align 4\n %32 = sext i32 %31 to i64\n %33 = getelementptr inbounds [100 x i32], [10...\n store i32 %30, i32* %33, align 4\n %34 = load i32, i32* %5, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n %37 = load i32, i32* %36, align 4\n store i32 %37, i32* %4, align 4\n br label %target_phi_0\n"]
  2956. 23 --> target_phi_0
  2957. bunker_cond_0["Block bunker_cond_0:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_0\n"]
  2958. bunker_cond_0 -->|true| 39
  2959. bunker_cond_0 -->|false| bunker_skip_0
  2960. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  2961. bunker_skip_0 --> bunker_phi_0
  2962. bunker_phi_0["Block bunker_phi_0:\n ret %fused_return_projectA_main_memoizedFib z...\n"]
  2963. 39["Block 39:\n %40 = alloca i32, align 4\n %41 = alloca %struct.DynamicArray*, align 8\n %42 = alloca i32, align 4\n %43 = alloca %struct.Matrix*, align 8\n %44 = alloca %struct.Matrix*, align 8\n %45 = alloca i32, align 4\n %46 = alloca i32, align 4\n %47 = alloca %struct.Matrix*, align 8\n %48 = alloca i32, align 4\n %49 = alloca %struct.Node*, align 8\n %50 = alloca i32, align 4\n %51 = alloca i32, align 4\n %52 = alloca %struct.Node*, align 8\n %53 = alloca %struct.Node*, align 8\n %54 = alloca i32, align 4\n %55 = alloca %struct.Node*, align 8\n %56 = alloca i32, align 4\n %57 = alloca i32, align 4\n %58 = alloca %struct.Node*, align 8\n %59 = call i64 @time(i64* null) #7\n %60 = trunc i64 %59 to i32\n call void @srand(i32 %60) #7\n %61 = call %struct.DynamicArray* @createDynam...\n store %struct.DynamicArray* %61, %struct.Dyna...\n %62 = load %struct.DynamicArray*, %struct.Dyn...\n %63 = icmp ne %struct.DynamicArray* %62, null\n br i1 %63, label %67, label %64\n"]
  2964. 39 -->|true| 67
  2965. 39 -->|false| 64
  2966. 64["Block 64:\n %65 = call i8* @getErrorMessage()\n %66 = call i32 (i8*, ...) @printf(i8* getelem...\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  2967. 64 --> 362
  2968. 67["Block 67:\n store i32 0, i32* %42, align 4\n br label %68\n"]
  2969. 67 --> 68
  2970. 68["Block 68:\n %69 = load i32, i32* %42, align 4\n %70 = icmp slt i32 %69, 15\n br i1 %70, label %71, label %84\n"]
  2971. 68 -->|true| 71
  2972. 68 -->|false| 84
  2973. 71["Block 71:\n %72 = load %struct.DynamicArray*, %struct.Dyn...\n %73 = call i32 @rand() #7\n %74 = srem i32 %73, 100\n call void @pushBack(%struct.DynamicArray* %72...\n %75 = load i8*, i8** @globalErrorMessage, ali...\n %76 = icmp ne i8* %75, null\n br i1 %76, label %77, label %80\n"]
  2974. 71 -->|true| 77
  2975. 71 -->|false| 80
  2976. 77["Block 77:\n %78 = call i8* @getErrorMessage()\n %79 = call i32 (i8*, ...) @printf(i8* getelem...\n br label %84\n"]
  2977. 77 --> 84
  2978. 80["Block 80:\n br label %81\n"]
  2979. 80 --> 81
  2980. 81["Block 81:\n %82 = load i32, i32* %42, align 4\n %83 = add nsw i32 %82, 1\n store i32 %83, i32* %42, align 4\n br label %68\n"]
  2981. 81 --> 68
  2982. 84["Block 84:\n %85 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %85, %struct.Matrix** %...\n %86 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %86, %struct.Matrix** %...\n %87 = load %struct.Matrix*, %struct.Matrix** ...\n %88 = icmp ne %struct.Matrix* %87, null\n br i1 %88, label %89, label %92\n"]
  2983. 84 -->|true| 89
  2984. 84 -->|false| 92
  2985. 89["Block 89:\n %90 = load %struct.Matrix*, %struct.Matrix** ...\n %91 = icmp ne %struct.Matrix* %90, null\n br i1 %91, label %113, label %92\n"]
  2986. 89 -->|true| 113
  2987. 89 -->|false| 92
  2988. 92["Block 92:\n %93 = call i8* @getErrorMessage()\n %94 = call i32 (i8*, ...) @printf(i8* getelem...\n %95 = load %struct.Matrix*, %struct.Matrix** ...\n %96 = icmp ne %struct.Matrix* %95, null\n br i1 %96, label %97, label %100\n"]
  2989. 92 -->|true| 97
  2990. 92 -->|false| 100
  2991. 97["Block 97:\n %98 = load %struct.Matrix*, %struct.Matrix** ...\n %99 = bitcast %struct.Matrix* %98 to i8*\n call void @free(i8* %99) #7\n br label %100\n"]
  2992. 97 --> 100
  2993. 100["Block 100:\n %101 = load %struct.Matrix*, %struct.Matrix**...\n %102 = icmp ne %struct.Matrix* %101, null\n br i1 %102, label %103, label %106\n"]
  2994. 100 -->|true| 103
  2995. 100 -->|false| 106
  2996. 103["Block 103:\n %104 = load %struct.Matrix*, %struct.Matrix**...\n %105 = bitcast %struct.Matrix* %104 to i8*\n call void @free(i8* %105) #7\n br label %106\n"]
  2997. 103 --> 106
  2998. 106["Block 106:\n %107 = load %struct.DynamicArray*, %struct.Dy...\n %108 = getelementptr inbounds %struct.Dynamic...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #7\n %111 = load %struct.DynamicArray*, %struct.Dy...\n %112 = bitcast %struct.DynamicArray* %111 to i8*\n call void @free(i8* %112) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  2999. 106 --> 362
  3000. 113["Block 113:\n store i32 0, i32* %45, align 4\n br label %114\n"]
  3001. 113 --> 114
  3002. 114["Block 114:\n %115 = load i32, i32* %45, align 4\n %116 = icmp slt i32 %115, 3\n br i1 %116, label %117, label %153\n"]
  3003. 114 -->|true| 117
  3004. 114 -->|false| 153
  3005. 117["Block 117:\n store i32 0, i32* %46, align 4\n br label %118\n"]
  3006. 117 --> 118
  3007. 118["Block 118:\n %119 = load i32, i32* %46, align 4\n %120 = icmp slt i32 %119, 3\n br i1 %120, label %121, label %149\n"]
  3008. 118 -->|true| 121
  3009. 118 -->|false| 149
  3010. 121["Block 121:\n %122 = call i32 @rand() #7\n %123 = srem i32 %122, 10\n %124 = load %struct.Matrix*, %struct.Matrix**...\n %125 = getelementptr inbounds %struct.Matrix,...\n %126 = load i32**, i32*** %125, align 8\n %127 = load i32, i32* %45, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32*, i32** %12...\n %130 = load i32*, i32** %129, align 8\n %131 = load i32, i32* %46, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds i32, i32* %130,...\n store i32 %123, i32* %133, align 4\n %134 = call i32 @rand() #7\n %135 = srem i32 %134, 10\n %136 = load %struct.Matrix*, %struct.Matrix**...\n %137 = getelementptr inbounds %struct.Matrix,...\n %138 = load i32**, i32*** %137, align 8\n %139 = load i32, i32* %45, align 4\n %140 = sext i32 %139 to i64\n %141 = getelementptr inbounds i32*, i32** %13...\n %142 = load i32*, i32** %141, align 8\n %143 = load i32, i32* %46, align 4\n %144 = sext i32 %143 to i64\n %145 = getelementptr inbounds i32, i32* %142,...\n store i32 %135, i32* %145, align 4\n br label %146\n"]
  3011. 121 --> 146
  3012. 146["Block 146:\n %147 = load i32, i32* %46, align 4\n %148 = add nsw i32 %147, 1\n store i32 %148, i32* %46, align 4\n br label %118\n"]
  3013. 146 --> 118
  3014. 149["Block 149:\n br label %150\n"]
  3015. 149 --> 150
  3016. 150["Block 150:\n %151 = load i32, i32* %45, align 4\n %152 = add nsw i32 %151, 1\n store i32 %152, i32* %45, align 4\n br label %114\n"]
  3017. 150 --> 114
  3018. 153["Block 153:\n %154 = load %struct.Matrix*, %struct.Matrix**...\n %155 = load %struct.Matrix*, %struct.Matrix**...\n %156 = call %struct.Matrix* @multiplyMatrices...\n store %struct.Matrix* %156, %struct.Matrix** ...\n %157 = load %struct.Matrix*, %struct.Matrix**...\n %158 = icmp ne %struct.Matrix* %157, null\n br i1 %158, label %207, label %159\n"]
  3019. 153 -->|true| 207
  3020. 153 -->|false| 159
  3021. 159["Block 159:\n %160 = call i8* @getErrorMessage()\n %161 = call i32 (i8*, ...) @printf(i8* getele...\n store i32 0, i32* %48, align 4\n br label %162\n"]
  3022. 159 --> 162
  3023. 162["Block 162:\n %163 = load i32, i32* %48, align 4\n %164 = load %struct.Matrix*, %struct.Matrix**...\n %165 = getelementptr inbounds %struct.Matrix,...\n %166 = load i32, i32* %165, align 8\n %167 = icmp slt i32 %163, %166\n br i1 %167, label %168, label %188\n"]
  3024. 162 -->|true| 168
  3025. 162 -->|false| 188
  3026. 168["Block 168:\n %169 = load %struct.Matrix*, %struct.Matrix**...\n %170 = getelementptr inbounds %struct.Matrix,...\n %171 = load i32**, i32*** %170, align 8\n %172 = load i32, i32* %48, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32*, i32** %17...\n %175 = load i32*, i32** %174, align 8\n %176 = bitcast i32* %175 to i8*\n call void @free(i8* %176) #7\n %177 = load %struct.Matrix*, %struct.Matrix**...\n %178 = getelementptr inbounds %struct.Matrix,...\n %179 = load i32**, i32*** %178, align 8\n %180 = load i32, i32* %48, align 4\n %181 = sext i32 %180 to i64\n %182 = getelementptr inbounds i32*, i32** %17...\n %183 = load i32*, i32** %182, align 8\n %184 = bitcast i32* %183 to i8*\n call void @free(i8* %184) #7\n br label %185\n"]
  3027. 168 --> 185
  3028. 185["Block 185:\n %186 = load i32, i32* %48, align 4\n %187 = add nsw i32 %186, 1\n store i32 %187, i32* %48, align 4\n br label %162\n"]
  3029. 185 --> 162
  3030. 188["Block 188:\n %189 = load %struct.Matrix*, %struct.Matrix**...\n %190 = getelementptr inbounds %struct.Matrix,...\n %191 = load i32**, i32*** %190, align 8\n %192 = bitcast i32** %191 to i8*\n call void @free(i8* %192) #7\n %193 = load %struct.Matrix*, %struct.Matrix**...\n %194 = getelementptr inbounds %struct.Matrix,...\n %195 = load i32**, i32*** %194, align 8\n %196 = bitcast i32** %195 to i8*\n call void @free(i8* %196) #7\n %197 = load %struct.Matrix*, %struct.Matrix**...\n %198 = bitcast %struct.Matrix* %197 to i8*\n call void @free(i8* %198) #7\n %199 = load %struct.Matrix*, %struct.Matrix**...\n %200 = bitcast %struct.Matrix* %199 to i8*\n call void @free(i8* %200) #7\n %201 = load %struct.DynamicArray*, %struct.Dy...\n %202 = getelementptr inbounds %struct.Dynamic...\n %203 = load i32*, i32** %202, align 8\n %204 = bitcast i32* %203 to i8*\n call void @free(i8* %204) #7\n %205 = load %struct.DynamicArray*, %struct.Dy...\n %206 = bitcast %struct.DynamicArray* %205 to i8*\n call void @free(i8* %206) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3031. 188 --> 362
  3032. 207["Block 207:\n store %struct.Node* null, %struct.Node** %49,...\n store i32 0, i32* %50, align 4\n br label %208\n"]
  3033. 207 --> 208
  3034. 208["Block 208:\n %209 = load i32, i32* %50, align 4\n %210 = icmp slt i32 %209, 5\n br i1 %210, label %211, label %225\n"]
  3035. 208 -->|true| 211
  3036. 208 -->|false| 225
  3037. 211["Block 211:\n %212 = load %struct.Node*, %struct.Node** %49...\n %213 = call i32 @rand() #7\n %214 = srem i32 %213, 50\n %215 = call %struct.Node* @insertNode(%struct...\n store %struct.Node* %215, %struct.Node** %49,...\n %216 = load i8*, i8** @globalErrorMessage, al...\n %217 = icmp ne i8* %216, null\n br i1 %217, label %218, label %221\n"]
  3038. 211 -->|true| 218
  3039. 211 -->|false| 221
  3040. 218["Block 218:\n %219 = call i8* @getErrorMessage()\n %220 = call i32 (i8*, ...) @printf(i8* getele...\n br label %225\n"]
  3041. 218 --> 225
  3042. 221["Block 221:\n br label %222\n"]
  3043. 221 --> 222
  3044. 222["Block 222:\n %223 = load i32, i32* %50, align 4\n %224 = add nsw i32 %223, 1\n store i32 %224, i32* %50, align 4\n br label %208\n"]
  3045. 222 --> 208
  3046. 225["Block 225:\n %226 = load %struct.DynamicArray*, %struct.Dy...\n %227 = getelementptr inbounds %struct.Dynamic...\n %228 = load i32*, i32** %227, align 8\n %229 = bitcast i32* %228 to i8*\n call void @free(i8* %229) #7\n %230 = load %struct.DynamicArray*, %struct.Dy...\n %231 = bitcast %struct.DynamicArray* %230 to i8*\n call void @free(i8* %231) #7\n store i32 0, i32* %51, align 4\n br label %232\n"]
  3047. 225 --> 232
  3048. 232["Block 232:\n %233 = load i32, i32* %51, align 4\n %234 = load %struct.Matrix*, %struct.Matrix**...\n %235 = getelementptr inbounds %struct.Matrix,...\n %236 = load i32, i32* %235, align 8\n %237 = icmp slt i32 %233, %236\n br i1 %237, label %238, label %266\n"]
  3049. 232 -->|true| 238
  3050. 232 -->|false| 266
  3051. 238["Block 238:\n %239 = load %struct.Matrix*, %struct.Matrix**...\n %240 = getelementptr inbounds %struct.Matrix,...\n %241 = load i32**, i32*** %240, align 8\n %242 = load i32, i32* %51, align 4\n %243 = sext i32 %242 to i64\n %244 = getelementptr inbounds i32*, i32** %24...\n %245 = load i32*, i32** %244, align 8\n %246 = bitcast i32* %245 to i8*\n call void @free(i8* %246) #7\n %247 = load %struct.Matrix*, %struct.Matrix**...\n %248 = getelementptr inbounds %struct.Matrix,...\n %249 = load i32**, i32*** %248, align 8\n %250 = load i32, i32* %51, align 4\n %251 = sext i32 %250 to i64\n %252 = getelementptr inbounds i32*, i32** %24...\n %253 = load i32*, i32** %252, align 8\n %254 = bitcast i32* %253 to i8*\n call void @free(i8* %254) #7\n %255 = load %struct.Matrix*, %struct.Matrix**...\n %256 = getelementptr inbounds %struct.Matrix,...\n %257 = load i32**, i32*** %256, align 8\n %258 = load i32, i32* %51, align 4\n %259 = sext i32 %258 to i64\n %260 = getelementptr inbounds i32*, i32** %25...\n %261 = load i32*, i32** %260, align 8\n %262 = bitcast i32* %261 to i8*\n call void @free(i8* %262) #7\n br label %263\n"]
  3052. 238 --> 263
  3053. 263["Block 263:\n %264 = load i32, i32* %51, align 4\n %265 = add nsw i32 %264, 1\n store i32 %265, i32* %51, align 4\n br label %232\n"]
  3054. 263 --> 232
  3055. 266["Block 266:\n %267 = load %struct.Matrix*, %struct.Matrix**...\n %268 = getelementptr inbounds %struct.Matrix,...\n %269 = load i32**, i32*** %268, align 8\n %270 = bitcast i32** %269 to i8*\n call void @free(i8* %270) #7\n %271 = load %struct.Matrix*, %struct.Matrix**...\n %272 = getelementptr inbounds %struct.Matrix,...\n %273 = load i32**, i32*** %272, align 8\n %274 = bitcast i32** %273 to i8*\n call void @free(i8* %274) #7\n %275 = load %struct.Matrix*, %struct.Matrix**...\n %276 = getelementptr inbounds %struct.Matrix,...\n %277 = load i32**, i32*** %276, align 8\n %278 = bitcast i32** %277 to i8*\n call void @free(i8* %278) #7\n %279 = load %struct.Matrix*, %struct.Matrix**...\n %280 = bitcast %struct.Matrix* %279 to i8*\n call void @free(i8* %280) #7\n %281 = load %struct.Matrix*, %struct.Matrix**...\n %282 = bitcast %struct.Matrix* %281 to i8*\n call void @free(i8* %282) #7\n %283 = load %struct.Matrix*, %struct.Matrix**...\n %284 = bitcast %struct.Matrix* %283 to i8*\n call void @free(i8* %284) #7\n %285 = load %struct.Node*, %struct.Node** %49...\n %286 = icmp ne %struct.Node* %285, null\n br i1 %286, label %287, label %355\n"]
  3056. 266 -->|true| 287
  3057. 266 -->|false| 355
  3058. 287["Block 287:\n %288 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %288, %struct.Node** %52,...\n %289 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %289, %struct.Node** %53,...\n store i32 0, i32* %54, align 4\n br label %290\n"]
  3059. 287 --> 290
  3060. 290["Block 290:\n %291 = load %struct.Node*, %struct.Node** %53...\n %292 = icmp ne %struct.Node* %291, null\n br i1 %292, label %293, label %298\n"]
  3061. 290 -->|true| 293
  3062. 290 -->|false| 298
  3063. 293["Block 293:\n %294 = load %struct.Node*, %struct.Node** %53...\n %295 = getelementptr inbounds %struct.Node, %...\n %296 = load %struct.Node*, %struct.Node** %29...\n %297 = icmp ne %struct.Node* %296, null\n br label %298\n"]
  3064. 293 --> 298
  3065. 298["Block 298:\n %299 = phi i1 [ false, %290 ], [ %297, %293 ]\n br i1 %299, label %300, label %314\n"]
  3066. 298 -->|true| 300
  3067. 298 -->|false| 314
  3068. 300["Block 300:\n %301 = load %struct.Node*, %struct.Node** %52...\n %302 = getelementptr inbounds %struct.Node, %...\n %303 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %303, %struct.Node** %52,...\n %304 = load %struct.Node*, %struct.Node** %53...\n %305 = getelementptr inbounds %struct.Node, %...\n %306 = load %struct.Node*, %struct.Node** %30...\n %307 = getelementptr inbounds %struct.Node, %...\n %308 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %308, %struct.Node** %53,...\n %309 = load %struct.Node*, %struct.Node** %52...\n %310 = load %struct.Node*, %struct.Node** %53...\n %311 = icmp eq %struct.Node* %309, %310\n br i1 %311, label %312, label %313\n"]
  3069. 300 -->|true| 312
  3070. 300 -->|false| 313
  3071. 312["Block 312:\n store i32 1, i32* %54, align 4\n br label %314\n"]
  3072. 312 --> 314
  3073. 313["Block 313:\n br label %290\n"]
  3074. 313 --> 290
  3075. 314["Block 314:\n %315 = load i32, i32* %54, align 4\n %316 = icmp ne i32 %315, 0\n br i1 %316, label %317, label %343\n"]
  3076. 314 -->|true| 317
  3077. 314 -->|false| 343
  3078. 317["Block 317:\n call void @setErrorMessage(i8* getelementptr ...\n %318 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %318, %struct.Node** %55,...\n store i32 1000, i32* %56, align 4\n store i32 0, i32* %57, align 4\n br label %319\n"]
  3079. 317 --> 319
  3080. 319["Block 319:\n %320 = load %struct.Node*, %struct.Node** %55...\n %321 = icmp ne %struct.Node* %320, null\n br i1 %321, label %322, label %326\n"]
  3081. 319 -->|true| 322
  3082. 319 -->|false| 326
  3083. 322["Block 322:\n %323 = load i32, i32* %57, align 4\n %324 = load i32, i32* %56, align 4\n %325 = icmp slt i32 %323, %324\n br label %326\n"]
  3084. 322 --> 326
  3085. 326["Block 326:\n %327 = phi i1 [ false, %319 ], [ %325, %322 ]\n br i1 %327, label %328, label %342\n"]
  3086. 326 -->|true| 328
  3087. 326 -->|false| 342
  3088. 328["Block 328:\n %329 = load %struct.Node*, %struct.Node** %55...\n %330 = getelementptr inbounds %struct.Node, %...\n %331 = load i32, i32* %330, align 8\n %332 = icmp ne i32 %331, 0\n br i1 %332, label %333, label %334\n"]
  3089. 328 -->|true| 333
  3090. 328 -->|false| 334
  3091. 333["Block 333:\n br label %342\n"]
  3092. 333 --> 342
  3093. 334["Block 334:\n %335 = load %struct.Node*, %struct.Node** %55...\n %336 = getelementptr inbounds %struct.Node, %...\n store i32 1, i32* %336, align 8\n %337 = load %struct.Node*, %struct.Node** %55...\n %338 = getelementptr inbounds %struct.Node, %...\n %339 = load %struct.Node*, %struct.Node** %33...\n store %struct.Node* %339, %struct.Node** %55,...\n %340 = load i32, i32* %57, align 4\n %341 = add nsw i32 %340, 1\n store i32 %341, i32* %57, align 4\n br label %319\n"]
  3094. 334 --> 319
  3095. 342["Block 342:\n br label %343\n"]
  3096. 342 --> 343
  3097. 343["Block 343:\n br label %344\n"]
  3098. 343 --> 344
  3099. 344["Block 344:\n %345 = load %struct.Node*, %struct.Node** %49...\n %346 = icmp ne %struct.Node* %345, null\n br i1 %346, label %347, label %354\n"]
  3100. 344 -->|true| 347
  3101. 344 -->|false| 354
  3102. 347["Block 347:\n %348 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %348, %struct.Node** %58,...\n %349 = load %struct.Node*, %struct.Node** %49...\n %350 = getelementptr inbounds %struct.Node, %...\n %351 = load %struct.Node*, %struct.Node** %35...\n store %struct.Node* %351, %struct.Node** %49,...\n %352 = load %struct.Node*, %struct.Node** %58...\n %353 = bitcast %struct.Node* %352 to i8*\n call void @free(i8* %353) #7\n br label %344\n"]
  3103. 347 --> 344
  3104. 354["Block 354:\n br label %355\n"]
  3105. 354 --> 355
  3106. 355["Block 355:\n %356 = load i8*, i8** @globalErrorMessage, al...\n %357 = icmp ne i8* %356, null\n br i1 %357, label %358, label %360\n"]
  3107. 355 -->|true| 358
  3108. 355 -->|false| 360
  3109. 358["Block 358:\n %359 = load i8*, i8** @globalErrorMessage, al...\n call void @free(i8* %359) #7\n br label %360\n"]
  3110. 358 --> 360
  3111. 360["Block 360:\n %361 = call i32 @fused_performSimpleCalculati...\n store i32 0, i32* %40, align 4\n br label %362\n"]
  3112. 360 --> 362
  3113. 362["Block 362:\n %363 = load i32, i32* %40, align 4\n ret i32 %363\n br label %bunker_phi_0\n"]
  3114. 362 --> bunker_phi_0
  3115. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3116. ```
  3117. [DEBUG][performCodeFusion] Processing return values for fused function: fused_projectA_main
  3118. [DEBUG][performCodeFusion] Fused function return type: fused_return_projectA_main_memoizedFib
  3119. [DEBUG][performCodeFusion] Processing struct return type with 2 elements
  3120. [DEBUG][performCodeFusion] Setting default target return value
  3121. [DEBUG][performCodeFusion] Created struct return for bunker block: %362 with types: target=i32, bunker=i32
  3122. [DEBUG][performCodeFusion] Removing extra instruction after return in block %362: br
  3123. [DEBUG][performCodeFusion] Created struct return for target block: %19 with types: target=i32, bunker=i32
  3124. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_projectA_main
  3125. ```mermaid: fused_projectA_main
  3126. graph TD
  3127. entry["Block entry:\n br label %target_cond_0\n"]
  3128. entry --> target_cond_0
  3129. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  3130. target_cond_0 -->|true| 3
  3131. target_cond_0 -->|false| target_skip_0
  3132. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3133. target_skip_0 --> target_phi_0
  3134. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3135. target_phi_0 --> bunker_cond_0
  3136. 3["Block 3:\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store i32 %1, i32* %5, align 4\n %6 = load i32, i32* %5, align 4\n %7 = sext i32 %6 to i64\n %8 = getelementptr inbounds [100 x i32], [100...\n %9 = load i32, i32* %8, align 4\n %10 = icmp ne i32 %9, -1\n br i1 %10, label %11, label %16\n"]
  3137. 3 -->|true| 11
  3138. 3 -->|false| 16
  3139. 11["Block 11:\n %12 = load i32, i32* %5, align 4\n %13 = sext i32 %12 to i64\n %14 = getelementptr inbounds [100 x i32], [10...\n %15 = load i32, i32* %14, align 4\n store i32 %15, i32* %4, align 4\n br label %19\n"]
  3140. 11 --> 19
  3141. 16["Block 16:\n %17 = load i32, i32* %5, align 4\n %18 = icmp sle i32 %17, 1\n br i1 %18, label %21, label %23\n"]
  3142. 16 -->|true| 21
  3143. 16 -->|false| 23
  3144. 19["Block 19:\n %20 = load i32, i32* %4, align 4\n %struct.target = insertvalue %fused_return_pr...\n %struct.bunker1 = insertvalue %fused_return_p...\n ret %fused_return_projectA_main_memoizedFib %...\n"]
  3145. 21["Block 21:\n %22 = load i32, i32* %5, align 4\n store i32 %22, i32* %4, align 4\n br label %19\n"]
  3146. 21 --> 19
  3147. 23["Block 23:\n %24 = load i32, i32* %5, align 4\n %25 = sub nsw i32 %24, 1\n %26 = call i32 @memoizedFib(i32 %25)\n %27 = load i32, i32* %5, align 4\n %28 = sub nsw i32 %27, 2\n %29 = call i32 @memoizedFib(i32 %28)\n %30 = add nsw i32 %26, %29\n %31 = load i32, i32* %5, align 4\n %32 = sext i32 %31 to i64\n %33 = getelementptr inbounds [100 x i32], [10...\n store i32 %30, i32* %33, align 4\n %34 = load i32, i32* %5, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n %37 = load i32, i32* %36, align 4\n store i32 %37, i32* %4, align 4\n br label %target_phi_0\n"]
  3148. 23 --> target_phi_0
  3149. bunker_cond_0["Block bunker_cond_0:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_0\n"]
  3150. bunker_cond_0 -->|true| 39
  3151. bunker_cond_0 -->|false| bunker_skip_0
  3152. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3153. bunker_skip_0 --> bunker_phi_0
  3154. bunker_phi_0["Block bunker_phi_0:\n ret %fused_return_projectA_main_memoizedFib z...\n"]
  3155. 39["Block 39:\n %40 = alloca i32, align 4\n %41 = alloca %struct.DynamicArray*, align 8\n %42 = alloca i32, align 4\n %43 = alloca %struct.Matrix*, align 8\n %44 = alloca %struct.Matrix*, align 8\n %45 = alloca i32, align 4\n %46 = alloca i32, align 4\n %47 = alloca %struct.Matrix*, align 8\n %48 = alloca i32, align 4\n %49 = alloca %struct.Node*, align 8\n %50 = alloca i32, align 4\n %51 = alloca i32, align 4\n %52 = alloca %struct.Node*, align 8\n %53 = alloca %struct.Node*, align 8\n %54 = alloca i32, align 4\n %55 = alloca %struct.Node*, align 8\n %56 = alloca i32, align 4\n %57 = alloca i32, align 4\n %58 = alloca %struct.Node*, align 8\n %59 = call i64 @time(i64* null) #7\n %60 = trunc i64 %59 to i32\n call void @srand(i32 %60) #7\n %61 = call %struct.DynamicArray* @createDynam...\n store %struct.DynamicArray* %61, %struct.Dyna...\n %62 = load %struct.DynamicArray*, %struct.Dyn...\n %63 = icmp ne %struct.DynamicArray* %62, null\n br i1 %63, label %67, label %64\n"]
  3156. 39 -->|true| 67
  3157. 39 -->|false| 64
  3158. 64["Block 64:\n %65 = call i8* @getErrorMessage()\n %66 = call i32 (i8*, ...) @printf(i8* getelem...\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3159. 64 --> 362
  3160. 67["Block 67:\n store i32 0, i32* %42, align 4\n br label %68\n"]
  3161. 67 --> 68
  3162. 68["Block 68:\n %69 = load i32, i32* %42, align 4\n %70 = icmp slt i32 %69, 15\n br i1 %70, label %71, label %84\n"]
  3163. 68 -->|true| 71
  3164. 68 -->|false| 84
  3165. 71["Block 71:\n %72 = load %struct.DynamicArray*, %struct.Dyn...\n %73 = call i32 @rand() #7\n %74 = srem i32 %73, 100\n call void @pushBack(%struct.DynamicArray* %72...\n %75 = load i8*, i8** @globalErrorMessage, ali...\n %76 = icmp ne i8* %75, null\n br i1 %76, label %77, label %80\n"]
  3166. 71 -->|true| 77
  3167. 71 -->|false| 80
  3168. 77["Block 77:\n %78 = call i8* @getErrorMessage()\n %79 = call i32 (i8*, ...) @printf(i8* getelem...\n br label %84\n"]
  3169. 77 --> 84
  3170. 80["Block 80:\n br label %81\n"]
  3171. 80 --> 81
  3172. 81["Block 81:\n %82 = load i32, i32* %42, align 4\n %83 = add nsw i32 %82, 1\n store i32 %83, i32* %42, align 4\n br label %68\n"]
  3173. 81 --> 68
  3174. 84["Block 84:\n %85 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %85, %struct.Matrix** %...\n %86 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %86, %struct.Matrix** %...\n %87 = load %struct.Matrix*, %struct.Matrix** ...\n %88 = icmp ne %struct.Matrix* %87, null\n br i1 %88, label %89, label %92\n"]
  3175. 84 -->|true| 89
  3176. 84 -->|false| 92
  3177. 89["Block 89:\n %90 = load %struct.Matrix*, %struct.Matrix** ...\n %91 = icmp ne %struct.Matrix* %90, null\n br i1 %91, label %113, label %92\n"]
  3178. 89 -->|true| 113
  3179. 89 -->|false| 92
  3180. 92["Block 92:\n %93 = call i8* @getErrorMessage()\n %94 = call i32 (i8*, ...) @printf(i8* getelem...\n %95 = load %struct.Matrix*, %struct.Matrix** ...\n %96 = icmp ne %struct.Matrix* %95, null\n br i1 %96, label %97, label %100\n"]
  3181. 92 -->|true| 97
  3182. 92 -->|false| 100
  3183. 97["Block 97:\n %98 = load %struct.Matrix*, %struct.Matrix** ...\n %99 = bitcast %struct.Matrix* %98 to i8*\n call void @free(i8* %99) #7\n br label %100\n"]
  3184. 97 --> 100
  3185. 100["Block 100:\n %101 = load %struct.Matrix*, %struct.Matrix**...\n %102 = icmp ne %struct.Matrix* %101, null\n br i1 %102, label %103, label %106\n"]
  3186. 100 -->|true| 103
  3187. 100 -->|false| 106
  3188. 103["Block 103:\n %104 = load %struct.Matrix*, %struct.Matrix**...\n %105 = bitcast %struct.Matrix* %104 to i8*\n call void @free(i8* %105) #7\n br label %106\n"]
  3189. 103 --> 106
  3190. 106["Block 106:\n %107 = load %struct.DynamicArray*, %struct.Dy...\n %108 = getelementptr inbounds %struct.Dynamic...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #7\n %111 = load %struct.DynamicArray*, %struct.Dy...\n %112 = bitcast %struct.DynamicArray* %111 to i8*\n call void @free(i8* %112) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3191. 106 --> 362
  3192. 113["Block 113:\n store i32 0, i32* %45, align 4\n br label %114\n"]
  3193. 113 --> 114
  3194. 114["Block 114:\n %115 = load i32, i32* %45, align 4\n %116 = icmp slt i32 %115, 3\n br i1 %116, label %117, label %153\n"]
  3195. 114 -->|true| 117
  3196. 114 -->|false| 153
  3197. 117["Block 117:\n store i32 0, i32* %46, align 4\n br label %118\n"]
  3198. 117 --> 118
  3199. 118["Block 118:\n %119 = load i32, i32* %46, align 4\n %120 = icmp slt i32 %119, 3\n br i1 %120, label %121, label %149\n"]
  3200. 118 -->|true| 121
  3201. 118 -->|false| 149
  3202. 121["Block 121:\n %122 = call i32 @rand() #7\n %123 = srem i32 %122, 10\n %124 = load %struct.Matrix*, %struct.Matrix**...\n %125 = getelementptr inbounds %struct.Matrix,...\n %126 = load i32**, i32*** %125, align 8\n %127 = load i32, i32* %45, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32*, i32** %12...\n %130 = load i32*, i32** %129, align 8\n %131 = load i32, i32* %46, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds i32, i32* %130,...\n store i32 %123, i32* %133, align 4\n %134 = call i32 @rand() #7\n %135 = srem i32 %134, 10\n %136 = load %struct.Matrix*, %struct.Matrix**...\n %137 = getelementptr inbounds %struct.Matrix,...\n %138 = load i32**, i32*** %137, align 8\n %139 = load i32, i32* %45, align 4\n %140 = sext i32 %139 to i64\n %141 = getelementptr inbounds i32*, i32** %13...\n %142 = load i32*, i32** %141, align 8\n %143 = load i32, i32* %46, align 4\n %144 = sext i32 %143 to i64\n %145 = getelementptr inbounds i32, i32* %142,...\n store i32 %135, i32* %145, align 4\n br label %146\n"]
  3203. 121 --> 146
  3204. 146["Block 146:\n %147 = load i32, i32* %46, align 4\n %148 = add nsw i32 %147, 1\n store i32 %148, i32* %46, align 4\n br label %118\n"]
  3205. 146 --> 118
  3206. 149["Block 149:\n br label %150\n"]
  3207. 149 --> 150
  3208. 150["Block 150:\n %151 = load i32, i32* %45, align 4\n %152 = add nsw i32 %151, 1\n store i32 %152, i32* %45, align 4\n br label %114\n"]
  3209. 150 --> 114
  3210. 153["Block 153:\n %154 = load %struct.Matrix*, %struct.Matrix**...\n %155 = load %struct.Matrix*, %struct.Matrix**...\n %156 = call %struct.Matrix* @multiplyMatrices...\n store %struct.Matrix* %156, %struct.Matrix** ...\n %157 = load %struct.Matrix*, %struct.Matrix**...\n %158 = icmp ne %struct.Matrix* %157, null\n br i1 %158, label %207, label %159\n"]
  3211. 153 -->|true| 207
  3212. 153 -->|false| 159
  3213. 159["Block 159:\n %160 = call i8* @getErrorMessage()\n %161 = call i32 (i8*, ...) @printf(i8* getele...\n store i32 0, i32* %48, align 4\n br label %162\n"]
  3214. 159 --> 162
  3215. 162["Block 162:\n %163 = load i32, i32* %48, align 4\n %164 = load %struct.Matrix*, %struct.Matrix**...\n %165 = getelementptr inbounds %struct.Matrix,...\n %166 = load i32, i32* %165, align 8\n %167 = icmp slt i32 %163, %166\n br i1 %167, label %168, label %188\n"]
  3216. 162 -->|true| 168
  3217. 162 -->|false| 188
  3218. 168["Block 168:\n %169 = load %struct.Matrix*, %struct.Matrix**...\n %170 = getelementptr inbounds %struct.Matrix,...\n %171 = load i32**, i32*** %170, align 8\n %172 = load i32, i32* %48, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32*, i32** %17...\n %175 = load i32*, i32** %174, align 8\n %176 = bitcast i32* %175 to i8*\n call void @free(i8* %176) #7\n %177 = load %struct.Matrix*, %struct.Matrix**...\n %178 = getelementptr inbounds %struct.Matrix,...\n %179 = load i32**, i32*** %178, align 8\n %180 = load i32, i32* %48, align 4\n %181 = sext i32 %180 to i64\n %182 = getelementptr inbounds i32*, i32** %17...\n %183 = load i32*, i32** %182, align 8\n %184 = bitcast i32* %183 to i8*\n call void @free(i8* %184) #7\n br label %185\n"]
  3219. 168 --> 185
  3220. 185["Block 185:\n %186 = load i32, i32* %48, align 4\n %187 = add nsw i32 %186, 1\n store i32 %187, i32* %48, align 4\n br label %162\n"]
  3221. 185 --> 162
  3222. 188["Block 188:\n %189 = load %struct.Matrix*, %struct.Matrix**...\n %190 = getelementptr inbounds %struct.Matrix,...\n %191 = load i32**, i32*** %190, align 8\n %192 = bitcast i32** %191 to i8*\n call void @free(i8* %192) #7\n %193 = load %struct.Matrix*, %struct.Matrix**...\n %194 = getelementptr inbounds %struct.Matrix,...\n %195 = load i32**, i32*** %194, align 8\n %196 = bitcast i32** %195 to i8*\n call void @free(i8* %196) #7\n %197 = load %struct.Matrix*, %struct.Matrix**...\n %198 = bitcast %struct.Matrix* %197 to i8*\n call void @free(i8* %198) #7\n %199 = load %struct.Matrix*, %struct.Matrix**...\n %200 = bitcast %struct.Matrix* %199 to i8*\n call void @free(i8* %200) #7\n %201 = load %struct.DynamicArray*, %struct.Dy...\n %202 = getelementptr inbounds %struct.Dynamic...\n %203 = load i32*, i32** %202, align 8\n %204 = bitcast i32* %203 to i8*\n call void @free(i8* %204) #7\n %205 = load %struct.DynamicArray*, %struct.Dy...\n %206 = bitcast %struct.DynamicArray* %205 to i8*\n call void @free(i8* %206) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3223. 188 --> 362
  3224. 207["Block 207:\n store %struct.Node* null, %struct.Node** %49,...\n store i32 0, i32* %50, align 4\n br label %208\n"]
  3225. 207 --> 208
  3226. 208["Block 208:\n %209 = load i32, i32* %50, align 4\n %210 = icmp slt i32 %209, 5\n br i1 %210, label %211, label %225\n"]
  3227. 208 -->|true| 211
  3228. 208 -->|false| 225
  3229. 211["Block 211:\n %212 = load %struct.Node*, %struct.Node** %49...\n %213 = call i32 @rand() #7\n %214 = srem i32 %213, 50\n %215 = call %struct.Node* @insertNode(%struct...\n store %struct.Node* %215, %struct.Node** %49,...\n %216 = load i8*, i8** @globalErrorMessage, al...\n %217 = icmp ne i8* %216, null\n br i1 %217, label %218, label %221\n"]
  3230. 211 -->|true| 218
  3231. 211 -->|false| 221
  3232. 218["Block 218:\n %219 = call i8* @getErrorMessage()\n %220 = call i32 (i8*, ...) @printf(i8* getele...\n br label %225\n"]
  3233. 218 --> 225
  3234. 221["Block 221:\n br label %222\n"]
  3235. 221 --> 222
  3236. 222["Block 222:\n %223 = load i32, i32* %50, align 4\n %224 = add nsw i32 %223, 1\n store i32 %224, i32* %50, align 4\n br label %208\n"]
  3237. 222 --> 208
  3238. 225["Block 225:\n %226 = load %struct.DynamicArray*, %struct.Dy...\n %227 = getelementptr inbounds %struct.Dynamic...\n %228 = load i32*, i32** %227, align 8\n %229 = bitcast i32* %228 to i8*\n call void @free(i8* %229) #7\n %230 = load %struct.DynamicArray*, %struct.Dy...\n %231 = bitcast %struct.DynamicArray* %230 to i8*\n call void @free(i8* %231) #7\n store i32 0, i32* %51, align 4\n br label %232\n"]
  3239. 225 --> 232
  3240. 232["Block 232:\n %233 = load i32, i32* %51, align 4\n %234 = load %struct.Matrix*, %struct.Matrix**...\n %235 = getelementptr inbounds %struct.Matrix,...\n %236 = load i32, i32* %235, align 8\n %237 = icmp slt i32 %233, %236\n br i1 %237, label %238, label %266\n"]
  3241. 232 -->|true| 238
  3242. 232 -->|false| 266
  3243. 238["Block 238:\n %239 = load %struct.Matrix*, %struct.Matrix**...\n %240 = getelementptr inbounds %struct.Matrix,...\n %241 = load i32**, i32*** %240, align 8\n %242 = load i32, i32* %51, align 4\n %243 = sext i32 %242 to i64\n %244 = getelementptr inbounds i32*, i32** %24...\n %245 = load i32*, i32** %244, align 8\n %246 = bitcast i32* %245 to i8*\n call void @free(i8* %246) #7\n %247 = load %struct.Matrix*, %struct.Matrix**...\n %248 = getelementptr inbounds %struct.Matrix,...\n %249 = load i32**, i32*** %248, align 8\n %250 = load i32, i32* %51, align 4\n %251 = sext i32 %250 to i64\n %252 = getelementptr inbounds i32*, i32** %24...\n %253 = load i32*, i32** %252, align 8\n %254 = bitcast i32* %253 to i8*\n call void @free(i8* %254) #7\n %255 = load %struct.Matrix*, %struct.Matrix**...\n %256 = getelementptr inbounds %struct.Matrix,...\n %257 = load i32**, i32*** %256, align 8\n %258 = load i32, i32* %51, align 4\n %259 = sext i32 %258 to i64\n %260 = getelementptr inbounds i32*, i32** %25...\n %261 = load i32*, i32** %260, align 8\n %262 = bitcast i32* %261 to i8*\n call void @free(i8* %262) #7\n br label %263\n"]
  3244. 238 --> 263
  3245. 263["Block 263:\n %264 = load i32, i32* %51, align 4\n %265 = add nsw i32 %264, 1\n store i32 %265, i32* %51, align 4\n br label %232\n"]
  3246. 263 --> 232
  3247. 266["Block 266:\n %267 = load %struct.Matrix*, %struct.Matrix**...\n %268 = getelementptr inbounds %struct.Matrix,...\n %269 = load i32**, i32*** %268, align 8\n %270 = bitcast i32** %269 to i8*\n call void @free(i8* %270) #7\n %271 = load %struct.Matrix*, %struct.Matrix**...\n %272 = getelementptr inbounds %struct.Matrix,...\n %273 = load i32**, i32*** %272, align 8\n %274 = bitcast i32** %273 to i8*\n call void @free(i8* %274) #7\n %275 = load %struct.Matrix*, %struct.Matrix**...\n %276 = getelementptr inbounds %struct.Matrix,...\n %277 = load i32**, i32*** %276, align 8\n %278 = bitcast i32** %277 to i8*\n call void @free(i8* %278) #7\n %279 = load %struct.Matrix*, %struct.Matrix**...\n %280 = bitcast %struct.Matrix* %279 to i8*\n call void @free(i8* %280) #7\n %281 = load %struct.Matrix*, %struct.Matrix**...\n %282 = bitcast %struct.Matrix* %281 to i8*\n call void @free(i8* %282) #7\n %283 = load %struct.Matrix*, %struct.Matrix**...\n %284 = bitcast %struct.Matrix* %283 to i8*\n call void @free(i8* %284) #7\n %285 = load %struct.Node*, %struct.Node** %49...\n %286 = icmp ne %struct.Node* %285, null\n br i1 %286, label %287, label %355\n"]
  3248. 266 -->|true| 287
  3249. 266 -->|false| 355
  3250. 287["Block 287:\n %288 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %288, %struct.Node** %52,...\n %289 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %289, %struct.Node** %53,...\n store i32 0, i32* %54, align 4\n br label %290\n"]
  3251. 287 --> 290
  3252. 290["Block 290:\n %291 = load %struct.Node*, %struct.Node** %53...\n %292 = icmp ne %struct.Node* %291, null\n br i1 %292, label %293, label %298\n"]
  3253. 290 -->|true| 293
  3254. 290 -->|false| 298
  3255. 293["Block 293:\n %294 = load %struct.Node*, %struct.Node** %53...\n %295 = getelementptr inbounds %struct.Node, %...\n %296 = load %struct.Node*, %struct.Node** %29...\n %297 = icmp ne %struct.Node* %296, null\n br label %298\n"]
  3256. 293 --> 298
  3257. 298["Block 298:\n %299 = phi i1 [ false, %290 ], [ %297, %293 ]\n br i1 %299, label %300, label %314\n"]
  3258. 298 -->|true| 300
  3259. 298 -->|false| 314
  3260. 300["Block 300:\n %301 = load %struct.Node*, %struct.Node** %52...\n %302 = getelementptr inbounds %struct.Node, %...\n %303 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %303, %struct.Node** %52,...\n %304 = load %struct.Node*, %struct.Node** %53...\n %305 = getelementptr inbounds %struct.Node, %...\n %306 = load %struct.Node*, %struct.Node** %30...\n %307 = getelementptr inbounds %struct.Node, %...\n %308 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %308, %struct.Node** %53,...\n %309 = load %struct.Node*, %struct.Node** %52...\n %310 = load %struct.Node*, %struct.Node** %53...\n %311 = icmp eq %struct.Node* %309, %310\n br i1 %311, label %312, label %313\n"]
  3261. 300 -->|true| 312
  3262. 300 -->|false| 313
  3263. 312["Block 312:\n store i32 1, i32* %54, align 4\n br label %314\n"]
  3264. 312 --> 314
  3265. 313["Block 313:\n br label %290\n"]
  3266. 313 --> 290
  3267. 314["Block 314:\n %315 = load i32, i32* %54, align 4\n %316 = icmp ne i32 %315, 0\n br i1 %316, label %317, label %343\n"]
  3268. 314 -->|true| 317
  3269. 314 -->|false| 343
  3270. 317["Block 317:\n call void @setErrorMessage(i8* getelementptr ...\n %318 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %318, %struct.Node** %55,...\n store i32 1000, i32* %56, align 4\n store i32 0, i32* %57, align 4\n br label %319\n"]
  3271. 317 --> 319
  3272. 319["Block 319:\n %320 = load %struct.Node*, %struct.Node** %55...\n %321 = icmp ne %struct.Node* %320, null\n br i1 %321, label %322, label %326\n"]
  3273. 319 -->|true| 322
  3274. 319 -->|false| 326
  3275. 322["Block 322:\n %323 = load i32, i32* %57, align 4\n %324 = load i32, i32* %56, align 4\n %325 = icmp slt i32 %323, %324\n br label %326\n"]
  3276. 322 --> 326
  3277. 326["Block 326:\n %327 = phi i1 [ false, %319 ], [ %325, %322 ]\n br i1 %327, label %328, label %342\n"]
  3278. 326 -->|true| 328
  3279. 326 -->|false| 342
  3280. 328["Block 328:\n %329 = load %struct.Node*, %struct.Node** %55...\n %330 = getelementptr inbounds %struct.Node, %...\n %331 = load i32, i32* %330, align 8\n %332 = icmp ne i32 %331, 0\n br i1 %332, label %333, label %334\n"]
  3281. 328 -->|true| 333
  3282. 328 -->|false| 334
  3283. 333["Block 333:\n br label %342\n"]
  3284. 333 --> 342
  3285. 334["Block 334:\n %335 = load %struct.Node*, %struct.Node** %55...\n %336 = getelementptr inbounds %struct.Node, %...\n store i32 1, i32* %336, align 8\n %337 = load %struct.Node*, %struct.Node** %55...\n %338 = getelementptr inbounds %struct.Node, %...\n %339 = load %struct.Node*, %struct.Node** %33...\n store %struct.Node* %339, %struct.Node** %55,...\n %340 = load i32, i32* %57, align 4\n %341 = add nsw i32 %340, 1\n store i32 %341, i32* %57, align 4\n br label %319\n"]
  3286. 334 --> 319
  3287. 342["Block 342:\n br label %343\n"]
  3288. 342 --> 343
  3289. 343["Block 343:\n br label %344\n"]
  3290. 343 --> 344
  3291. 344["Block 344:\n %345 = load %struct.Node*, %struct.Node** %49...\n %346 = icmp ne %struct.Node* %345, null\n br i1 %346, label %347, label %354\n"]
  3292. 344 -->|true| 347
  3293. 344 -->|false| 354
  3294. 347["Block 347:\n %348 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %348, %struct.Node** %58,...\n %349 = load %struct.Node*, %struct.Node** %49...\n %350 = getelementptr inbounds %struct.Node, %...\n %351 = load %struct.Node*, %struct.Node** %35...\n store %struct.Node* %351, %struct.Node** %49,...\n %352 = load %struct.Node*, %struct.Node** %58...\n %353 = bitcast %struct.Node* %352 to i8*\n call void @free(i8* %353) #7\n br label %344\n"]
  3295. 347 --> 344
  3296. 354["Block 354:\n br label %355\n"]
  3297. 354 --> 355
  3298. 355["Block 355:\n %356 = load i8*, i8** @globalErrorMessage, al...\n %357 = icmp ne i8* %356, null\n br i1 %357, label %358, label %360\n"]
  3299. 355 -->|true| 358
  3300. 355 -->|false| 360
  3301. 358["Block 358:\n %359 = load i8*, i8** @globalErrorMessage, al...\n call void @free(i8* %359) #7\n br label %360\n"]
  3302. 358 --> 360
  3303. 360["Block 360:\n %361 = call i32 @fused_performSimpleCalculati...\n store i32 0, i32* %40, align 4\n br label %362\n"]
  3304. 360 --> 362
  3305. 362["Block 362:\n %363 = load i32, i32* %40, align 4\n %struct.bunker = insertvalue %fused_return_pr...\n ret %fused_return_projectA_main_memoizedFib %...\n"]
  3306. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3307. ```
  3308. [DEBUG][updateCallSite] Original call instruction:
  3309. %29 = call i32 @memoizedFib(i32 %28)
  3310. [DEBUG][updateCallSite] Adding target control parameter
  3311. [DEBUG][updateCallSite] Adding default bunker parameters:
  3312. [DEBUG][updateCallSite] Adding original call parameters:
  3313. [DEBUG][updateCallSite] Argument 0: type=i32
  3314. [DEBUG][updateCallSite] New call instruction:
  3315. %29 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %28)
  3316. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3317. [DEBUG][updateCallSite] Extracting value from struct return type
  3318. [DEBUG][updateCallSite] Extracted value type: i32
  3319. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3320. [INFO][updateCallSite] Successfully updated call site from %29 = call i32 @memoizedFib(i32 %28) to %29 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %28)
  3321. [DEBUG][updateCallSite] Original call instruction:
  3322. %26 = call i32 @memoizedFib(i32 %25)
  3323. [DEBUG][updateCallSite] Adding target control parameter
  3324. [DEBUG][updateCallSite] Adding default bunker parameters:
  3325. [DEBUG][updateCallSite] Adding original call parameters:
  3326. [DEBUG][updateCallSite] Argument 0: type=i32
  3327. [DEBUG][updateCallSite] New call instruction:
  3328. %26 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %25)
  3329. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3330. [DEBUG][updateCallSite] Extracting value from struct return type
  3331. [DEBUG][updateCallSite] Extracted value type: i32
  3332. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3333. [INFO][updateCallSite] Successfully updated call site from %26 = call i32 @memoizedFib(i32 %25) to %26 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %25)
  3334. [DEBUG][updateCallSite] Original call instruction:
  3335. %35 = call i32 @memoizedFib(i32 %34)
  3336. [DEBUG][updateCallSite] Adding target control parameter
  3337. [DEBUG][updateCallSite] Adding default bunker parameters:
  3338. [DEBUG][updateCallSite] Adding original call parameters:
  3339. [DEBUG][updateCallSite] Argument 0: type=i32
  3340. [DEBUG][updateCallSite] New call instruction:
  3341. %35 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %34)
  3342. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3343. [DEBUG][updateCallSite] Extracting value from struct return type
  3344. [DEBUG][updateCallSite] Extracted value type: i32
  3345. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3346. [INFO][updateCallSite] Successfully updated call site from %35 = call i32 @memoizedFib(i32 %34) to %35 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %34)
  3347. [DEBUG][updateCallSite] Original call instruction:
  3348. %21 = call i32 @memoizedFib(i32 %20)
  3349. [DEBUG][updateCallSite] Adding target control parameter
  3350. [DEBUG][updateCallSite] Adding default bunker parameters:
  3351. [DEBUG][updateCallSite] Adding original call parameters:
  3352. [DEBUG][updateCallSite] Argument 0: type=i32
  3353. [DEBUG][updateCallSite] New call instruction:
  3354. %21 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %20)
  3355. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3356. [DEBUG][updateCallSite] Extracting value from struct return type
  3357. [DEBUG][updateCallSite] Extracted value type: i32
  3358. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3359. [INFO][updateCallSite] Successfully updated call site from %21 = call i32 @memoizedFib(i32 %20) to %21 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %20)
  3360. [DEBUG][updateCallSite] Original call instruction:
  3361. %25 = call i32 @memoizedFib(i32 %24)
  3362. [DEBUG][updateCallSite] Adding target control parameter
  3363. [DEBUG][updateCallSite] Adding default bunker parameters:
  3364. [DEBUG][updateCallSite] Adding original call parameters:
  3365. [DEBUG][updateCallSite] Argument 0: type=i32
  3366. [DEBUG][updateCallSite] New call instruction:
  3367. %25 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %24)
  3368. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3369. [DEBUG][updateCallSite] Extracting value from struct return type
  3370. [DEBUG][updateCallSite] Extracted value type: i32
  3371. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3372. [INFO][updateCallSite] Successfully updated call site from %25 = call i32 @memoizedFib(i32 %24) to %25 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %24)
  3373. [DEBUG][updateCallSite] Original call instruction:
  3374. %22 = call i32 @memoizedFib(i32 %21)
  3375. [DEBUG][updateCallSite] Adding target control parameter
  3376. [DEBUG][updateCallSite] Adding default bunker parameters:
  3377. [DEBUG][updateCallSite] Adding original call parameters:
  3378. [DEBUG][updateCallSite] Argument 0: type=i32
  3379. [DEBUG][updateCallSite] New call instruction:
  3380. %22 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %21)
  3381. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3382. [DEBUG][updateCallSite] Extracting value from struct return type
  3383. [DEBUG][updateCallSite] Extracted value type: i32
  3384. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3385. [INFO][updateCallSite] Successfully updated call site from %22 = call i32 @memoizedFib(i32 %21) to %22 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %21)
  3386. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_projectA_main
  3387. ```mermaid: fused_projectA_main
  3388. graph TD
  3389. entry["Block entry:\n br label %target_cond_0\n"]
  3390. entry --> target_cond_0
  3391. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  3392. target_cond_0 -->|true| 3
  3393. target_cond_0 -->|false| target_skip_0
  3394. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3395. target_skip_0 --> target_phi_0
  3396. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3397. target_phi_0 --> bunker_cond_0
  3398. 3["Block 3:\n %4 = alloca i32, align 4\n %5 = alloca i32, align 4\n store i32 %1, i32* %5, align 4\n %6 = load i32, i32* %5, align 4\n %7 = sext i32 %6 to i64\n %8 = getelementptr inbounds [100 x i32], [100...\n %9 = load i32, i32* %8, align 4\n %10 = icmp ne i32 %9, -1\n br i1 %10, label %11, label %16\n"]
  3399. 3 -->|true| 11
  3400. 3 -->|false| 16
  3401. 11["Block 11:\n %12 = load i32, i32* %5, align 4\n %13 = sext i32 %12 to i64\n %14 = getelementptr inbounds [100 x i32], [10...\n %15 = load i32, i32* %14, align 4\n store i32 %15, i32* %4, align 4\n br label %19\n"]
  3402. 11 --> 19
  3403. 16["Block 16:\n %17 = load i32, i32* %5, align 4\n %18 = icmp sle i32 %17, 1\n br i1 %18, label %21, label %23\n"]
  3404. 16 -->|true| 21
  3405. 16 -->|false| 23
  3406. 19["Block 19:\n %20 = load i32, i32* %4, align 4\n %struct.target = insertvalue %fused_return_pr...\n %struct.bunker1 = insertvalue %fused_return_p...\n ret %fused_return_projectA_main_memoizedFib %...\n"]
  3407. 21["Block 21:\n %22 = load i32, i32* %5, align 4\n store i32 %22, i32* %4, align 4\n br label %19\n"]
  3408. 21 --> 19
  3409. 23["Block 23:\n %24 = load i32, i32* %5, align 4\n %25 = sub nsw i32 %24, 1\n %26 = call %fused_return_projectA_main_memoiz...\n %extracted_target_return2 = extractvalue %fus...\n %27 = load i32, i32* %5, align 4\n %28 = sub nsw i32 %27, 2\n %29 = call %fused_return_projectA_main_memoiz...\n %extracted_target_return = extractvalue %fuse...\n %30 = add nsw i32 %extracted_target_return2, ...\n %31 = load i32, i32* %5, align 4\n %32 = sext i32 %31 to i64\n %33 = getelementptr inbounds [100 x i32], [10...\n store i32 %30, i32* %33, align 4\n %34 = load i32, i32* %5, align 4\n %35 = sext i32 %34 to i64\n %36 = getelementptr inbounds [100 x i32], [10...\n %37 = load i32, i32* %36, align 4\n store i32 %37, i32* %4, align 4\n br label %target_phi_0\n"]
  3410. 23 --> target_phi_0
  3411. bunker_cond_0["Block bunker_cond_0:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_0\n"]
  3412. bunker_cond_0 -->|true| 39
  3413. bunker_cond_0 -->|false| bunker_skip_0
  3414. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3415. bunker_skip_0 --> bunker_phi_0
  3416. bunker_phi_0["Block bunker_phi_0:\n ret %fused_return_projectA_main_memoizedFib z...\n"]
  3417. 39["Block 39:\n %40 = alloca i32, align 4\n %41 = alloca %struct.DynamicArray*, align 8\n %42 = alloca i32, align 4\n %43 = alloca %struct.Matrix*, align 8\n %44 = alloca %struct.Matrix*, align 8\n %45 = alloca i32, align 4\n %46 = alloca i32, align 4\n %47 = alloca %struct.Matrix*, align 8\n %48 = alloca i32, align 4\n %49 = alloca %struct.Node*, align 8\n %50 = alloca i32, align 4\n %51 = alloca i32, align 4\n %52 = alloca %struct.Node*, align 8\n %53 = alloca %struct.Node*, align 8\n %54 = alloca i32, align 4\n %55 = alloca %struct.Node*, align 8\n %56 = alloca i32, align 4\n %57 = alloca i32, align 4\n %58 = alloca %struct.Node*, align 8\n %59 = call i64 @time(i64* null) #7\n %60 = trunc i64 %59 to i32\n call void @srand(i32 %60) #7\n %61 = call %struct.DynamicArray* @createDynam...\n store %struct.DynamicArray* %61, %struct.Dyna...\n %62 = load %struct.DynamicArray*, %struct.Dyn...\n %63 = icmp ne %struct.DynamicArray* %62, null\n br i1 %63, label %67, label %64\n"]
  3418. 39 -->|true| 67
  3419. 39 -->|false| 64
  3420. 64["Block 64:\n %65 = call i8* @getErrorMessage()\n %66 = call i32 (i8*, ...) @printf(i8* getelem...\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3421. 64 --> 362
  3422. 67["Block 67:\n store i32 0, i32* %42, align 4\n br label %68\n"]
  3423. 67 --> 68
  3424. 68["Block 68:\n %69 = load i32, i32* %42, align 4\n %70 = icmp slt i32 %69, 15\n br i1 %70, label %71, label %84\n"]
  3425. 68 -->|true| 71
  3426. 68 -->|false| 84
  3427. 71["Block 71:\n %72 = load %struct.DynamicArray*, %struct.Dyn...\n %73 = call i32 @rand() #7\n %74 = srem i32 %73, 100\n call void @pushBack(%struct.DynamicArray* %72...\n %75 = load i8*, i8** @globalErrorMessage, ali...\n %76 = icmp ne i8* %75, null\n br i1 %76, label %77, label %80\n"]
  3428. 71 -->|true| 77
  3429. 71 -->|false| 80
  3430. 77["Block 77:\n %78 = call i8* @getErrorMessage()\n %79 = call i32 (i8*, ...) @printf(i8* getelem...\n br label %84\n"]
  3431. 77 --> 84
  3432. 80["Block 80:\n br label %81\n"]
  3433. 80 --> 81
  3434. 81["Block 81:\n %82 = load i32, i32* %42, align 4\n %83 = add nsw i32 %82, 1\n store i32 %83, i32* %42, align 4\n br label %68\n"]
  3435. 81 --> 68
  3436. 84["Block 84:\n %85 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %85, %struct.Matrix** %...\n %86 = call %struct.Matrix* @createMatrix(i32 ...\n store %struct.Matrix* %86, %struct.Matrix** %...\n %87 = load %struct.Matrix*, %struct.Matrix** ...\n %88 = icmp ne %struct.Matrix* %87, null\n br i1 %88, label %89, label %92\n"]
  3437. 84 -->|true| 89
  3438. 84 -->|false| 92
  3439. 89["Block 89:\n %90 = load %struct.Matrix*, %struct.Matrix** ...\n %91 = icmp ne %struct.Matrix* %90, null\n br i1 %91, label %113, label %92\n"]
  3440. 89 -->|true| 113
  3441. 89 -->|false| 92
  3442. 92["Block 92:\n %93 = call i8* @getErrorMessage()\n %94 = call i32 (i8*, ...) @printf(i8* getelem...\n %95 = load %struct.Matrix*, %struct.Matrix** ...\n %96 = icmp ne %struct.Matrix* %95, null\n br i1 %96, label %97, label %100\n"]
  3443. 92 -->|true| 97
  3444. 92 -->|false| 100
  3445. 97["Block 97:\n %98 = load %struct.Matrix*, %struct.Matrix** ...\n %99 = bitcast %struct.Matrix* %98 to i8*\n call void @free(i8* %99) #7\n br label %100\n"]
  3446. 97 --> 100
  3447. 100["Block 100:\n %101 = load %struct.Matrix*, %struct.Matrix**...\n %102 = icmp ne %struct.Matrix* %101, null\n br i1 %102, label %103, label %106\n"]
  3448. 100 -->|true| 103
  3449. 100 -->|false| 106
  3450. 103["Block 103:\n %104 = load %struct.Matrix*, %struct.Matrix**...\n %105 = bitcast %struct.Matrix* %104 to i8*\n call void @free(i8* %105) #7\n br label %106\n"]
  3451. 103 --> 106
  3452. 106["Block 106:\n %107 = load %struct.DynamicArray*, %struct.Dy...\n %108 = getelementptr inbounds %struct.Dynamic...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #7\n %111 = load %struct.DynamicArray*, %struct.Dy...\n %112 = bitcast %struct.DynamicArray* %111 to i8*\n call void @free(i8* %112) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3453. 106 --> 362
  3454. 113["Block 113:\n store i32 0, i32* %45, align 4\n br label %114\n"]
  3455. 113 --> 114
  3456. 114["Block 114:\n %115 = load i32, i32* %45, align 4\n %116 = icmp slt i32 %115, 3\n br i1 %116, label %117, label %153\n"]
  3457. 114 -->|true| 117
  3458. 114 -->|false| 153
  3459. 117["Block 117:\n store i32 0, i32* %46, align 4\n br label %118\n"]
  3460. 117 --> 118
  3461. 118["Block 118:\n %119 = load i32, i32* %46, align 4\n %120 = icmp slt i32 %119, 3\n br i1 %120, label %121, label %149\n"]
  3462. 118 -->|true| 121
  3463. 118 -->|false| 149
  3464. 121["Block 121:\n %122 = call i32 @rand() #7\n %123 = srem i32 %122, 10\n %124 = load %struct.Matrix*, %struct.Matrix**...\n %125 = getelementptr inbounds %struct.Matrix,...\n %126 = load i32**, i32*** %125, align 8\n %127 = load i32, i32* %45, align 4\n %128 = sext i32 %127 to i64\n %129 = getelementptr inbounds i32*, i32** %12...\n %130 = load i32*, i32** %129, align 8\n %131 = load i32, i32* %46, align 4\n %132 = sext i32 %131 to i64\n %133 = getelementptr inbounds i32, i32* %130,...\n store i32 %123, i32* %133, align 4\n %134 = call i32 @rand() #7\n %135 = srem i32 %134, 10\n %136 = load %struct.Matrix*, %struct.Matrix**...\n %137 = getelementptr inbounds %struct.Matrix,...\n %138 = load i32**, i32*** %137, align 8\n %139 = load i32, i32* %45, align 4\n %140 = sext i32 %139 to i64\n %141 = getelementptr inbounds i32*, i32** %13...\n %142 = load i32*, i32** %141, align 8\n %143 = load i32, i32* %46, align 4\n %144 = sext i32 %143 to i64\n %145 = getelementptr inbounds i32, i32* %142,...\n store i32 %135, i32* %145, align 4\n br label %146\n"]
  3465. 121 --> 146
  3466. 146["Block 146:\n %147 = load i32, i32* %46, align 4\n %148 = add nsw i32 %147, 1\n store i32 %148, i32* %46, align 4\n br label %118\n"]
  3467. 146 --> 118
  3468. 149["Block 149:\n br label %150\n"]
  3469. 149 --> 150
  3470. 150["Block 150:\n %151 = load i32, i32* %45, align 4\n %152 = add nsw i32 %151, 1\n store i32 %152, i32* %45, align 4\n br label %114\n"]
  3471. 150 --> 114
  3472. 153["Block 153:\n %154 = load %struct.Matrix*, %struct.Matrix**...\n %155 = load %struct.Matrix*, %struct.Matrix**...\n %156 = call %struct.Matrix* @multiplyMatrices...\n store %struct.Matrix* %156, %struct.Matrix** ...\n %157 = load %struct.Matrix*, %struct.Matrix**...\n %158 = icmp ne %struct.Matrix* %157, null\n br i1 %158, label %207, label %159\n"]
  3473. 153 -->|true| 207
  3474. 153 -->|false| 159
  3475. 159["Block 159:\n %160 = call i8* @getErrorMessage()\n %161 = call i32 (i8*, ...) @printf(i8* getele...\n store i32 0, i32* %48, align 4\n br label %162\n"]
  3476. 159 --> 162
  3477. 162["Block 162:\n %163 = load i32, i32* %48, align 4\n %164 = load %struct.Matrix*, %struct.Matrix**...\n %165 = getelementptr inbounds %struct.Matrix,...\n %166 = load i32, i32* %165, align 8\n %167 = icmp slt i32 %163, %166\n br i1 %167, label %168, label %188\n"]
  3478. 162 -->|true| 168
  3479. 162 -->|false| 188
  3480. 168["Block 168:\n %169 = load %struct.Matrix*, %struct.Matrix**...\n %170 = getelementptr inbounds %struct.Matrix,...\n %171 = load i32**, i32*** %170, align 8\n %172 = load i32, i32* %48, align 4\n %173 = sext i32 %172 to i64\n %174 = getelementptr inbounds i32*, i32** %17...\n %175 = load i32*, i32** %174, align 8\n %176 = bitcast i32* %175 to i8*\n call void @free(i8* %176) #7\n %177 = load %struct.Matrix*, %struct.Matrix**...\n %178 = getelementptr inbounds %struct.Matrix,...\n %179 = load i32**, i32*** %178, align 8\n %180 = load i32, i32* %48, align 4\n %181 = sext i32 %180 to i64\n %182 = getelementptr inbounds i32*, i32** %17...\n %183 = load i32*, i32** %182, align 8\n %184 = bitcast i32* %183 to i8*\n call void @free(i8* %184) #7\n br label %185\n"]
  3481. 168 --> 185
  3482. 185["Block 185:\n %186 = load i32, i32* %48, align 4\n %187 = add nsw i32 %186, 1\n store i32 %187, i32* %48, align 4\n br label %162\n"]
  3483. 185 --> 162
  3484. 188["Block 188:\n %189 = load %struct.Matrix*, %struct.Matrix**...\n %190 = getelementptr inbounds %struct.Matrix,...\n %191 = load i32**, i32*** %190, align 8\n %192 = bitcast i32** %191 to i8*\n call void @free(i8* %192) #7\n %193 = load %struct.Matrix*, %struct.Matrix**...\n %194 = getelementptr inbounds %struct.Matrix,...\n %195 = load i32**, i32*** %194, align 8\n %196 = bitcast i32** %195 to i8*\n call void @free(i8* %196) #7\n %197 = load %struct.Matrix*, %struct.Matrix**...\n %198 = bitcast %struct.Matrix* %197 to i8*\n call void @free(i8* %198) #7\n %199 = load %struct.Matrix*, %struct.Matrix**...\n %200 = bitcast %struct.Matrix* %199 to i8*\n call void @free(i8* %200) #7\n %201 = load %struct.DynamicArray*, %struct.Dy...\n %202 = getelementptr inbounds %struct.Dynamic...\n %203 = load i32*, i32** %202, align 8\n %204 = bitcast i32* %203 to i8*\n call void @free(i8* %204) #7\n %205 = load %struct.DynamicArray*, %struct.Dy...\n %206 = bitcast %struct.DynamicArray* %205 to i8*\n call void @free(i8* %206) #7\n store i32 -1, i32* %40, align 4\n br label %362\n"]
  3485. 188 --> 362
  3486. 207["Block 207:\n store %struct.Node* null, %struct.Node** %49,...\n store i32 0, i32* %50, align 4\n br label %208\n"]
  3487. 207 --> 208
  3488. 208["Block 208:\n %209 = load i32, i32* %50, align 4\n %210 = icmp slt i32 %209, 5\n br i1 %210, label %211, label %225\n"]
  3489. 208 -->|true| 211
  3490. 208 -->|false| 225
  3491. 211["Block 211:\n %212 = load %struct.Node*, %struct.Node** %49...\n %213 = call i32 @rand() #7\n %214 = srem i32 %213, 50\n %215 = call %struct.Node* @insertNode(%struct...\n store %struct.Node* %215, %struct.Node** %49,...\n %216 = load i8*, i8** @globalErrorMessage, al...\n %217 = icmp ne i8* %216, null\n br i1 %217, label %218, label %221\n"]
  3492. 211 -->|true| 218
  3493. 211 -->|false| 221
  3494. 218["Block 218:\n %219 = call i8* @getErrorMessage()\n %220 = call i32 (i8*, ...) @printf(i8* getele...\n br label %225\n"]
  3495. 218 --> 225
  3496. 221["Block 221:\n br label %222\n"]
  3497. 221 --> 222
  3498. 222["Block 222:\n %223 = load i32, i32* %50, align 4\n %224 = add nsw i32 %223, 1\n store i32 %224, i32* %50, align 4\n br label %208\n"]
  3499. 222 --> 208
  3500. 225["Block 225:\n %226 = load %struct.DynamicArray*, %struct.Dy...\n %227 = getelementptr inbounds %struct.Dynamic...\n %228 = load i32*, i32** %227, align 8\n %229 = bitcast i32* %228 to i8*\n call void @free(i8* %229) #7\n %230 = load %struct.DynamicArray*, %struct.Dy...\n %231 = bitcast %struct.DynamicArray* %230 to i8*\n call void @free(i8* %231) #7\n store i32 0, i32* %51, align 4\n br label %232\n"]
  3501. 225 --> 232
  3502. 232["Block 232:\n %233 = load i32, i32* %51, align 4\n %234 = load %struct.Matrix*, %struct.Matrix**...\n %235 = getelementptr inbounds %struct.Matrix,...\n %236 = load i32, i32* %235, align 8\n %237 = icmp slt i32 %233, %236\n br i1 %237, label %238, label %266\n"]
  3503. 232 -->|true| 238
  3504. 232 -->|false| 266
  3505. 238["Block 238:\n %239 = load %struct.Matrix*, %struct.Matrix**...\n %240 = getelementptr inbounds %struct.Matrix,...\n %241 = load i32**, i32*** %240, align 8\n %242 = load i32, i32* %51, align 4\n %243 = sext i32 %242 to i64\n %244 = getelementptr inbounds i32*, i32** %24...\n %245 = load i32*, i32** %244, align 8\n %246 = bitcast i32* %245 to i8*\n call void @free(i8* %246) #7\n %247 = load %struct.Matrix*, %struct.Matrix**...\n %248 = getelementptr inbounds %struct.Matrix,...\n %249 = load i32**, i32*** %248, align 8\n %250 = load i32, i32* %51, align 4\n %251 = sext i32 %250 to i64\n %252 = getelementptr inbounds i32*, i32** %24...\n %253 = load i32*, i32** %252, align 8\n %254 = bitcast i32* %253 to i8*\n call void @free(i8* %254) #7\n %255 = load %struct.Matrix*, %struct.Matrix**...\n %256 = getelementptr inbounds %struct.Matrix,...\n %257 = load i32**, i32*** %256, align 8\n %258 = load i32, i32* %51, align 4\n %259 = sext i32 %258 to i64\n %260 = getelementptr inbounds i32*, i32** %25...\n %261 = load i32*, i32** %260, align 8\n %262 = bitcast i32* %261 to i8*\n call void @free(i8* %262) #7\n br label %263\n"]
  3506. 238 --> 263
  3507. 263["Block 263:\n %264 = load i32, i32* %51, align 4\n %265 = add nsw i32 %264, 1\n store i32 %265, i32* %51, align 4\n br label %232\n"]
  3508. 263 --> 232
  3509. 266["Block 266:\n %267 = load %struct.Matrix*, %struct.Matrix**...\n %268 = getelementptr inbounds %struct.Matrix,...\n %269 = load i32**, i32*** %268, align 8\n %270 = bitcast i32** %269 to i8*\n call void @free(i8* %270) #7\n %271 = load %struct.Matrix*, %struct.Matrix**...\n %272 = getelementptr inbounds %struct.Matrix,...\n %273 = load i32**, i32*** %272, align 8\n %274 = bitcast i32** %273 to i8*\n call void @free(i8* %274) #7\n %275 = load %struct.Matrix*, %struct.Matrix**...\n %276 = getelementptr inbounds %struct.Matrix,...\n %277 = load i32**, i32*** %276, align 8\n %278 = bitcast i32** %277 to i8*\n call void @free(i8* %278) #7\n %279 = load %struct.Matrix*, %struct.Matrix**...\n %280 = bitcast %struct.Matrix* %279 to i8*\n call void @free(i8* %280) #7\n %281 = load %struct.Matrix*, %struct.Matrix**...\n %282 = bitcast %struct.Matrix* %281 to i8*\n call void @free(i8* %282) #7\n %283 = load %struct.Matrix*, %struct.Matrix**...\n %284 = bitcast %struct.Matrix* %283 to i8*\n call void @free(i8* %284) #7\n %285 = load %struct.Node*, %struct.Node** %49...\n %286 = icmp ne %struct.Node* %285, null\n br i1 %286, label %287, label %355\n"]
  3510. 266 -->|true| 287
  3511. 266 -->|false| 355
  3512. 287["Block 287:\n %288 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %288, %struct.Node** %52,...\n %289 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %289, %struct.Node** %53,...\n store i32 0, i32* %54, align 4\n br label %290\n"]
  3513. 287 --> 290
  3514. 290["Block 290:\n %291 = load %struct.Node*, %struct.Node** %53...\n %292 = icmp ne %struct.Node* %291, null\n br i1 %292, label %293, label %298\n"]
  3515. 290 -->|true| 293
  3516. 290 -->|false| 298
  3517. 293["Block 293:\n %294 = load %struct.Node*, %struct.Node** %53...\n %295 = getelementptr inbounds %struct.Node, %...\n %296 = load %struct.Node*, %struct.Node** %29...\n %297 = icmp ne %struct.Node* %296, null\n br label %298\n"]
  3518. 293 --> 298
  3519. 298["Block 298:\n %299 = phi i1 [ false, %290 ], [ %297, %293 ]\n br i1 %299, label %300, label %314\n"]
  3520. 298 -->|true| 300
  3521. 298 -->|false| 314
  3522. 300["Block 300:\n %301 = load %struct.Node*, %struct.Node** %52...\n %302 = getelementptr inbounds %struct.Node, %...\n %303 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %303, %struct.Node** %52,...\n %304 = load %struct.Node*, %struct.Node** %53...\n %305 = getelementptr inbounds %struct.Node, %...\n %306 = load %struct.Node*, %struct.Node** %30...\n %307 = getelementptr inbounds %struct.Node, %...\n %308 = load %struct.Node*, %struct.Node** %30...\n store %struct.Node* %308, %struct.Node** %53,...\n %309 = load %struct.Node*, %struct.Node** %52...\n %310 = load %struct.Node*, %struct.Node** %53...\n %311 = icmp eq %struct.Node* %309, %310\n br i1 %311, label %312, label %313\n"]
  3523. 300 -->|true| 312
  3524. 300 -->|false| 313
  3525. 312["Block 312:\n store i32 1, i32* %54, align 4\n br label %314\n"]
  3526. 312 --> 314
  3527. 313["Block 313:\n br label %290\n"]
  3528. 313 --> 290
  3529. 314["Block 314:\n %315 = load i32, i32* %54, align 4\n %316 = icmp ne i32 %315, 0\n br i1 %316, label %317, label %343\n"]
  3530. 314 -->|true| 317
  3531. 314 -->|false| 343
  3532. 317["Block 317:\n call void @setErrorMessage(i8* getelementptr ...\n %318 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %318, %struct.Node** %55,...\n store i32 1000, i32* %56, align 4\n store i32 0, i32* %57, align 4\n br label %319\n"]
  3533. 317 --> 319
  3534. 319["Block 319:\n %320 = load %struct.Node*, %struct.Node** %55...\n %321 = icmp ne %struct.Node* %320, null\n br i1 %321, label %322, label %326\n"]
  3535. 319 -->|true| 322
  3536. 319 -->|false| 326
  3537. 322["Block 322:\n %323 = load i32, i32* %57, align 4\n %324 = load i32, i32* %56, align 4\n %325 = icmp slt i32 %323, %324\n br label %326\n"]
  3538. 322 --> 326
  3539. 326["Block 326:\n %327 = phi i1 [ false, %319 ], [ %325, %322 ]\n br i1 %327, label %328, label %342\n"]
  3540. 326 -->|true| 328
  3541. 326 -->|false| 342
  3542. 328["Block 328:\n %329 = load %struct.Node*, %struct.Node** %55...\n %330 = getelementptr inbounds %struct.Node, %...\n %331 = load i32, i32* %330, align 8\n %332 = icmp ne i32 %331, 0\n br i1 %332, label %333, label %334\n"]
  3543. 328 -->|true| 333
  3544. 328 -->|false| 334
  3545. 333["Block 333:\n br label %342\n"]
  3546. 333 --> 342
  3547. 334["Block 334:\n %335 = load %struct.Node*, %struct.Node** %55...\n %336 = getelementptr inbounds %struct.Node, %...\n store i32 1, i32* %336, align 8\n %337 = load %struct.Node*, %struct.Node** %55...\n %338 = getelementptr inbounds %struct.Node, %...\n %339 = load %struct.Node*, %struct.Node** %33...\n store %struct.Node* %339, %struct.Node** %55,...\n %340 = load i32, i32* %57, align 4\n %341 = add nsw i32 %340, 1\n store i32 %341, i32* %57, align 4\n br label %319\n"]
  3548. 334 --> 319
  3549. 342["Block 342:\n br label %343\n"]
  3550. 342 --> 343
  3551. 343["Block 343:\n br label %344\n"]
  3552. 343 --> 344
  3553. 344["Block 344:\n %345 = load %struct.Node*, %struct.Node** %49...\n %346 = icmp ne %struct.Node* %345, null\n br i1 %346, label %347, label %354\n"]
  3554. 344 -->|true| 347
  3555. 344 -->|false| 354
  3556. 347["Block 347:\n %348 = load %struct.Node*, %struct.Node** %49...\n store %struct.Node* %348, %struct.Node** %58,...\n %349 = load %struct.Node*, %struct.Node** %49...\n %350 = getelementptr inbounds %struct.Node, %...\n %351 = load %struct.Node*, %struct.Node** %35...\n store %struct.Node* %351, %struct.Node** %49,...\n %352 = load %struct.Node*, %struct.Node** %58...\n %353 = bitcast %struct.Node* %352 to i8*\n call void @free(i8* %353) #7\n br label %344\n"]
  3557. 347 --> 344
  3558. 354["Block 354:\n br label %355\n"]
  3559. 354 --> 355
  3560. 355["Block 355:\n %356 = load i8*, i8** @globalErrorMessage, al...\n %357 = icmp ne i8* %356, null\n br i1 %357, label %358, label %360\n"]
  3561. 355 -->|true| 358
  3562. 355 -->|false| 360
  3563. 358["Block 358:\n %359 = load i8*, i8** @globalErrorMessage, al...\n call void @free(i8* %359) #7\n br label %360\n"]
  3564. 358 --> 360
  3565. 360["Block 360:\n %361 = call i32 @fused_performSimpleCalculati...\n store i32 0, i32* %40, align 4\n br label %362\n"]
  3566. 360 --> 362
  3567. 362["Block 362:\n %363 = load i32, i32* %40, align 4\n %struct.bunker = insertvalue %fused_return_pr...\n ret %fused_return_projectA_main_memoizedFib %...\n"]
  3568. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3569. ```
  3570. [INFO][performCodeFusion] Completed function fusion: fused_projectA_main
  3571. [INFO][performCodeFusion] Processing function pair: target=processMatrix, bunker=createDynamicArray
  3572. [INFO][performCodeFusion] adding: %5
  3573. [INFO][performCodeFusion] before push Block ID: %5
  3574. [INFO][performCodeFusion] adding: %56
  3575. [INFO][performCodeFusion] adding: %60
  3576. [INFO][performCodeFusion] adding: %61
  3577. [INFO][performCodeFusion] adding: %63
  3578. [INFO][performCodeFusion] adding: %67
  3579. [INFO][performCodeFusion] adding: %71
  3580. [INFO][performCodeFusion] adding: %72
  3581. [INFO][performCodeFusion] adding: %83
  3582. [INFO][performCodeFusion] adding: %87
  3583. [INFO][performCodeFusion] adding: %90
  3584. [INFO][performCodeFusion] adding: %101
  3585. [INFO][performCodeFusion] adding: %112
  3586. [INFO][performCodeFusion] adding: %124
  3587. [INFO][performCodeFusion] adding: %125
  3588. [INFO][performCodeFusion] adding: %126
  3589. [INFO][performCodeFusion] adding: %127
  3590. [INFO][performCodeFusion] before push Block ID: %56
  3591. [INFO][performCodeFusion] before push Block ID: %60
  3592. [INFO][performCodeFusion] before push Block ID: %61
  3593. [INFO][performCodeFusion] before push Block ID: %63
  3594. [INFO][performCodeFusion] before push Block ID: %67
  3595. [INFO][performCodeFusion] before push Block ID: %71
  3596. [INFO][performCodeFusion] before push Block ID: %72
  3597. [INFO][performCodeFusion] before push Block ID: %83
  3598. [INFO][performCodeFusion] before push Block ID: %87
  3599. [INFO][performCodeFusion] before push Block ID: %90
  3600. [INFO][performCodeFusion] before push Block ID: %101
  3601. [INFO][performCodeFusion] before push Block ID: %112
  3602. [INFO][performCodeFusion] before push Block ID: %124
  3603. [INFO][performCodeFusion] before push Block ID: %125
  3604. [INFO][performCodeFusion] before push Block ID: %126
  3605. [INFO][performCodeFusion] before push Block ID: %127
  3606. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_createDynamicArray
  3607. ```mermaid: fused_createDynamicArray
  3608. graph TD
  3609. entry["Block entry:\n br label %target_cond_0\n"]
  3610. entry --> target_cond_0
  3611. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  3612. target_cond_0 -->|true| 5
  3613. target_cond_0 -->|false| target_skip_0
  3614. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3615. target_skip_0 --> target_phi_0
  3616. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3617. target_phi_0 --> bunker_cond_0
  3618. 5["Block 5:\n %6 = alloca [100 x i32]*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n store [100 x i32]* %2, [100 x i32]** %6, align 8\n store i32 %3, i32* %7, align 4\n store i32 0, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  3619. 5 --> target_phi_0
  3620. bunker_cond_0["Block bunker_cond_0:\n %11 = icmp eq i1 %0, false\n br i1 %11, label %12, label %bunker_skip_0\n"]
  3621. bunker_cond_0 -->|true| 12
  3622. bunker_cond_0 -->|false| bunker_skip_0
  3623. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3624. bunker_skip_0 --> bunker_phi_0
  3625. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  3626. bunker_phi_0 --> target_cond_1
  3627. 12["Block 12:\n %13 = alloca %struct.DynamicArray*, align 8\n %14 = alloca i32, align 4\n %15 = alloca %struct.DynamicArray*, align 8\n store i32 %1, i32* %14, align 4\n %16 = load i32, i32* %14, align 4\n %17 = icmp sle i32 %16, 0\n br i1 %17, label %18, label %19\n"]
  3628. 12 -->|true| 18
  3629. 12 -->|false| 19
  3630. 18["Block 18:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3631. 18 --> 131
  3632. 19["Block 19:\n %20 = load i32, i32* %14, align 4\n %21 = icmp sgt i32 %20, 1000\n br i1 %21, label %22, label %23\n"]
  3633. 19 -->|true| 22
  3634. 19 -->|false| 23
  3635. 22["Block 22:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3636. 22 --> 131
  3637. 23["Block 23:\n %24 = call noalias i8* @malloc(i64 24) #7\n %25 = bitcast i8* %24 to %struct.DynamicArray*\n store %struct.DynamicArray* %25, %struct.Dyna...\n %26 = load %struct.DynamicArray*, %struct.Dyn...\n %27 = icmp ne %struct.DynamicArray* %26, null\n br i1 %27, label %29, label %28\n"]
  3638. 23 -->|true| 29
  3639. 23 -->|false| 28
  3640. 28["Block 28:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3641. 28 --> 131
  3642. 29["Block 29:\n %30 = load i32, i32* %14, align 4\n %31 = sext i32 %30 to i64\n %32 = mul i64 4, %31\n %33 = call noalias i8* @malloc(i64 %32) #7\n %34 = bitcast i8* %33 to i32*\n %35 = load %struct.DynamicArray*, %struct.Dyn...\n %36 = getelementptr inbounds %struct.DynamicA...\n store i32* %34, i32** %36, align 8\n %37 = load %struct.DynamicArray*, %struct.Dyn...\n %38 = getelementptr inbounds %struct.DynamicA...\n %39 = load i32*, i32** %38, align 8\n %40 = icmp ne i32* %39, null\n br i1 %40, label %44, label %41\n"]
  3643. 29 -->|true| 44
  3644. 29 -->|false| 41
  3645. 41["Block 41:\n %42 = load %struct.DynamicArray*, %struct.Dyn...\n %43 = bitcast %struct.DynamicArray* %42 to i8*\n call void @free(i8* %43) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3646. 41 --> 131
  3647. 44["Block 44:\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %46, align 8\n %47 = load i32, i32* %14, align 4\n %48 = load %struct.DynamicArray*, %struct.Dyn...\n %49 = getelementptr inbounds %struct.DynamicA...\n store i32 %47, i32* %49, align 4\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %51, align 8\n %52 = load %struct.DynamicArray*, %struct.Dyn...\n %53 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %53, align 4\n %54 = load %struct.DynamicArray*, %struct.Dyn...\n store %struct.DynamicArray* %54, %struct.Dyna...\n br label %bunker_phi_0\n"]
  3648. 44 --> bunker_phi_0
  3649. target_cond_1["Block target_cond_1:\n %55 = icmp eq i1 %0, true\n br i1 %55, label %56, label %target_skip_1\n"]
  3650. target_cond_1 -->|true| 56
  3651. target_cond_1 -->|false| target_skip_1
  3652. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  3653. target_skip_1 --> target_phi_1
  3654. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  3655. target_phi_1 --> bunker_cond_1
  3656. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = load i32, i32* %7, align 4\n %59 = icmp slt i32 %57, %58\n br i1 %59, label %60, label %61\n"]
  3657. 56 -->|true| 60
  3658. 56 -->|false| 61
  3659. 60["Block 60:\n store i32 0, i32* %10, align 4\n br label %63\n"]
  3660. 60 --> 63
  3661. 61["Block 61:\n %62 = load i32, i32* %8, align 4\n ret i32 %81\n"]
  3662. 63["Block 63:\n %64 = load i32, i32* %10, align 4\n %65 = load i32, i32* %7, align 4\n %66 = icmp slt i32 %64, %65\n br i1 %66, label %67, label %71\n"]
  3663. 63 -->|true| 67
  3664. 63 -->|false| 71
  3665. 67["Block 67:\n %68 = load i32, i32* %9, align 4\n %69 = load i32, i32* %10, align 4\n %70 = icmp eq i32 %68, %69\n br i1 %70, label %72, label %83\n"]
  3666. 67 -->|true| 72
  3667. 67 -->|false| 83
  3668. 71["Block 71:\n br label %87\n"]
  3669. 71 --> 87
  3670. 72["Block 72:\n %73 = load [100 x i32]*, [100 x i32]** %6, al...\n %74 = load i32, i32* %9, align 4\n %75 = sext i32 %74 to i64\n %76 = getelementptr inbounds [100 x i32], [10...\n %77 = load i32, i32* %10, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = srem i32 %80, 2\n %82 = icmp eq i32 %81, 0\n br i1 %82, label %90, label %101\n"]
  3671. 72 -->|true| 90
  3672. 72 -->|false| 101
  3673. 83["Block 83:\n %84 = load i32, i32* %9, align 4\n %85 = load i32, i32* %10, align 4\n %86 = icmp slt i32 %84, %85\n br i1 %86, label %112, label %124\n"]
  3674. 83 -->|true| 112
  3675. 83 -->|false| 124
  3676. 87["Block 87:\n %88 = load i32, i32* %9, align 4\n %89 = add nsw i32 %88, 1\n store i32 %89, i32* %9, align 4\n br label %56\n"]
  3677. 87 --> 56
  3678. 90["Block 90:\n %91 = load [100 x i32]*, [100 x i32]** %6, al...\n %92 = load i32, i32* %9, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %10, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds [100 x i32], [10...\n %98 = load i32, i32* %97, align 4\n %99 = load i32, i32* %8, align 4\n %100 = add nsw i32 %99, %98\n store i32 %100, i32* %8, align 4\n br label %125\n"]
  3679. 90 --> 125
  3680. 101["Block 101:\n %102 = load [100 x i32]*, [100 x i32]** %6, a...\n %103 = load i32, i32* %9, align 4\n %104 = sext i32 %103 to i64\n %105 = getelementptr inbounds [100 x i32], [1...\n %106 = load i32, i32* %10, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds [100 x i32], [1...\n %109 = load i32, i32* %108, align 4\n %110 = load i32, i32* %8, align 4\n %111 = sub nsw i32 %110, %109\n store i32 %111, i32* %8, align 4\n br label %125\n"]
  3681. 101 --> 125
  3682. 112["Block 112:\n %113 = load [100 x i32]*, [100 x i32]** %6, a...\n %114 = load i32, i32* %9, align 4\n %115 = sext i32 %114 to i64\n %116 = getelementptr inbounds [100 x i32], [1...\n %117 = load i32, i32* %10, align 4\n %118 = sext i32 %117 to i64\n %119 = getelementptr inbounds [100 x i32], [1...\n %120 = load i32, i32* %119, align 4\n %121 = call i32 @fused_quickSort(i1 true, i32...\n %122 = load i32, i32* %8, align 4\n %123 = add nsw i32 %122, %121\n store i32 %123, i32* %8, align 4\n br label %124\n"]
  3683. 112 --> 124
  3684. 124["Block 124:\n br label %126\n"]
  3685. 124 --> 126
  3686. 125["Block 125:\n br label %126\n"]
  3687. 125 --> 126
  3688. 126["Block 126:\n br label %127\n"]
  3689. 126 --> 127
  3690. 127["Block 127:\n %128 = load i32, i32* %10, align 4\n %129 = add nsw i32 %128, 1\n store i32 %129, i32* %10, align 4\n br label %target_phi_1\n"]
  3691. 127 --> target_phi_1
  3692. bunker_cond_1["Block bunker_cond_1:\n %130 = icmp eq i1 %0, false\n br i1 %130, label %131, label %bunker_skip_1\n"]
  3693. bunker_cond_1 -->|true| 131
  3694. bunker_cond_1 -->|false| bunker_skip_1
  3695. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  3696. bunker_skip_1 --> bunker_phi_1
  3697. bunker_phi_1["Block bunker_phi_1:\n ret %fused_return_createDynamicArray_processM...\n"]
  3698. 131["Block 131:\n %132 = load %struct.DynamicArray*, %struct.Dy...\n ret %struct.DynamicArray* %132\n br label %bunker_phi_1\n"]
  3699. 131 --> bunker_phi_1
  3700. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3701. ```
  3702. [DEBUG][performCodeFusion] Processing return values for fused function: fused_createDynamicArray
  3703. [DEBUG][performCodeFusion] Fused function return type: fused_return_createDynamicArray_processMatrix
  3704. [DEBUG][performCodeFusion] Processing struct return type with 2 elements
  3705. [DEBUG][performCodeFusion] Setting default target return value
  3706. [DEBUG][performCodeFusion] Created struct return for bunker block: %131 with types: target=i32, bunker=struct.DynamicArray*
  3707. [DEBUG][performCodeFusion] Removing extra instruction after return in block %131: br
  3708. [DEBUG][performCodeFusion] Created struct return for target block: %61 with types: target=i32, bunker=struct.DynamicArray*
  3709. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_createDynamicArray
  3710. ```mermaid: fused_createDynamicArray
  3711. graph TD
  3712. entry["Block entry:\n br label %target_cond_0\n"]
  3713. entry --> target_cond_0
  3714. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  3715. target_cond_0 -->|true| 5
  3716. target_cond_0 -->|false| target_skip_0
  3717. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3718. target_skip_0 --> target_phi_0
  3719. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3720. target_phi_0 --> bunker_cond_0
  3721. 5["Block 5:\n %6 = alloca [100 x i32]*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n store [100 x i32]* %2, [100 x i32]** %6, align 8\n store i32 %3, i32* %7, align 4\n store i32 0, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  3722. 5 --> target_phi_0
  3723. bunker_cond_0["Block bunker_cond_0:\n %11 = icmp eq i1 %0, false\n br i1 %11, label %12, label %bunker_skip_0\n"]
  3724. bunker_cond_0 -->|true| 12
  3725. bunker_cond_0 -->|false| bunker_skip_0
  3726. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3727. bunker_skip_0 --> bunker_phi_0
  3728. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  3729. bunker_phi_0 --> target_cond_1
  3730. 12["Block 12:\n %13 = alloca %struct.DynamicArray*, align 8\n %14 = alloca i32, align 4\n %15 = alloca %struct.DynamicArray*, align 8\n store i32 %1, i32* %14, align 4\n %16 = load i32, i32* %14, align 4\n %17 = icmp sle i32 %16, 0\n br i1 %17, label %18, label %19\n"]
  3731. 12 -->|true| 18
  3732. 12 -->|false| 19
  3733. 18["Block 18:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3734. 18 --> 131
  3735. 19["Block 19:\n %20 = load i32, i32* %14, align 4\n %21 = icmp sgt i32 %20, 1000\n br i1 %21, label %22, label %23\n"]
  3736. 19 -->|true| 22
  3737. 19 -->|false| 23
  3738. 22["Block 22:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3739. 22 --> 131
  3740. 23["Block 23:\n %24 = call noalias i8* @malloc(i64 24) #7\n %25 = bitcast i8* %24 to %struct.DynamicArray*\n store %struct.DynamicArray* %25, %struct.Dyna...\n %26 = load %struct.DynamicArray*, %struct.Dyn...\n %27 = icmp ne %struct.DynamicArray* %26, null\n br i1 %27, label %29, label %28\n"]
  3741. 23 -->|true| 29
  3742. 23 -->|false| 28
  3743. 28["Block 28:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3744. 28 --> 131
  3745. 29["Block 29:\n %30 = load i32, i32* %14, align 4\n %31 = sext i32 %30 to i64\n %32 = mul i64 4, %31\n %33 = call noalias i8* @malloc(i64 %32) #7\n %34 = bitcast i8* %33 to i32*\n %35 = load %struct.DynamicArray*, %struct.Dyn...\n %36 = getelementptr inbounds %struct.DynamicA...\n store i32* %34, i32** %36, align 8\n %37 = load %struct.DynamicArray*, %struct.Dyn...\n %38 = getelementptr inbounds %struct.DynamicA...\n %39 = load i32*, i32** %38, align 8\n %40 = icmp ne i32* %39, null\n br i1 %40, label %44, label %41\n"]
  3746. 29 -->|true| 44
  3747. 29 -->|false| 41
  3748. 41["Block 41:\n %42 = load %struct.DynamicArray*, %struct.Dyn...\n %43 = bitcast %struct.DynamicArray* %42 to i8*\n call void @free(i8* %43) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3749. 41 --> 131
  3750. 44["Block 44:\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %46, align 8\n %47 = load i32, i32* %14, align 4\n %48 = load %struct.DynamicArray*, %struct.Dyn...\n %49 = getelementptr inbounds %struct.DynamicA...\n store i32 %47, i32* %49, align 4\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %51, align 8\n %52 = load %struct.DynamicArray*, %struct.Dyn...\n %53 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %53, align 4\n %54 = load %struct.DynamicArray*, %struct.Dyn...\n store %struct.DynamicArray* %54, %struct.Dyna...\n br label %bunker_phi_0\n"]
  3751. 44 --> bunker_phi_0
  3752. target_cond_1["Block target_cond_1:\n %55 = icmp eq i1 %0, true\n br i1 %55, label %56, label %target_skip_1\n"]
  3753. target_cond_1 -->|true| 56
  3754. target_cond_1 -->|false| target_skip_1
  3755. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  3756. target_skip_1 --> target_phi_1
  3757. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  3758. target_phi_1 --> bunker_cond_1
  3759. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = load i32, i32* %7, align 4\n %59 = icmp slt i32 %57, %58\n br i1 %59, label %60, label %61\n"]
  3760. 56 -->|true| 60
  3761. 56 -->|false| 61
  3762. 60["Block 60:\n store i32 0, i32* %10, align 4\n br label %63\n"]
  3763. 60 --> 63
  3764. 61["Block 61:\n %62 = load i32, i32* %8, align 4\n %struct.target = insertvalue %fused_return_cr...\n %struct.bunker1 = insertvalue %fused_return_c...\n ret %fused_return_createDynamicArray_processM...\n"]
  3765. 63["Block 63:\n %64 = load i32, i32* %10, align 4\n %65 = load i32, i32* %7, align 4\n %66 = icmp slt i32 %64, %65\n br i1 %66, label %67, label %71\n"]
  3766. 63 -->|true| 67
  3767. 63 -->|false| 71
  3768. 67["Block 67:\n %68 = load i32, i32* %9, align 4\n %69 = load i32, i32* %10, align 4\n %70 = icmp eq i32 %68, %69\n br i1 %70, label %72, label %83\n"]
  3769. 67 -->|true| 72
  3770. 67 -->|false| 83
  3771. 71["Block 71:\n br label %87\n"]
  3772. 71 --> 87
  3773. 72["Block 72:\n %73 = load [100 x i32]*, [100 x i32]** %6, al...\n %74 = load i32, i32* %9, align 4\n %75 = sext i32 %74 to i64\n %76 = getelementptr inbounds [100 x i32], [10...\n %77 = load i32, i32* %10, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = srem i32 %80, 2\n %82 = icmp eq i32 %81, 0\n br i1 %82, label %90, label %101\n"]
  3774. 72 -->|true| 90
  3775. 72 -->|false| 101
  3776. 83["Block 83:\n %84 = load i32, i32* %9, align 4\n %85 = load i32, i32* %10, align 4\n %86 = icmp slt i32 %84, %85\n br i1 %86, label %112, label %124\n"]
  3777. 83 -->|true| 112
  3778. 83 -->|false| 124
  3779. 87["Block 87:\n %88 = load i32, i32* %9, align 4\n %89 = add nsw i32 %88, 1\n store i32 %89, i32* %9, align 4\n br label %56\n"]
  3780. 87 --> 56
  3781. 90["Block 90:\n %91 = load [100 x i32]*, [100 x i32]** %6, al...\n %92 = load i32, i32* %9, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %10, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds [100 x i32], [10...\n %98 = load i32, i32* %97, align 4\n %99 = load i32, i32* %8, align 4\n %100 = add nsw i32 %99, %98\n store i32 %100, i32* %8, align 4\n br label %125\n"]
  3782. 90 --> 125
  3783. 101["Block 101:\n %102 = load [100 x i32]*, [100 x i32]** %6, a...\n %103 = load i32, i32* %9, align 4\n %104 = sext i32 %103 to i64\n %105 = getelementptr inbounds [100 x i32], [1...\n %106 = load i32, i32* %10, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds [100 x i32], [1...\n %109 = load i32, i32* %108, align 4\n %110 = load i32, i32* %8, align 4\n %111 = sub nsw i32 %110, %109\n store i32 %111, i32* %8, align 4\n br label %125\n"]
  3784. 101 --> 125
  3785. 112["Block 112:\n %113 = load [100 x i32]*, [100 x i32]** %6, a...\n %114 = load i32, i32* %9, align 4\n %115 = sext i32 %114 to i64\n %116 = getelementptr inbounds [100 x i32], [1...\n %117 = load i32, i32* %10, align 4\n %118 = sext i32 %117 to i64\n %119 = getelementptr inbounds [100 x i32], [1...\n %120 = load i32, i32* %119, align 4\n %121 = call i32 @fused_quickSort(i1 true, i32...\n %122 = load i32, i32* %8, align 4\n %123 = add nsw i32 %122, %121\n store i32 %123, i32* %8, align 4\n br label %124\n"]
  3786. 112 --> 124
  3787. 124["Block 124:\n br label %126\n"]
  3788. 124 --> 126
  3789. 125["Block 125:\n br label %126\n"]
  3790. 125 --> 126
  3791. 126["Block 126:\n br label %127\n"]
  3792. 126 --> 127
  3793. 127["Block 127:\n %128 = load i32, i32* %10, align 4\n %129 = add nsw i32 %128, 1\n store i32 %129, i32* %10, align 4\n br label %target_phi_1\n"]
  3794. 127 --> target_phi_1
  3795. bunker_cond_1["Block bunker_cond_1:\n %130 = icmp eq i1 %0, false\n br i1 %130, label %131, label %bunker_skip_1\n"]
  3796. bunker_cond_1 -->|true| 131
  3797. bunker_cond_1 -->|false| bunker_skip_1
  3798. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  3799. bunker_skip_1 --> bunker_phi_1
  3800. bunker_phi_1["Block bunker_phi_1:\n ret %fused_return_createDynamicArray_processM...\n"]
  3801. 131["Block 131:\n %132 = load %struct.DynamicArray*, %struct.Dy...\n %struct.bunker = insertvalue %fused_return_cr...\n ret %fused_return_createDynamicArray_processM...\n"]
  3802. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3803. ```
  3804. [DEBUG][updateCallSite] Original call instruction:
  3805. %61 = call %struct.DynamicArray* @createDynamicArray(i32 10)
  3806. [DEBUG][updateCallSite] Adding bunker control parameter
  3807. [DEBUG][updateCallSite] Adding original call parameters:
  3808. [DEBUG][updateCallSite] Argument 0: type=i32
  3809. [DEBUG][updateCallSite] Adding default target parameters:
  3810. [DEBUG][updateCallSite] Parameter type: array of i32*
  3811. [DEBUG][updateCallSite] Parameter type: i32
  3812. [DEBUG][updateCallSite] New call instruction:
  3813. %61 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 false, i32 10, [100 x i32]* null, i32 0)
  3814. [DEBUG][updateCallSite] Processing non-void return value of type: struct.DynamicArray*
  3815. [DEBUG][updateCallSite] Extracting value from struct return type
  3816. [DEBUG][updateCallSite] Extracted value type: struct.DynamicArray*
  3817. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3818. [INFO][updateCallSite] Successfully updated call site from %61 = call %struct.DynamicArray* @createDynamicArray(i32 10) to %61 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 false, i32 10, [100 x i32]* null, i32 0)
  3819. [DEBUG][updateCallSite] Original call instruction:
  3820. %18 = call i32 @processMatrix([100 x i32]* %17, i32 3)
  3821. [DEBUG][updateCallSite] Adding target control parameter
  3822. [DEBUG][updateCallSite] Adding default bunker parameters:
  3823. [DEBUG][updateCallSite] Parameter type: i32
  3824. [DEBUG][updateCallSite] Adding original call parameters:
  3825. [DEBUG][updateCallSite] Argument 0: type=array of i32*
  3826. [DEBUG][updateCallSite] Argument 1: type=i32
  3827. [DEBUG][updateCallSite] New call instruction:
  3828. %18 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 true, i32 0, [100 x i32]* %17, i32 3)
  3829. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  3830. [DEBUG][updateCallSite] Extracting value from struct return type
  3831. [DEBUG][updateCallSite] Extracted value type: i32
  3832. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  3833. [INFO][updateCallSite] Successfully updated call site from %18 = call i32 @processMatrix([100 x i32]* %17, i32 3) to %18 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 true, i32 0, [100 x i32]* %17, i32 3)
  3834. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_createDynamicArray
  3835. ```mermaid: fused_createDynamicArray
  3836. graph TD
  3837. entry["Block entry:\n br label %target_cond_0\n"]
  3838. entry --> target_cond_0
  3839. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  3840. target_cond_0 -->|true| 5
  3841. target_cond_0 -->|false| target_skip_0
  3842. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3843. target_skip_0 --> target_phi_0
  3844. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3845. target_phi_0 --> bunker_cond_0
  3846. 5["Block 5:\n %6 = alloca [100 x i32]*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n store [100 x i32]* %2, [100 x i32]** %6, align 8\n store i32 %3, i32* %7, align 4\n store i32 0, i32* %8, align 4\n store i32 0, i32* %9, align 4\n br label %target_phi_0\n"]
  3847. 5 --> target_phi_0
  3848. bunker_cond_0["Block bunker_cond_0:\n %11 = icmp eq i1 %0, false\n br i1 %11, label %12, label %bunker_skip_0\n"]
  3849. bunker_cond_0 -->|true| 12
  3850. bunker_cond_0 -->|false| bunker_skip_0
  3851. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3852. bunker_skip_0 --> bunker_phi_0
  3853. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  3854. bunker_phi_0 --> target_cond_1
  3855. 12["Block 12:\n %13 = alloca %struct.DynamicArray*, align 8\n %14 = alloca i32, align 4\n %15 = alloca %struct.DynamicArray*, align 8\n store i32 %1, i32* %14, align 4\n %16 = load i32, i32* %14, align 4\n %17 = icmp sle i32 %16, 0\n br i1 %17, label %18, label %19\n"]
  3856. 12 -->|true| 18
  3857. 12 -->|false| 19
  3858. 18["Block 18:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3859. 18 --> 131
  3860. 19["Block 19:\n %20 = load i32, i32* %14, align 4\n %21 = icmp sgt i32 %20, 1000\n br i1 %21, label %22, label %23\n"]
  3861. 19 -->|true| 22
  3862. 19 -->|false| 23
  3863. 22["Block 22:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3864. 22 --> 131
  3865. 23["Block 23:\n %24 = call noalias i8* @malloc(i64 24) #7\n %25 = bitcast i8* %24 to %struct.DynamicArray*\n store %struct.DynamicArray* %25, %struct.Dyna...\n %26 = load %struct.DynamicArray*, %struct.Dyn...\n %27 = icmp ne %struct.DynamicArray* %26, null\n br i1 %27, label %29, label %28\n"]
  3866. 23 -->|true| 29
  3867. 23 -->|false| 28
  3868. 28["Block 28:\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3869. 28 --> 131
  3870. 29["Block 29:\n %30 = load i32, i32* %14, align 4\n %31 = sext i32 %30 to i64\n %32 = mul i64 4, %31\n %33 = call noalias i8* @malloc(i64 %32) #7\n %34 = bitcast i8* %33 to i32*\n %35 = load %struct.DynamicArray*, %struct.Dyn...\n %36 = getelementptr inbounds %struct.DynamicA...\n store i32* %34, i32** %36, align 8\n %37 = load %struct.DynamicArray*, %struct.Dyn...\n %38 = getelementptr inbounds %struct.DynamicA...\n %39 = load i32*, i32** %38, align 8\n %40 = icmp ne i32* %39, null\n br i1 %40, label %44, label %41\n"]
  3871. 29 -->|true| 44
  3872. 29 -->|false| 41
  3873. 41["Block 41:\n %42 = load %struct.DynamicArray*, %struct.Dyn...\n %43 = bitcast %struct.DynamicArray* %42 to i8*\n call void @free(i8* %43) #7\n call void @setErrorMessage(i8* getelementptr ...\n store %struct.DynamicArray* null, %struct.Dyn...\n br label %131\n"]
  3874. 41 --> 131
  3875. 44["Block 44:\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %46, align 8\n %47 = load i32, i32* %14, align 4\n %48 = load %struct.DynamicArray*, %struct.Dyn...\n %49 = getelementptr inbounds %struct.DynamicA...\n store i32 %47, i32* %49, align 4\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %51, align 8\n %52 = load %struct.DynamicArray*, %struct.Dyn...\n %53 = getelementptr inbounds %struct.DynamicA...\n store i32 0, i32* %53, align 4\n %54 = load %struct.DynamicArray*, %struct.Dyn...\n store %struct.DynamicArray* %54, %struct.Dyna...\n br label %bunker_phi_0\n"]
  3876. 44 --> bunker_phi_0
  3877. target_cond_1["Block target_cond_1:\n %55 = icmp eq i1 %0, true\n br i1 %55, label %56, label %target_skip_1\n"]
  3878. target_cond_1 -->|true| 56
  3879. target_cond_1 -->|false| target_skip_1
  3880. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  3881. target_skip_1 --> target_phi_1
  3882. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  3883. target_phi_1 --> bunker_cond_1
  3884. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = load i32, i32* %7, align 4\n %59 = icmp slt i32 %57, %58\n br i1 %59, label %60, label %61\n"]
  3885. 56 -->|true| 60
  3886. 56 -->|false| 61
  3887. 60["Block 60:\n store i32 0, i32* %10, align 4\n br label %63\n"]
  3888. 60 --> 63
  3889. 61["Block 61:\n %62 = load i32, i32* %8, align 4\n %struct.target = insertvalue %fused_return_cr...\n %struct.bunker1 = insertvalue %fused_return_c...\n ret %fused_return_createDynamicArray_processM...\n"]
  3890. 63["Block 63:\n %64 = load i32, i32* %10, align 4\n %65 = load i32, i32* %7, align 4\n %66 = icmp slt i32 %64, %65\n br i1 %66, label %67, label %71\n"]
  3891. 63 -->|true| 67
  3892. 63 -->|false| 71
  3893. 67["Block 67:\n %68 = load i32, i32* %9, align 4\n %69 = load i32, i32* %10, align 4\n %70 = icmp eq i32 %68, %69\n br i1 %70, label %72, label %83\n"]
  3894. 67 -->|true| 72
  3895. 67 -->|false| 83
  3896. 71["Block 71:\n br label %87\n"]
  3897. 71 --> 87
  3898. 72["Block 72:\n %73 = load [100 x i32]*, [100 x i32]** %6, al...\n %74 = load i32, i32* %9, align 4\n %75 = sext i32 %74 to i64\n %76 = getelementptr inbounds [100 x i32], [10...\n %77 = load i32, i32* %10, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds [100 x i32], [10...\n %80 = load i32, i32* %79, align 4\n %81 = srem i32 %80, 2\n %82 = icmp eq i32 %81, 0\n br i1 %82, label %90, label %101\n"]
  3899. 72 -->|true| 90
  3900. 72 -->|false| 101
  3901. 83["Block 83:\n %84 = load i32, i32* %9, align 4\n %85 = load i32, i32* %10, align 4\n %86 = icmp slt i32 %84, %85\n br i1 %86, label %112, label %124\n"]
  3902. 83 -->|true| 112
  3903. 83 -->|false| 124
  3904. 87["Block 87:\n %88 = load i32, i32* %9, align 4\n %89 = add nsw i32 %88, 1\n store i32 %89, i32* %9, align 4\n br label %56\n"]
  3905. 87 --> 56
  3906. 90["Block 90:\n %91 = load [100 x i32]*, [100 x i32]** %6, al...\n %92 = load i32, i32* %9, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds [100 x i32], [10...\n %95 = load i32, i32* %10, align 4\n %96 = sext i32 %95 to i64\n %97 = getelementptr inbounds [100 x i32], [10...\n %98 = load i32, i32* %97, align 4\n %99 = load i32, i32* %8, align 4\n %100 = add nsw i32 %99, %98\n store i32 %100, i32* %8, align 4\n br label %125\n"]
  3907. 90 --> 125
  3908. 101["Block 101:\n %102 = load [100 x i32]*, [100 x i32]** %6, a...\n %103 = load i32, i32* %9, align 4\n %104 = sext i32 %103 to i64\n %105 = getelementptr inbounds [100 x i32], [1...\n %106 = load i32, i32* %10, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds [100 x i32], [1...\n %109 = load i32, i32* %108, align 4\n %110 = load i32, i32* %8, align 4\n %111 = sub nsw i32 %110, %109\n store i32 %111, i32* %8, align 4\n br label %125\n"]
  3909. 101 --> 125
  3910. 112["Block 112:\n %113 = load [100 x i32]*, [100 x i32]** %6, a...\n %114 = load i32, i32* %9, align 4\n %115 = sext i32 %114 to i64\n %116 = getelementptr inbounds [100 x i32], [1...\n %117 = load i32, i32* %10, align 4\n %118 = sext i32 %117 to i64\n %119 = getelementptr inbounds [100 x i32], [1...\n %120 = load i32, i32* %119, align 4\n %121 = call i32 @fused_quickSort(i1 true, i32...\n %122 = load i32, i32* %8, align 4\n %123 = add nsw i32 %122, %121\n store i32 %123, i32* %8, align 4\n br label %124\n"]
  3911. 112 --> 124
  3912. 124["Block 124:\n br label %126\n"]
  3913. 124 --> 126
  3914. 125["Block 125:\n br label %126\n"]
  3915. 125 --> 126
  3916. 126["Block 126:\n br label %127\n"]
  3917. 126 --> 127
  3918. 127["Block 127:\n %128 = load i32, i32* %10, align 4\n %129 = add nsw i32 %128, 1\n store i32 %129, i32* %10, align 4\n br label %target_phi_1\n"]
  3919. 127 --> target_phi_1
  3920. bunker_cond_1["Block bunker_cond_1:\n %130 = icmp eq i1 %0, false\n br i1 %130, label %131, label %bunker_skip_1\n"]
  3921. bunker_cond_1 -->|true| 131
  3922. bunker_cond_1 -->|false| bunker_skip_1
  3923. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  3924. bunker_skip_1 --> bunker_phi_1
  3925. bunker_phi_1["Block bunker_phi_1:\n ret %fused_return_createDynamicArray_processM...\n"]
  3926. 131["Block 131:\n %132 = load %struct.DynamicArray*, %struct.Dy...\n %struct.bunker = insertvalue %fused_return_cr...\n ret %fused_return_createDynamicArray_processM...\n"]
  3927. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  3928. ```
  3929. [INFO][performCodeFusion] Completed function fusion: fused_createDynamicArray
  3930. [INFO][performCodeFusion] Processing function pair: target=projectB_main, bunker=setErrorMessage
  3931. [INFO][performCodeFusion] adding: %3
  3932. [INFO][performCodeFusion] before push Block ID: %3
  3933. [INFO][performCodeFusion] adding: %30
  3934. [INFO][performCodeFusion] adding: %35
  3935. [INFO][performCodeFusion] before push Block ID: %30
  3936. [INFO][performCodeFusion] before push Block ID: %35
  3937. [INFO][performCodeFusion] adding: %53
  3938. [INFO][performCodeFusion] adding: %56
  3939. [INFO][performCodeFusion] adding: %59
  3940. [INFO][performCodeFusion] adding: %66
  3941. [INFO][performCodeFusion] adding: %69
  3942. [INFO][performCodeFusion] adding: %72
  3943. [INFO][performCodeFusion] adding: %74
  3944. [INFO][performCodeFusion] before push Block ID: %53
  3945. [INFO][performCodeFusion] before push Block ID: %56
  3946. [INFO][performCodeFusion] before push Block ID: %59
  3947. [INFO][performCodeFusion] before push Block ID: %66
  3948. [INFO][performCodeFusion] before push Block ID: %69
  3949. [INFO][performCodeFusion] before push Block ID: %72
  3950. [INFO][performCodeFusion] before push Block ID: %74
  3951. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_setErrorMessage
  3952. ```mermaid: fused_setErrorMessage
  3953. graph TD
  3954. entry["Block entry:\n br label %target_cond_0\n"]
  3955. entry --> target_cond_0
  3956. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  3957. target_cond_0 -->|true| 3
  3958. target_cond_0 -->|false| target_skip_0
  3959. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  3960. target_skip_0 --> target_phi_0
  3961. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  3962. target_phi_0 --> bunker_cond_0
  3963. 3["Block 3:\n %4 = alloca [14 x i8], align 1\n %5 = alloca [8 x i32], align 16\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca [100 x [100 x i32]], align 16\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = call i32 @testPoints(i32 5)\n call void @llvm.memset.p0i8.i64(i8* align 16 ...\n %13 = bitcast [14 x i8]* %4 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %14 = getelementptr inbounds [14 x i8], [14 x...\n call void @reverseString(i8* %14)\n %15 = bitcast [8 x i32]* %5 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n store i32 8, i32* %6, align 4\n %16 = getelementptr inbounds [8 x i32], [8 x ...\n %17 = load i32, i32* %6, align 4\n %18 = call i32 @fused_performSimpleCalculatio...\n store i32 %18, i32* %7, align 4\n %19 = bitcast [100 x [100 x i32]]* %8 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %20 = getelementptr inbounds [100 x [100 x i3...\n %21 = call %fused_return_createDynamicArray_p...\n %extracted_target_return2target_ = extractval...\n store i32 %extracted_target_return2target_, i...\n store i32 0, i32* %10, align 4\n br label %target_phi_0\n"]
  3964. 3 --> target_phi_0
  3965. bunker_cond_0["Block bunker_cond_0:\n %22 = icmp eq i1 %0, false\n br i1 %22, label %23, label %bunker_skip_0\n"]
  3966. bunker_cond_0 -->|true| 23
  3967. bunker_cond_0 -->|false| bunker_skip_0
  3968. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  3969. bunker_skip_0 --> bunker_phi_0
  3970. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  3971. bunker_phi_0 --> target_cond_1
  3972. 23["Block 23:\n %24 = alloca i8*, align 8\n store i8* %1, i8** %24, align 8\n %25 = load i8*, i8** @globalErrorMessage, ali...\n %26 = icmp ne i8* %25, null\n br i1 %26, label %27, label %39\n"]
  3973. 23 -->|true| 27
  3974. 23 -->|false| 39
  3975. 27["Block 27:\n %28 = load i8*, i8** @globalErrorMessage, ali...\n call void @free(i8* %28) #7\n br label %bunker_phi_0\n"]
  3976. 27 --> bunker_phi_0
  3977. target_cond_1["Block target_cond_1:\n %29 = icmp eq i1 %0, true\n br i1 %29, label %30, label %target_skip_1\n"]
  3978. target_cond_1 -->|true| 30
  3979. target_cond_1 -->|false| target_skip_1
  3980. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  3981. target_skip_1 --> target_phi_1
  3982. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  3983. target_phi_1 --> bunker_cond_1
  3984. 30["Block 30:\n %31 = load i32, i32* %10, align 4\n %32 = call %fused_return_projectA_main_memoiz...\n %extracted_target_return1target_ = extractval...\n %33 = load i32, i32* %10, align 4\n %34 = add nsw i32 %33, 1\n store i32 %34, i32* %10, align 4\n br label %35\n"]
  3985. 30 --> 35
  3986. 35["Block 35:\n %36 = load i32, i32* %10, align 4\n %37 = icmp slt i32 %36, 10\n br label %target_phi_1\n"]
  3987. 35 --> target_phi_1
  3988. bunker_cond_1["Block bunker_cond_1:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_1\n"]
  3989. bunker_cond_1 -->|true| 39
  3990. bunker_cond_1 -->|false| bunker_skip_1
  3991. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  3992. bunker_skip_1 --> bunker_phi_1
  3993. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  3994. bunker_phi_1 --> target_cond_2
  3995. 39["Block 39:\n %40 = load i8*, i8** %24, align 8\n %41 = icmp ne i8* %40, null\n br i1 %41, label %42, label %51\n"]
  3996. 39 -->|true| 42
  3997. 39 -->|false| 51
  3998. 42["Block 42:\n %43 = load i8*, i8** %24, align 8\n %44 = call noalias i8* @strdup(i8* %43) #7\n store i8* %44, i8** @globalErrorMessage, align 8\n %45 = load i8*, i8** @globalErrorMessage, ali...\n %46 = icmp eq i8* %45, null\n br i1 %46, label %47, label %50\n"]
  3999. 42 -->|true| 47
  4000. 42 -->|false| 50
  4001. 47["Block 47:\n %48 = load %struct._IO_FILE*, %struct._IO_FIL...\n %49 = call i32 (%struct._IO_FILE*, i8*, ...) ...\n br label %50\n"]
  4002. 47 --> 50
  4003. 50["Block 50:\n br label %76\n"]
  4004. 50 --> 76
  4005. 51["Block 51:\n store i8* null, i8** @globalErrorMessage, ali...\n br label %bunker_phi_1\n"]
  4006. 51 --> bunker_phi_1
  4007. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  4008. target_cond_2 -->|true| 53
  4009. target_cond_2 -->|false| target_skip_2
  4010. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  4011. target_skip_2 --> target_phi_2
  4012. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  4013. target_phi_2 --> bunker_cond_2
  4014. 53["Block 53:\n %54 = load i32, i32* %7, align 4\n %55 = icmp sgt i32 %54, 5\n br i1 %55, label %56, label %59\n"]
  4015. 53 -->|true| 56
  4016. 53 -->|false| 59
  4017. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = icmp sgt i32 %57, 0\n br i1 %58, label %66, label %69\n"]
  4018. 56 -->|true| 66
  4019. 56 -->|false| 69
  4020. 59["Block 59:\n %60 = getelementptr inbounds [14 x i8], [14 x...\n %61 = call i64 @strlen(i8* %60) #8\n %62 = load i32, i32* %9, align 4\n %63 = sext i32 %62 to i64\n %64 = add i64 %61, %63\n %65 = trunc i64 %64 to i32\n store i32 %65, i32* %11, align 4\n br label %72\n"]
  4021. 59 --> 72
  4022. 66["Block 66:\n %67 = load i32, i32* %7, align 4\n %68 = call %fused_return_projectA_main_memoiz...\n %extracted_target_returntarget_ = extractvalu...\n store i32 %extracted_target_returntarget_, i3...\n br label %74\n"]
  4023. 66 --> 74
  4024. 69["Block 69:\n %70 = load i32, i32* %9, align 4\n %71 = call i32 @fused_quickSort(i1 true, i32*...\n store i32 %71, i32* %11, align 4\n br label %74\n"]
  4025. 69 --> 74
  4026. 72["Block 72:\n %73 = load i32, i32* %11, align 4\n ret i32 %48\n"]
  4027. 74["Block 74:\n br label %target_phi_2\n"]
  4028. 74 --> target_phi_2
  4029. bunker_cond_2["Block bunker_cond_2:\n %75 = icmp eq i1 %0, false\n br i1 %75, label %76, label %bunker_skip_2\n"]
  4030. bunker_cond_2 -->|true| 76
  4031. bunker_cond_2 -->|false| bunker_skip_2
  4032. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  4033. bunker_skip_2 --> bunker_phi_2
  4034. bunker_phi_2["Block bunker_phi_2:\n ret i32 0\n"]
  4035. 76["Block 76:\n ret void\n br label %bunker_phi_2\n"]
  4036. 76 --> bunker_phi_2
  4037. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  4038. ```
  4039. [DEBUG][performCodeFusion] Processing return values for fused function: fused_setErrorMessage
  4040. [DEBUG][performCodeFusion] Fused function return type: i32
  4041. [DEBUG][performCodeFusion] Non-struct return type detected: i32
  4042. [DEBUG][performCodeFusion] Processing bunker block: %42
  4043. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %43 = load i8*, i8** %24, align 8 (opcode: load)
  4044. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %44 = call noalias i8* @strdup(i8* %43) #7 (opcode: call)
  4045. [DEBUG][performCodeFusion] Block %42 - Processing instruction: store i8* %44, i8** @globalErrorMessage, align 8 (opcode: store)
  4046. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %45 = load i8*, i8** @globalErrorMessage, align 8 (opcode: load)
  4047. [DEBUG][performCodeFusion] Block %42 - Processing instruction: %46 = icmp eq i8* %45, null (opcode: icmp)
  4048. [DEBUG][performCodeFusion] Block %42 - Processing instruction: br i1 %46, label %47, label %50 (opcode: br)
  4049. [DEBUG][performCodeFusion] Processing bunker block: %39
  4050. [DEBUG][performCodeFusion] Block %39 - Processing instruction: %40 = load i8*, i8** %24, align 8 (opcode: load)
  4051. [DEBUG][performCodeFusion] Block %39 - Processing instruction: %41 = icmp ne i8* %40, null (opcode: icmp)
  4052. [DEBUG][performCodeFusion] Block %39 - Processing instruction: br i1 %41, label %42, label %51 (opcode: br)
  4053. [DEBUG][performCodeFusion] Processing bunker block: %47
  4054. [DEBUG][performCodeFusion] Block %47 - Processing instruction: %48 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 (opcode: load)
  4055. [DEBUG][performCodeFusion] Block %47 - Processing instruction: %49 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %48, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0)) (opcode: call)
  4056. [DEBUG][performCodeFusion] Block %47 - Processing instruction: br label %50 (opcode: br)
  4057. [DEBUG][performCodeFusion] Processing bunker block: %50
  4058. [DEBUG][performCodeFusion] Block %50 - Processing instruction: br label %76 (opcode: br)
  4059. [DEBUG][performCodeFusion] Processing bunker block: %51
  4060. [DEBUG][performCodeFusion] Block %51 - Processing instruction: store i8* null, i8** @globalErrorMessage, align 8 (opcode: store)
  4061. [DEBUG][performCodeFusion] Block %51 - Processing instruction: br label %bunker_phi_1 (opcode: br)
  4062. [DEBUG][performCodeFusion] Processing bunker block: %27
  4063. [DEBUG][performCodeFusion] Block %27 - Processing instruction: %28 = load i8*, i8** @globalErrorMessage, align 8 (opcode: load)
  4064. [DEBUG][performCodeFusion] Block %27 - Processing instruction: call void @free(i8* %28) #7 (opcode: call)
  4065. [DEBUG][performCodeFusion] Block %27 - Processing instruction: br label %bunker_phi_0 (opcode: br)
  4066. [DEBUG][performCodeFusion] Processing bunker block: %23
  4067. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %24 = alloca i8*, align 8 (opcode: alloca)
  4068. [DEBUG][performCodeFusion] Block %23 - Processing instruction: store i8* %1, i8** %24, align 8 (opcode: store)
  4069. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %25 = load i8*, i8** @globalErrorMessage, align 8 (opcode: load)
  4070. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %26 = icmp ne i8* %25, null (opcode: icmp)
  4071. [DEBUG][performCodeFusion] Block %23 - Processing instruction: br i1 %26, label %27, label %39 (opcode: br)
  4072. [DEBUG][performCodeFusion] Processing bunker block: %76
  4073. [DEBUG][performCodeFusion] Block %76 - Processing instruction: ret void (opcode: ret)
  4074. [DEBUG][performCodeFusion] Setting default bunker return value
  4075. [DEBUG][performCodeFusion] Updated bunker return in block %76 with value type i32
  4076. [DEBUG][performCodeFusion] Block %76 - Processing instruction: br label %bunker_phi_2 (opcode: br)
  4077. [DEBUG][performCodeFusion] Removing extra instruction after return in block %76: br
  4078. [DEBUG][performCodeFusion] Processing target block: %35
  4079. [DEBUG][performCodeFusion] Block %35 - Processing instruction: %36 = load i32, i32* %10, align 4 (opcode: load)
  4080. [DEBUG][performCodeFusion] Block %35 - Processing instruction: %37 = icmp slt i32 %36, 10 (opcode: icmp)
  4081. [DEBUG][performCodeFusion] Block %35 - Processing instruction: br label %target_phi_1 (opcode: br)
  4082. [DEBUG][performCodeFusion] Processing target block: %53
  4083. [DEBUG][performCodeFusion] Block %53 - Processing instruction: %54 = load i32, i32* %7, align 4 (opcode: load)
  4084. [DEBUG][performCodeFusion] Block %53 - Processing instruction: %55 = icmp sgt i32 %54, 5 (opcode: icmp)
  4085. [DEBUG][performCodeFusion] Block %53 - Processing instruction: br i1 %55, label %56, label %59 (opcode: br)
  4086. [DEBUG][performCodeFusion] Processing target block: %56
  4087. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %57 = load i32, i32* %9, align 4 (opcode: load)
  4088. [DEBUG][performCodeFusion] Block %56 - Processing instruction: %58 = icmp sgt i32 %57, 0 (opcode: icmp)
  4089. [DEBUG][performCodeFusion] Block %56 - Processing instruction: br i1 %58, label %66, label %69 (opcode: br)
  4090. [DEBUG][performCodeFusion] Processing target block: %59
  4091. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %60 = getelementptr inbounds [14 x i8], [14 x i8]* %4, i64 0, i64 0 (opcode: getelementptr)
  4092. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %61 = call i64 @strlen(i8* %60) #8 (opcode: call)
  4093. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %62 = load i32, i32* %9, align 4 (opcode: load)
  4094. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %63 = sext i32 %62 to i64 (opcode: sext)
  4095. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %64 = add i64 %61, %63 (opcode: add)
  4096. [DEBUG][performCodeFusion] Block %59 - Processing instruction: %65 = trunc i64 %64 to i32 (opcode: trunc)
  4097. [DEBUG][performCodeFusion] Block %59 - Processing instruction: store i32 %65, i32* %11, align 4 (opcode: store)
  4098. [DEBUG][performCodeFusion] Block %59 - Processing instruction: br label %72 (opcode: br)
  4099. [DEBUG][performCodeFusion] Processing target block: %69
  4100. [DEBUG][performCodeFusion] Block %69 - Processing instruction: %70 = load i32, i32* %9, align 4 (opcode: load)
  4101. [DEBUG][performCodeFusion] Block %69 - Processing instruction: %71 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %70) (opcode: call)
  4102. [DEBUG][performCodeFusion] Block %69 - Processing instruction: store i32 %71, i32* %11, align 4 (opcode: store)
  4103. [DEBUG][performCodeFusion] Block %69 - Processing instruction: br label %74 (opcode: br)
  4104. [DEBUG][performCodeFusion] Processing target block: %72
  4105. [DEBUG][performCodeFusion] Block %72 - Processing instruction: %73 = load i32, i32* %11, align 4 (opcode: load)
  4106. [DEBUG][performCodeFusion] Block %72 - Processing instruction: ret i32 %48 (opcode: ret)
  4107. [DEBUG][performCodeFusion] Updated target return in block %72 with value type i32
  4108. [DEBUG][performCodeFusion] Processing target block: %74
  4109. [DEBUG][performCodeFusion] Block %74 - Processing instruction: br label %target_phi_2 (opcode: br)
  4110. [DEBUG][performCodeFusion] Processing target block: %3
  4111. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %4 = alloca [14 x i8], align 1 (opcode: alloca)
  4112. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %5 = alloca [8 x i32], align 16 (opcode: alloca)
  4113. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %6 = alloca i32, align 4 (opcode: alloca)
  4114. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %7 = alloca i32, align 4 (opcode: alloca)
  4115. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %8 = alloca [100 x [100 x i32]], align 16 (opcode: alloca)
  4116. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %9 = alloca i32, align 4 (opcode: alloca)
  4117. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %10 = alloca i32, align 4 (opcode: alloca)
  4118. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %11 = alloca i32, align 4 (opcode: alloca)
  4119. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %12 = call i32 @testPoints(i32 5) (opcode: call)
  4120. [DEBUG][performCodeFusion] Block %3 - Processing instruction: call void @llvm.memset.p0i8.i64(i8* align 16 bitcast ([100 x i32]* @cache to i8*), i8 -1, i64 400, i1 false) (opcode: call)
  4121. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %13 = bitcast [14 x i8]* %4 to i8* (opcode: bitcast)
  4122. [DEBUG][performCodeFusion] Block %3 - Processing instruction: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %13, i8* align 1 getelementptr inbounds ([14 x i8], [14 x i8]* @__const.projectB_main.str, i32 0, i32 0), i64 14, i1 false) (opcode: call)
  4123. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %14 = getelementptr inbounds [14 x i8], [14 x i8]* %4, i64 0, i64 0 (opcode: getelementptr)
  4124. [DEBUG][performCodeFusion] Block %3 - Processing instruction: call void @reverseString(i8* %14) (opcode: call)
  4125. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %15 = bitcast [8 x i32]* %5 to i8* (opcode: bitcast)
  4126. [DEBUG][performCodeFusion] Block %3 - Processing instruction: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %15, i8* align 16 bitcast ([8 x i32]* @__const.projectB_main.arr to i8*), i64 32, i1 false) (opcode: call)
  4127. [DEBUG][performCodeFusion] Block %3 - Processing instruction: store i32 8, i32* %6, align 4 (opcode: store)
  4128. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %16 = getelementptr inbounds [8 x i32], [8 x i32]* %5, i64 0, i64 0 (opcode: getelementptr)
  4129. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %17 = load i32, i32* %6, align 4 (opcode: load)
  4130. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %18 = call i32 @fused_performSimpleCalculations(i1 true, i32* %16, i32 %17) (opcode: call)
  4131. [DEBUG][performCodeFusion] Block %3 - Processing instruction: store i32 %18, i32* %7, align 4 (opcode: store)
  4132. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %19 = bitcast [100 x [100 x i32]]* %8 to i8* (opcode: bitcast)
  4133. [DEBUG][performCodeFusion] Block %3 - Processing instruction: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %19, i8* align 16 bitcast (<{ <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, [97 x <{ i32, i32, i32, [97 x i32] }>] }>* @__const.projectB_main.matrix to i8*), i64 40000, i1 false) (opcode: call)
  4134. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %20 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %8, i64 0, i64 0 (opcode: getelementptr)
  4135. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %21 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 true, i32 0, [100 x i32]* %20, i32 3) (opcode: call)
  4136. [DEBUG][performCodeFusion] Block %3 - Processing instruction: %extracted_target_return2target_ = extractvalue %fused_return_createDynamicArray_processMatrix %21, 0 (opcode: extractvalue)
  4137. [DEBUG][performCodeFusion] Block %3 - Processing instruction: store i32 %extracted_target_return2target_, i32* %9, align 4 (opcode: store)
  4138. [DEBUG][performCodeFusion] Block %3 - Processing instruction: store i32 0, i32* %10, align 4 (opcode: store)
  4139. [DEBUG][performCodeFusion] Block %3 - Processing instruction: br label %target_phi_0 (opcode: br)
  4140. [DEBUG][performCodeFusion] Processing target block: %66
  4141. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %67 = load i32, i32* %7, align 4 (opcode: load)
  4142. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %68 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %67) (opcode: call)
  4143. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %extracted_target_returntarget_ = extractvalue %fused_return_projectA_main_memoizedFib %68, 0 (opcode: extractvalue)
  4144. [DEBUG][performCodeFusion] Block %66 - Processing instruction: store i32 %extracted_target_returntarget_, i32* %11, align 4 (opcode: store)
  4145. [DEBUG][performCodeFusion] Block %66 - Processing instruction: br label %74 (opcode: br)
  4146. [DEBUG][performCodeFusion] Processing target block: %30
  4147. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %31 = load i32, i32* %10, align 4 (opcode: load)
  4148. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %32 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %31) (opcode: call)
  4149. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %extracted_target_return1target_ = extractvalue %fused_return_projectA_main_memoizedFib %32, 0 (opcode: extractvalue)
  4150. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %33 = load i32, i32* %10, align 4 (opcode: load)
  4151. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %34 = add nsw i32 %33, 1 (opcode: add)
  4152. [DEBUG][performCodeFusion] Block %30 - Processing instruction: store i32 %34, i32* %10, align 4 (opcode: store)
  4153. [DEBUG][performCodeFusion] Block %30 - Processing instruction: br label %35 (opcode: br)
  4154. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_setErrorMessage
  4155. ```mermaid: fused_setErrorMessage
  4156. graph TD
  4157. entry["Block entry:\n br label %target_cond_0\n"]
  4158. entry --> target_cond_0
  4159. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  4160. target_cond_0 -->|true| 3
  4161. target_cond_0 -->|false| target_skip_0
  4162. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  4163. target_skip_0 --> target_phi_0
  4164. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  4165. target_phi_0 --> bunker_cond_0
  4166. 3["Block 3:\n %4 = alloca [14 x i8], align 1\n %5 = alloca [8 x i32], align 16\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca [100 x [100 x i32]], align 16\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = call i32 @testPoints(i32 5)\n call void @llvm.memset.p0i8.i64(i8* align 16 ...\n %13 = bitcast [14 x i8]* %4 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %14 = getelementptr inbounds [14 x i8], [14 x...\n call void @reverseString(i8* %14)\n %15 = bitcast [8 x i32]* %5 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n store i32 8, i32* %6, align 4\n %16 = getelementptr inbounds [8 x i32], [8 x ...\n %17 = load i32, i32* %6, align 4\n %18 = call i32 @fused_performSimpleCalculatio...\n store i32 %18, i32* %7, align 4\n %19 = bitcast [100 x [100 x i32]]* %8 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %20 = getelementptr inbounds [100 x [100 x i3...\n %21 = call %fused_return_createDynamicArray_p...\n %extracted_target_return2target_ = extractval...\n store i32 %extracted_target_return2target_, i...\n store i32 0, i32* %10, align 4\n br label %target_phi_0\n"]
  4167. 3 --> target_phi_0
  4168. bunker_cond_0["Block bunker_cond_0:\n %22 = icmp eq i1 %0, false\n br i1 %22, label %23, label %bunker_skip_0\n"]
  4169. bunker_cond_0 -->|true| 23
  4170. bunker_cond_0 -->|false| bunker_skip_0
  4171. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  4172. bunker_skip_0 --> bunker_phi_0
  4173. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  4174. bunker_phi_0 --> target_cond_1
  4175. 23["Block 23:\n %24 = alloca i8*, align 8\n store i8* %1, i8** %24, align 8\n %25 = load i8*, i8** @globalErrorMessage, ali...\n %26 = icmp ne i8* %25, null\n br i1 %26, label %27, label %39\n"]
  4176. 23 -->|true| 27
  4177. 23 -->|false| 39
  4178. 27["Block 27:\n %28 = load i8*, i8** @globalErrorMessage, ali...\n call void @free(i8* %28) #7\n br label %bunker_phi_0\n"]
  4179. 27 --> bunker_phi_0
  4180. target_cond_1["Block target_cond_1:\n %29 = icmp eq i1 %0, true\n br i1 %29, label %30, label %target_skip_1\n"]
  4181. target_cond_1 -->|true| 30
  4182. target_cond_1 -->|false| target_skip_1
  4183. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  4184. target_skip_1 --> target_phi_1
  4185. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  4186. target_phi_1 --> bunker_cond_1
  4187. 30["Block 30:\n %31 = load i32, i32* %10, align 4\n %32 = call %fused_return_projectA_main_memoiz...\n %extracted_target_return1target_ = extractval...\n %33 = load i32, i32* %10, align 4\n %34 = add nsw i32 %33, 1\n store i32 %34, i32* %10, align 4\n br label %35\n"]
  4188. 30 --> 35
  4189. 35["Block 35:\n %36 = load i32, i32* %10, align 4\n %37 = icmp slt i32 %36, 10\n br label %target_phi_1\n"]
  4190. 35 --> target_phi_1
  4191. bunker_cond_1["Block bunker_cond_1:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_1\n"]
  4192. bunker_cond_1 -->|true| 39
  4193. bunker_cond_1 -->|false| bunker_skip_1
  4194. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  4195. bunker_skip_1 --> bunker_phi_1
  4196. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  4197. bunker_phi_1 --> target_cond_2
  4198. 39["Block 39:\n %40 = load i8*, i8** %24, align 8\n %41 = icmp ne i8* %40, null\n br i1 %41, label %42, label %51\n"]
  4199. 39 -->|true| 42
  4200. 39 -->|false| 51
  4201. 42["Block 42:\n %43 = load i8*, i8** %24, align 8\n %44 = call noalias i8* @strdup(i8* %43) #7\n store i8* %44, i8** @globalErrorMessage, align 8\n %45 = load i8*, i8** @globalErrorMessage, ali...\n %46 = icmp eq i8* %45, null\n br i1 %46, label %47, label %50\n"]
  4202. 42 -->|true| 47
  4203. 42 -->|false| 50
  4204. 47["Block 47:\n %48 = load %struct._IO_FILE*, %struct._IO_FIL...\n %49 = call i32 (%struct._IO_FILE*, i8*, ...) ...\n br label %50\n"]
  4205. 47 --> 50
  4206. 50["Block 50:\n br label %76\n"]
  4207. 50 --> 76
  4208. 51["Block 51:\n store i8* null, i8** @globalErrorMessage, ali...\n br label %bunker_phi_1\n"]
  4209. 51 --> bunker_phi_1
  4210. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  4211. target_cond_2 -->|true| 53
  4212. target_cond_2 -->|false| target_skip_2
  4213. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  4214. target_skip_2 --> target_phi_2
  4215. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  4216. target_phi_2 --> bunker_cond_2
  4217. 53["Block 53:\n %54 = load i32, i32* %7, align 4\n %55 = icmp sgt i32 %54, 5\n br i1 %55, label %56, label %59\n"]
  4218. 53 -->|true| 56
  4219. 53 -->|false| 59
  4220. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = icmp sgt i32 %57, 0\n br i1 %58, label %66, label %69\n"]
  4221. 56 -->|true| 66
  4222. 56 -->|false| 69
  4223. 59["Block 59:\n %60 = getelementptr inbounds [14 x i8], [14 x...\n %61 = call i64 @strlen(i8* %60) #8\n %62 = load i32, i32* %9, align 4\n %63 = sext i32 %62 to i64\n %64 = add i64 %61, %63\n %65 = trunc i64 %64 to i32\n store i32 %65, i32* %11, align 4\n br label %72\n"]
  4224. 59 --> 72
  4225. 66["Block 66:\n %67 = load i32, i32* %7, align 4\n %68 = call %fused_return_projectA_main_memoiz...\n %extracted_target_returntarget_ = extractvalu...\n store i32 %extracted_target_returntarget_, i3...\n br label %74\n"]
  4226. 66 --> 74
  4227. 69["Block 69:\n %70 = load i32, i32* %9, align 4\n %71 = call i32 @fused_quickSort(i1 true, i32*...\n store i32 %71, i32* %11, align 4\n br label %74\n"]
  4228. 69 --> 74
  4229. 72["Block 72:\n %73 = load i32, i32* %11, align 4\n ret i32 %48\n"]
  4230. 74["Block 74:\n br label %target_phi_2\n"]
  4231. 74 --> target_phi_2
  4232. bunker_cond_2["Block bunker_cond_2:\n %75 = icmp eq i1 %0, false\n br i1 %75, label %76, label %bunker_skip_2\n"]
  4233. bunker_cond_2 -->|true| 76
  4234. bunker_cond_2 -->|false| bunker_skip_2
  4235. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  4236. bunker_skip_2 --> bunker_phi_2
  4237. bunker_phi_2["Block bunker_phi_2:\n ret i32 0\n"]
  4238. 76["Block 76:\n ret i32 0\n"]
  4239. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  4240. ```
  4241. [DEBUG][updateCallSite] Original call instruction:
  4242. call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0))
  4243. [DEBUG][updateCallSite] Adding bunker control parameter
  4244. [DEBUG][updateCallSite] Adding original call parameters:
  4245. [DEBUG][updateCallSite] Argument 0: type=i8*
  4246. [DEBUG][updateCallSite] Adding default target parameters:
  4247. [DEBUG][updateCallSite] New call instruction:
  4248. %44 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0))
  4249. [DEBUG][updateCallSite] Void return type, no value processing needed
  4250. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0)) to %44 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0))
  4251. [DEBUG][updateCallSite] Original call instruction:
  4252. call void @setErrorMessage(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0))
  4253. [DEBUG][updateCallSite] Adding bunker control parameter
  4254. [DEBUG][updateCallSite] Adding original call parameters:
  4255. [DEBUG][updateCallSite] Argument 0: type=i8*
  4256. [DEBUG][updateCallSite] Adding default target parameters:
  4257. [DEBUG][updateCallSite] New call instruction:
  4258. %29 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0))
  4259. [DEBUG][updateCallSite] Void return type, no value processing needed
  4260. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0)) to %29 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0))
  4261. [DEBUG][updateCallSite] Original call instruction:
  4262. call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
  4263. [DEBUG][updateCallSite] Adding bunker control parameter
  4264. [DEBUG][updateCallSite] Adding original call parameters:
  4265. [DEBUG][updateCallSite] Argument 0: type=i8*
  4266. [DEBUG][updateCallSite] Adding default target parameters:
  4267. [DEBUG][updateCallSite] New call instruction:
  4268. %23 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
  4269. [DEBUG][updateCallSite] Void return type, no value processing needed
  4270. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0)) to %23 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
  4271. [DEBUG][updateCallSite] Original call instruction:
  4272. call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
  4273. [DEBUG][updateCallSite] Adding bunker control parameter
  4274. [DEBUG][updateCallSite] Adding original call parameters:
  4275. [DEBUG][updateCallSite] Argument 0: type=i8*
  4276. [DEBUG][updateCallSite] Adding default target parameters:
  4277. [DEBUG][updateCallSite] New call instruction:
  4278. %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
  4279. [DEBUG][updateCallSite] Void return type, no value processing needed
  4280. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0)) to %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
  4281. [DEBUG][updateCallSite] Original call instruction:
  4282. call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0))
  4283. [DEBUG][updateCallSite] Adding bunker control parameter
  4284. [DEBUG][updateCallSite] Adding original call parameters:
  4285. [DEBUG][updateCallSite] Argument 0: type=i8*
  4286. [DEBUG][updateCallSite] Adding default target parameters:
  4287. [DEBUG][updateCallSite] New call instruction:
  4288. %318 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0))
  4289. [DEBUG][updateCallSite] Void return type, no value processing needed
  4290. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0)) to %318 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0))
  4291. [DEBUG][updateCallSite] Original call instruction:
  4292. call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0))
  4293. [DEBUG][updateCallSite] Adding bunker control parameter
  4294. [DEBUG][updateCallSite] Adding original call parameters:
  4295. [DEBUG][updateCallSite] Argument 0: type=i8*
  4296. [DEBUG][updateCallSite] Adding default target parameters:
  4297. [DEBUG][updateCallSite] New call instruction:
  4298. %49 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0))
  4299. [DEBUG][updateCallSite] Void return type, no value processing needed
  4300. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0)) to %49 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0))
  4301. [DEBUG][updateCallSite] Original call instruction:
  4302. call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0))
  4303. [DEBUG][updateCallSite] Adding bunker control parameter
  4304. [DEBUG][updateCallSite] Adding original call parameters:
  4305. [DEBUG][updateCallSite] Argument 0: type=i8*
  4306. [DEBUG][updateCallSite] Adding default target parameters:
  4307. [DEBUG][updateCallSite] New call instruction:
  4308. %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0))
  4309. [DEBUG][updateCallSite] Void return type, no value processing needed
  4310. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0)) to %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0))
  4311. [DEBUG][updateCallSite] Original call instruction:
  4312. call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0))
  4313. [DEBUG][updateCallSite] Adding bunker control parameter
  4314. [DEBUG][updateCallSite] Adding original call parameters:
  4315. [DEBUG][updateCallSite] Argument 0: type=i8*
  4316. [DEBUG][updateCallSite] Adding default target parameters:
  4317. [DEBUG][updateCallSite] New call instruction:
  4318. %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0))
  4319. [DEBUG][updateCallSite] Void return type, no value processing needed
  4320. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0)) to %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0))
  4321. [DEBUG][updateCallSite] Original call instruction:
  4322. call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0))
  4323. [DEBUG][updateCallSite] Adding bunker control parameter
  4324. [DEBUG][updateCallSite] Adding original call parameters:
  4325. [DEBUG][updateCallSite] Argument 0: type=i8*
  4326. [DEBUG][updateCallSite] Adding default target parameters:
  4327. [DEBUG][updateCallSite] New call instruction:
  4328. %139 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0))
  4329. [DEBUG][updateCallSite] Void return type, no value processing needed
  4330. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0)) to %139 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0))
  4331. [DEBUG][updateCallSite] Original call instruction:
  4332. call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0))
  4333. [DEBUG][updateCallSite] Adding bunker control parameter
  4334. [DEBUG][updateCallSite] Adding original call parameters:
  4335. [DEBUG][updateCallSite] Argument 0: type=i8*
  4336. [DEBUG][updateCallSite] Adding default target parameters:
  4337. [DEBUG][updateCallSite] New call instruction:
  4338. %128 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0))
  4339. [DEBUG][updateCallSite] Void return type, no value processing needed
  4340. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0)) to %128 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0))
  4341. [DEBUG][updateCallSite] Original call instruction:
  4342. call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0))
  4343. [DEBUG][updateCallSite] Adding bunker control parameter
  4344. [DEBUG][updateCallSite] Adding original call parameters:
  4345. [DEBUG][updateCallSite] Argument 0: type=i8*
  4346. [DEBUG][updateCallSite] Adding default target parameters:
  4347. [DEBUG][updateCallSite] New call instruction:
  4348. %48 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0))
  4349. [DEBUG][updateCallSite] Void return type, no value processing needed
  4350. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0)) to %48 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0))
  4351. [DEBUG][updateCallSite] Original call instruction:
  4352. call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0))
  4353. [DEBUG][updateCallSite] Adding bunker control parameter
  4354. [DEBUG][updateCallSite] Adding original call parameters:
  4355. [DEBUG][updateCallSite] Argument 0: type=i8*
  4356. [DEBUG][updateCallSite] Adding default target parameters:
  4357. [DEBUG][updateCallSite] New call instruction:
  4358. %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0))
  4359. [DEBUG][updateCallSite] Void return type, no value processing needed
  4360. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0)) to %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0))
  4361. [DEBUG][updateCallSite] Original call instruction:
  4362. call void @setErrorMessage(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
  4363. [DEBUG][updateCallSite] Adding bunker control parameter
  4364. [DEBUG][updateCallSite] Adding original call parameters:
  4365. [DEBUG][updateCallSite] Argument 0: type=i8*
  4366. [DEBUG][updateCallSite] Adding default target parameters:
  4367. [DEBUG][updateCallSite] New call instruction:
  4368. %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
  4369. [DEBUG][updateCallSite] Void return type, no value processing needed
  4370. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0)) to %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
  4371. [DEBUG][updateCallSite] Original call instruction:
  4372. call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0))
  4373. [DEBUG][updateCallSite] Adding bunker control parameter
  4374. [DEBUG][updateCallSite] Adding original call parameters:
  4375. [DEBUG][updateCallSite] Argument 0: type=i8*
  4376. [DEBUG][updateCallSite] Adding default target parameters:
  4377. [DEBUG][updateCallSite] New call instruction:
  4378. %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0))
  4379. [DEBUG][updateCallSite] Void return type, no value processing needed
  4380. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0)) to %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0))
  4381. [DEBUG][updateCallSite] Original call instruction:
  4382. call void @setErrorMessage(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0))
  4383. [DEBUG][updateCallSite] Adding bunker control parameter
  4384. [DEBUG][updateCallSite] Adding original call parameters:
  4385. [DEBUG][updateCallSite] Argument 0: type=i8*
  4386. [DEBUG][updateCallSite] Adding default target parameters:
  4387. [DEBUG][updateCallSite] New call instruction:
  4388. %14 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0))
  4389. [DEBUG][updateCallSite] Void return type, no value processing needed
  4390. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0)) to %14 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0))
  4391. [DEBUG][updateCallSite] Original call instruction:
  4392. call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0))
  4393. [DEBUG][updateCallSite] Adding bunker control parameter
  4394. [DEBUG][updateCallSite] Adding original call parameters:
  4395. [DEBUG][updateCallSite] Argument 0: type=i8*
  4396. [DEBUG][updateCallSite] Adding default target parameters:
  4397. [DEBUG][updateCallSite] New call instruction:
  4398. %71 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0))
  4399. [DEBUG][updateCallSite] Void return type, no value processing needed
  4400. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0)) to %71 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0))
  4401. [DEBUG][updateCallSite] Original call instruction:
  4402. call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0))
  4403. [DEBUG][updateCallSite] Adding bunker control parameter
  4404. [DEBUG][updateCallSite] Adding original call parameters:
  4405. [DEBUG][updateCallSite] Argument 0: type=i8*
  4406. [DEBUG][updateCallSite] Adding default target parameters:
  4407. [DEBUG][updateCallSite] New call instruction:
  4408. %53 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0))
  4409. [DEBUG][updateCallSite] Void return type, no value processing needed
  4410. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0)) to %53 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0))
  4411. [DEBUG][updateCallSite] Original call instruction:
  4412. call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0))
  4413. [DEBUG][updateCallSite] Adding bunker control parameter
  4414. [DEBUG][updateCallSite] Adding original call parameters:
  4415. [DEBUG][updateCallSite] Argument 0: type=i8*
  4416. [DEBUG][updateCallSite] Adding default target parameters:
  4417. [DEBUG][updateCallSite] New call instruction:
  4418. %36 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0))
  4419. [DEBUG][updateCallSite] Void return type, no value processing needed
  4420. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0)) to %36 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0))
  4421. [DEBUG][updateCallSite] Original call instruction:
  4422. call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4423. [DEBUG][updateCallSite] Adding bunker control parameter
  4424. [DEBUG][updateCallSite] Adding original call parameters:
  4425. [DEBUG][updateCallSite] Argument 0: type=i8*
  4426. [DEBUG][updateCallSite] Adding default target parameters:
  4427. [DEBUG][updateCallSite] New call instruction:
  4428. %25 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4429. [DEBUG][updateCallSite] Void return type, no value processing needed
  4430. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) to %25 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4431. [DEBUG][updateCallSite] Original call instruction:
  4432. call void @setErrorMessage(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
  4433. [DEBUG][updateCallSite] Adding bunker control parameter
  4434. [DEBUG][updateCallSite] Adding original call parameters:
  4435. [DEBUG][updateCallSite] Argument 0: type=i8*
  4436. [DEBUG][updateCallSite] Adding default target parameters:
  4437. [DEBUG][updateCallSite] New call instruction:
  4438. %14 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
  4439. [DEBUG][updateCallSite] Void return type, no value processing needed
  4440. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0)) to %14 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
  4441. [DEBUG][updateCallSite] Original call instruction:
  4442. call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4443. [DEBUG][updateCallSite] Adding bunker control parameter
  4444. [DEBUG][updateCallSite] Adding original call parameters:
  4445. [DEBUG][updateCallSite] Argument 0: type=i8*
  4446. [DEBUG][updateCallSite] Adding default target parameters:
  4447. [DEBUG][updateCallSite] New call instruction:
  4448. %8 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4449. [DEBUG][updateCallSite] Void return type, no value processing needed
  4450. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0)) to %8 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4451. [DEBUG][updateCallSite] Original call instruction:
  4452. call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0))
  4453. [DEBUG][updateCallSite] Adding bunker control parameter
  4454. [DEBUG][updateCallSite] Adding original call parameters:
  4455. [DEBUG][updateCallSite] Argument 0: type=i8*
  4456. [DEBUG][updateCallSite] Adding default target parameters:
  4457. [DEBUG][updateCallSite] New call instruction:
  4458. %85 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0))
  4459. [DEBUG][updateCallSite] Void return type, no value processing needed
  4460. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0)) to %85 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0))
  4461. [DEBUG][updateCallSite] Original call instruction:
  4462. call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
  4463. [DEBUG][updateCallSite] Adding bunker control parameter
  4464. [DEBUG][updateCallSite] Adding original call parameters:
  4465. [DEBUG][updateCallSite] Argument 0: type=i8*
  4466. [DEBUG][updateCallSite] Adding default target parameters:
  4467. [DEBUG][updateCallSite] New call instruction:
  4468. %77 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
  4469. [DEBUG][updateCallSite] Void return type, no value processing needed
  4470. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0)) to %77 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
  4471. [DEBUG][updateCallSite] Original call instruction:
  4472. call void @setErrorMessage(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
  4473. [DEBUG][updateCallSite] Adding bunker control parameter
  4474. [DEBUG][updateCallSite] Adding original call parameters:
  4475. [DEBUG][updateCallSite] Argument 0: type=i8*
  4476. [DEBUG][updateCallSite] Adding default target parameters:
  4477. [DEBUG][updateCallSite] New call instruction:
  4478. %58 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
  4479. [DEBUG][updateCallSite] Void return type, no value processing needed
  4480. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0)) to %58 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
  4481. [DEBUG][updateCallSite] Original call instruction:
  4482. call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
  4483. [DEBUG][updateCallSite] Adding bunker control parameter
  4484. [DEBUG][updateCallSite] Adding original call parameters:
  4485. [DEBUG][updateCallSite] Argument 0: type=i8*
  4486. [DEBUG][updateCallSite] Adding default target parameters:
  4487. [DEBUG][updateCallSite] New call instruction:
  4488. %38 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
  4489. [DEBUG][updateCallSite] Void return type, no value processing needed
  4490. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0)) to %38 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
  4491. [DEBUG][updateCallSite] Original call instruction:
  4492. call void @setErrorMessage(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0))
  4493. [DEBUG][updateCallSite] Adding bunker control parameter
  4494. [DEBUG][updateCallSite] Adding original call parameters:
  4495. [DEBUG][updateCallSite] Argument 0: type=i8*
  4496. [DEBUG][updateCallSite] Adding default target parameters:
  4497. [DEBUG][updateCallSite] New call instruction:
  4498. %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0))
  4499. [DEBUG][updateCallSite] Void return type, no value processing needed
  4500. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0)) to %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0))
  4501. [DEBUG][updateCallSite] Original call instruction:
  4502. call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
  4503. [DEBUG][updateCallSite] Adding bunker control parameter
  4504. [DEBUG][updateCallSite] Adding original call parameters:
  4505. [DEBUG][updateCallSite] Argument 0: type=i8*
  4506. [DEBUG][updateCallSite] Adding default target parameters:
  4507. [DEBUG][updateCallSite] New call instruction:
  4508. %18 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
  4509. [DEBUG][updateCallSite] Void return type, no value processing needed
  4510. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0)) to %18 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
  4511. [DEBUG][updateCallSite] Original call instruction:
  4512. call void @setErrorMessage(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
  4513. [DEBUG][updateCallSite] Adding bunker control parameter
  4514. [DEBUG][updateCallSite] Adding original call parameters:
  4515. [DEBUG][updateCallSite] Argument 0: type=i8*
  4516. [DEBUG][updateCallSite] Adding default target parameters:
  4517. [DEBUG][updateCallSite] New call instruction:
  4518. %12 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
  4519. [DEBUG][updateCallSite] Void return type, no value processing needed
  4520. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0)) to %12 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
  4521. [DEBUG][updateCallSite] Original call instruction:
  4522. call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0))
  4523. [DEBUG][updateCallSite] Adding bunker control parameter
  4524. [DEBUG][updateCallSite] Adding original call parameters:
  4525. [DEBUG][updateCallSite] Argument 0: type=i8*
  4526. [DEBUG][updateCallSite] Adding default target parameters:
  4527. [DEBUG][updateCallSite] New call instruction:
  4528. %99 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0))
  4529. [DEBUG][updateCallSite] Void return type, no value processing needed
  4530. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0)) to %99 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0))
  4531. [DEBUG][updateCallSite] Original call instruction:
  4532. call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0))
  4533. [DEBUG][updateCallSite] Adding bunker control parameter
  4534. [DEBUG][updateCallSite] Adding original call parameters:
  4535. [DEBUG][updateCallSite] Argument 0: type=i8*
  4536. [DEBUG][updateCallSite] Adding default target parameters:
  4537. [DEBUG][updateCallSite] New call instruction:
  4538. %77 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0))
  4539. [DEBUG][updateCallSite] Void return type, no value processing needed
  4540. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0)) to %77 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0))
  4541. [DEBUG][updateCallSite] Original call instruction:
  4542. call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0))
  4543. [DEBUG][updateCallSite] Adding bunker control parameter
  4544. [DEBUG][updateCallSite] Adding original call parameters:
  4545. [DEBUG][updateCallSite] Argument 0: type=i8*
  4546. [DEBUG][updateCallSite] Adding default target parameters:
  4547. [DEBUG][updateCallSite] New call instruction:
  4548. %41 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0))
  4549. [DEBUG][updateCallSite] Void return type, no value processing needed
  4550. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0)) to %41 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0))
  4551. [DEBUG][updateCallSite] Original call instruction:
  4552. call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0))
  4553. [DEBUG][updateCallSite] Adding bunker control parameter
  4554. [DEBUG][updateCallSite] Adding original call parameters:
  4555. [DEBUG][updateCallSite] Argument 0: type=i8*
  4556. [DEBUG][updateCallSite] Adding default target parameters:
  4557. [DEBUG][updateCallSite] New call instruction:
  4558. %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0))
  4559. [DEBUG][updateCallSite] Void return type, no value processing needed
  4560. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0)) to %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0))
  4561. [DEBUG][updateCallSite] Original call instruction:
  4562. call void @setErrorMessage(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0))
  4563. [DEBUG][updateCallSite] Adding bunker control parameter
  4564. [DEBUG][updateCallSite] Adding original call parameters:
  4565. [DEBUG][updateCallSite] Argument 0: type=i8*
  4566. [DEBUG][updateCallSite] Adding default target parameters:
  4567. [DEBUG][updateCallSite] New call instruction:
  4568. %55 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0))
  4569. [DEBUG][updateCallSite] Void return type, no value processing needed
  4570. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0)) to %55 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0))
  4571. [DEBUG][updateCallSite] Original call instruction:
  4572. call void @setErrorMessage(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
  4573. [DEBUG][updateCallSite] Adding bunker control parameter
  4574. [DEBUG][updateCallSite] Adding original call parameters:
  4575. [DEBUG][updateCallSite] Argument 0: type=i8*
  4576. [DEBUG][updateCallSite] Adding default target parameters:
  4577. [DEBUG][updateCallSite] New call instruction:
  4578. %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
  4579. [DEBUG][updateCallSite] Void return type, no value processing needed
  4580. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0)) to %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
  4581. [DEBUG][updateCallSite] Original call instruction:
  4582. call void @setErrorMessage(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0))
  4583. [DEBUG][updateCallSite] Adding bunker control parameter
  4584. [DEBUG][updateCallSite] Adding original call parameters:
  4585. [DEBUG][updateCallSite] Argument 0: type=i8*
  4586. [DEBUG][updateCallSite] Adding default target parameters:
  4587. [DEBUG][updateCallSite] New call instruction:
  4588. %118 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0))
  4589. [DEBUG][updateCallSite] Void return type, no value processing needed
  4590. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0)) to %118 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0))
  4591. [DEBUG][updateCallSite] Original call instruction:
  4592. call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4593. [DEBUG][updateCallSite] Adding bunker control parameter
  4594. [DEBUG][updateCallSite] Adding original call parameters:
  4595. [DEBUG][updateCallSite] Argument 0: type=i8*
  4596. [DEBUG][updateCallSite] Adding default target parameters:
  4597. [DEBUG][updateCallSite] New call instruction:
  4598. %51 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4599. [DEBUG][updateCallSite] Void return type, no value processing needed
  4600. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0)) to %51 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4601. [DEBUG][updateCallSite] Original call instruction:
  4602. call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
  4603. [DEBUG][updateCallSite] Adding bunker control parameter
  4604. [DEBUG][updateCallSite] Adding original call parameters:
  4605. [DEBUG][updateCallSite] Argument 0: type=i8*
  4606. [DEBUG][updateCallSite] Adding default target parameters:
  4607. [DEBUG][updateCallSite] New call instruction:
  4608. %40 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
  4609. [DEBUG][updateCallSite] Void return type, no value processing needed
  4610. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0)) to %40 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
  4611. [DEBUG][updateCallSite] Original call instruction:
  4612. call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0))
  4613. [DEBUG][updateCallSite] Adding bunker control parameter
  4614. [DEBUG][updateCallSite] Adding original call parameters:
  4615. [DEBUG][updateCallSite] Argument 0: type=i8*
  4616. [DEBUG][updateCallSite] Adding default target parameters:
  4617. [DEBUG][updateCallSite] New call instruction:
  4618. %31 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0))
  4619. [DEBUG][updateCallSite] Void return type, no value processing needed
  4620. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0)) to %31 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0))
  4621. [DEBUG][updateCallSite] Original call instruction:
  4622. call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4623. [DEBUG][updateCallSite] Adding bunker control parameter
  4624. [DEBUG][updateCallSite] Adding original call parameters:
  4625. [DEBUG][updateCallSite] Argument 0: type=i8*
  4626. [DEBUG][updateCallSite] Adding default target parameters:
  4627. [DEBUG][updateCallSite] New call instruction:
  4628. %20 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4629. [DEBUG][updateCallSite] Void return type, no value processing needed
  4630. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0)) to %20 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  4631. [DEBUG][updateCallSite] Original call instruction:
  4632. call void @setErrorMessage(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0))
  4633. [DEBUG][updateCallSite] Adding bunker control parameter
  4634. [DEBUG][updateCallSite] Adding original call parameters:
  4635. [DEBUG][updateCallSite] Argument 0: type=i8*
  4636. [DEBUG][updateCallSite] Adding default target parameters:
  4637. [DEBUG][updateCallSite] New call instruction:
  4638. %105 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0))
  4639. [DEBUG][updateCallSite] Void return type, no value processing needed
  4640. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0)) to %105 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0))
  4641. [DEBUG][updateCallSite] Original call instruction:
  4642. call void @setErrorMessage(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0))
  4643. [DEBUG][updateCallSite] Adding bunker control parameter
  4644. [DEBUG][updateCallSite] Adding original call parameters:
  4645. [DEBUG][updateCallSite] Argument 0: type=i8*
  4646. [DEBUG][updateCallSite] Adding default target parameters:
  4647. [DEBUG][updateCallSite] New call instruction:
  4648. %57 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0))
  4649. [DEBUG][updateCallSite] Void return type, no value processing needed
  4650. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0)) to %57 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0))
  4651. [DEBUG][updateCallSite] Original call instruction:
  4652. call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0))
  4653. [DEBUG][updateCallSite] Adding bunker control parameter
  4654. [DEBUG][updateCallSite] Adding original call parameters:
  4655. [DEBUG][updateCallSite] Argument 0: type=i8*
  4656. [DEBUG][updateCallSite] Adding default target parameters:
  4657. [DEBUG][updateCallSite] New call instruction:
  4658. %28 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0))
  4659. [DEBUG][updateCallSite] Void return type, no value processing needed
  4660. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0)) to %28 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0))
  4661. [DEBUG][updateCallSite] Original call instruction:
  4662. call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4663. [DEBUG][updateCallSite] Adding bunker control parameter
  4664. [DEBUG][updateCallSite] Adding original call parameters:
  4665. [DEBUG][updateCallSite] Argument 0: type=i8*
  4666. [DEBUG][updateCallSite] Adding default target parameters:
  4667. [DEBUG][updateCallSite] New call instruction:
  4668. %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4669. [DEBUG][updateCallSite] Void return type, no value processing needed
  4670. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0)) to %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  4671. [DEBUG][updateCallSite] Original call instruction:
  4672. call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4673. [DEBUG][updateCallSite] Adding bunker control parameter
  4674. [DEBUG][updateCallSite] Adding original call parameters:
  4675. [DEBUG][updateCallSite] Argument 0: type=i8*
  4676. [DEBUG][updateCallSite] Adding default target parameters:
  4677. [DEBUG][updateCallSite] New call instruction:
  4678. %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4679. [DEBUG][updateCallSite] Void return type, no value processing needed
  4680. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) to %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  4681. [DEBUG][updateCallSite] Original call instruction:
  4682. call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
  4683. [DEBUG][updateCallSite] Adding bunker control parameter
  4684. [DEBUG][updateCallSite] Adding original call parameters:
  4685. [DEBUG][updateCallSite] Argument 0: type=i8*
  4686. [DEBUG][updateCallSite] Adding default target parameters:
  4687. [DEBUG][updateCallSite] New call instruction:
  4688. %45 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
  4689. [DEBUG][updateCallSite] Void return type, no value processing needed
  4690. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0)) to %45 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
  4691. [DEBUG][updateCallSite] Original call instruction:
  4692. call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
  4693. [DEBUG][updateCallSite] Adding bunker control parameter
  4694. [DEBUG][updateCallSite] Adding original call parameters:
  4695. [DEBUG][updateCallSite] Argument 0: type=i8*
  4696. [DEBUG][updateCallSite] Adding default target parameters:
  4697. [DEBUG][updateCallSite] New call instruction:
  4698. %16 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
  4699. [DEBUG][updateCallSite] Void return type, no value processing needed
  4700. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0)) to %16 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
  4701. [DEBUG][updateCallSite] Original call instruction:
  4702. call void @setErrorMessage(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
  4703. [DEBUG][updateCallSite] Adding bunker control parameter
  4704. [DEBUG][updateCallSite] Adding original call parameters:
  4705. [DEBUG][updateCallSite] Argument 0: type=i8*
  4706. [DEBUG][updateCallSite] Adding default target parameters:
  4707. [DEBUG][updateCallSite] New call instruction:
  4708. %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
  4709. [DEBUG][updateCallSite] Void return type, no value processing needed
  4710. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0)) to %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
  4711. [DEBUG][updateCallSite] Original call instruction:
  4712. call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
  4713. [DEBUG][updateCallSite] Adding bunker control parameter
  4714. [DEBUG][updateCallSite] Adding original call parameters:
  4715. [DEBUG][updateCallSite] Argument 0: type=i8*
  4716. [DEBUG][updateCallSite] Adding default target parameters:
  4717. [DEBUG][updateCallSite] New call instruction:
  4718. %43 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
  4719. [DEBUG][updateCallSite] Void return type, no value processing needed
  4720. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0)) to %43 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
  4721. [DEBUG][updateCallSite] Original call instruction:
  4722. call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0))
  4723. [DEBUG][updateCallSite] Adding bunker control parameter
  4724. [DEBUG][updateCallSite] Adding original call parameters:
  4725. [DEBUG][updateCallSite] Argument 0: type=i8*
  4726. [DEBUG][updateCallSite] Adding default target parameters:
  4727. [DEBUG][updateCallSite] New call instruction:
  4728. %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0))
  4729. [DEBUG][updateCallSite] Void return type, no value processing needed
  4730. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0)) to %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0))
  4731. [DEBUG][updateCallSite] Original call instruction:
  4732. call void @setErrorMessage(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
  4733. [DEBUG][updateCallSite] Adding bunker control parameter
  4734. [DEBUG][updateCallSite] Adding original call parameters:
  4735. [DEBUG][updateCallSite] Argument 0: type=i8*
  4736. [DEBUG][updateCallSite] Adding default target parameters:
  4737. [DEBUG][updateCallSite] New call instruction:
  4738. %16 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
  4739. [DEBUG][updateCallSite] Void return type, no value processing needed
  4740. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0)) to %16 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
  4741. [DEBUG][updateCallSite] Original call instruction:
  4742. call void @setErrorMessage(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0))
  4743. [DEBUG][updateCallSite] Adding bunker control parameter
  4744. [DEBUG][updateCallSite] Adding original call parameters:
  4745. [DEBUG][updateCallSite] Argument 0: type=i8*
  4746. [DEBUG][updateCallSite] Adding default target parameters:
  4747. [DEBUG][updateCallSite] New call instruction:
  4748. %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0))
  4749. [DEBUG][updateCallSite] Void return type, no value processing needed
  4750. [INFO][updateCallSite] Successfully updated call site from call void @setErrorMessage(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0)) to %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0))
  4751. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_setErrorMessage
  4752. ```mermaid: fused_setErrorMessage
  4753. graph TD
  4754. entry["Block entry:\n br label %target_cond_0\n"]
  4755. entry --> target_cond_0
  4756. target_cond_0["Block target_cond_0:\n %2 = icmp eq i1 %0, true\n br i1 %2, label %3, label %target_skip_0\n"]
  4757. target_cond_0 -->|true| 3
  4758. target_cond_0 -->|false| target_skip_0
  4759. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  4760. target_skip_0 --> target_phi_0
  4761. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  4762. target_phi_0 --> bunker_cond_0
  4763. 3["Block 3:\n %4 = alloca [14 x i8], align 1\n %5 = alloca [8 x i32], align 16\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca [100 x [100 x i32]], align 16\n %9 = alloca i32, align 4\n %10 = alloca i32, align 4\n %11 = alloca i32, align 4\n %12 = call i32 @testPoints(i32 5)\n call void @llvm.memset.p0i8.i64(i8* align 16 ...\n %13 = bitcast [14 x i8]* %4 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %14 = getelementptr inbounds [14 x i8], [14 x...\n call void @reverseString(i8* %14)\n %15 = bitcast [8 x i32]* %5 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n store i32 8, i32* %6, align 4\n %16 = getelementptr inbounds [8 x i32], [8 x ...\n %17 = load i32, i32* %6, align 4\n %18 = call i32 @fused_performSimpleCalculatio...\n store i32 %18, i32* %7, align 4\n %19 = bitcast [100 x [100 x i32]]* %8 to i8*\n call void @llvm.memcpy.p0i8.p0i8.i64(i8* alig...\n %20 = getelementptr inbounds [100 x [100 x i3...\n %21 = call %fused_return_createDynamicArray_p...\n %extracted_target_return2target_ = extractval...\n store i32 %extracted_target_return2target_, i...\n store i32 0, i32* %10, align 4\n br label %target_phi_0\n"]
  4764. 3 --> target_phi_0
  4765. bunker_cond_0["Block bunker_cond_0:\n %22 = icmp eq i1 %0, false\n br i1 %22, label %23, label %bunker_skip_0\n"]
  4766. bunker_cond_0 -->|true| 23
  4767. bunker_cond_0 -->|false| bunker_skip_0
  4768. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  4769. bunker_skip_0 --> bunker_phi_0
  4770. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  4771. bunker_phi_0 --> target_cond_1
  4772. 23["Block 23:\n %24 = alloca i8*, align 8\n store i8* %1, i8** %24, align 8\n %25 = load i8*, i8** @globalErrorMessage, ali...\n %26 = icmp ne i8* %25, null\n br i1 %26, label %27, label %39\n"]
  4773. 23 -->|true| 27
  4774. 23 -->|false| 39
  4775. 27["Block 27:\n %28 = load i8*, i8** @globalErrorMessage, ali...\n call void @free(i8* %28) #7\n br label %bunker_phi_0\n"]
  4776. 27 --> bunker_phi_0
  4777. target_cond_1["Block target_cond_1:\n %29 = icmp eq i1 %0, true\n br i1 %29, label %30, label %target_skip_1\n"]
  4778. target_cond_1 -->|true| 30
  4779. target_cond_1 -->|false| target_skip_1
  4780. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  4781. target_skip_1 --> target_phi_1
  4782. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  4783. target_phi_1 --> bunker_cond_1
  4784. 30["Block 30:\n %31 = load i32, i32* %10, align 4\n %32 = call %fused_return_projectA_main_memoiz...\n %extracted_target_return1target_ = extractval...\n %33 = load i32, i32* %10, align 4\n %34 = add nsw i32 %33, 1\n store i32 %34, i32* %10, align 4\n br label %35\n"]
  4785. 30 --> 35
  4786. 35["Block 35:\n %36 = load i32, i32* %10, align 4\n %37 = icmp slt i32 %36, 10\n br label %target_phi_1\n"]
  4787. 35 --> target_phi_1
  4788. bunker_cond_1["Block bunker_cond_1:\n %38 = icmp eq i1 %0, false\n br i1 %38, label %39, label %bunker_skip_1\n"]
  4789. bunker_cond_1 -->|true| 39
  4790. bunker_cond_1 -->|false| bunker_skip_1
  4791. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  4792. bunker_skip_1 --> bunker_phi_1
  4793. bunker_phi_1["Block bunker_phi_1:\n br label %target_cond_2\n"]
  4794. bunker_phi_1 --> target_cond_2
  4795. 39["Block 39:\n %40 = load i8*, i8** %24, align 8\n %41 = icmp ne i8* %40, null\n br i1 %41, label %42, label %51\n"]
  4796. 39 -->|true| 42
  4797. 39 -->|false| 51
  4798. 42["Block 42:\n %43 = load i8*, i8** %24, align 8\n %44 = call noalias i8* @strdup(i8* %43) #7\n store i8* %44, i8** @globalErrorMessage, align 8\n %45 = load i8*, i8** @globalErrorMessage, ali...\n %46 = icmp eq i8* %45, null\n br i1 %46, label %47, label %50\n"]
  4799. 42 -->|true| 47
  4800. 42 -->|false| 50
  4801. 47["Block 47:\n %48 = load %struct._IO_FILE*, %struct._IO_FIL...\n %49 = call i32 (%struct._IO_FILE*, i8*, ...) ...\n br label %50\n"]
  4802. 47 --> 50
  4803. 50["Block 50:\n br label %76\n"]
  4804. 50 --> 76
  4805. 51["Block 51:\n store i8* null, i8** @globalErrorMessage, ali...\n br label %bunker_phi_1\n"]
  4806. 51 --> bunker_phi_1
  4807. target_cond_2["Block target_cond_2:\n %52 = icmp eq i1 %0, true\n br i1 %52, label %53, label %target_skip_2\n"]
  4808. target_cond_2 -->|true| 53
  4809. target_cond_2 -->|false| target_skip_2
  4810. target_skip_2["Block target_skip_2:\n br label %target_phi_2\n"]
  4811. target_skip_2 --> target_phi_2
  4812. target_phi_2["Block target_phi_2:\n br label %bunker_cond_2\n"]
  4813. target_phi_2 --> bunker_cond_2
  4814. 53["Block 53:\n %54 = load i32, i32* %7, align 4\n %55 = icmp sgt i32 %54, 5\n br i1 %55, label %56, label %59\n"]
  4815. 53 -->|true| 56
  4816. 53 -->|false| 59
  4817. 56["Block 56:\n %57 = load i32, i32* %9, align 4\n %58 = icmp sgt i32 %57, 0\n br i1 %58, label %66, label %69\n"]
  4818. 56 -->|true| 66
  4819. 56 -->|false| 69
  4820. 59["Block 59:\n %60 = getelementptr inbounds [14 x i8], [14 x...\n %61 = call i64 @strlen(i8* %60) #8\n %62 = load i32, i32* %9, align 4\n %63 = sext i32 %62 to i64\n %64 = add i64 %61, %63\n %65 = trunc i64 %64 to i32\n store i32 %65, i32* %11, align 4\n br label %72\n"]
  4821. 59 --> 72
  4822. 66["Block 66:\n %67 = load i32, i32* %7, align 4\n %68 = call %fused_return_projectA_main_memoiz...\n %extracted_target_returntarget_ = extractvalu...\n store i32 %extracted_target_returntarget_, i3...\n br label %74\n"]
  4823. 66 --> 74
  4824. 69["Block 69:\n %70 = load i32, i32* %9, align 4\n %71 = call i32 @fused_quickSort(i1 true, i32*...\n store i32 %71, i32* %11, align 4\n br label %74\n"]
  4825. 69 --> 74
  4826. 72["Block 72:\n %73 = load i32, i32* %11, align 4\n ret i32 <badref>\n"]
  4827. 74["Block 74:\n br label %target_phi_2\n"]
  4828. 74 --> target_phi_2
  4829. bunker_cond_2["Block bunker_cond_2:\n %75 = icmp eq i1 %0, false\n br i1 %75, label %76, label %bunker_skip_2\n"]
  4830. bunker_cond_2 -->|true| 76
  4831. bunker_cond_2 -->|false| bunker_skip_2
  4832. bunker_skip_2["Block bunker_skip_2:\n br label %bunker_phi_2\n"]
  4833. bunker_skip_2 --> bunker_phi_2
  4834. bunker_phi_2["Block bunker_phi_2:\n ret i32 0\n"]
  4835. 76["Block 76:\n ret i32 0\n"]
  4836. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  4837. ```
  4838. [INFO][performCodeFusion] Completed function fusion: fused_setErrorMessage
  4839. [INFO][performCodeFusion] Processing function pair: target=reverseString, bunker=createMatrix
  4840. [INFO][performCodeFusion] adding: %5
  4841. [INFO][performCodeFusion] before push Block ID: %5
  4842. [INFO][performCodeFusion] adding: %129
  4843. [INFO][performCodeFusion] adding: %134
  4844. [INFO][performCodeFusion] adding: %160
  4845. [INFO][performCodeFusion] adding: %161
  4846. [INFO][performCodeFusion] before push Block ID: %129
  4847. [INFO][performCodeFusion] before push Block ID: %134
  4848. [INFO][performCodeFusion] before push Block ID: %160
  4849. [INFO][performCodeFusion] before push Block ID: %161
  4850. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_createMatrix
  4851. ```mermaid: fused_createMatrix
  4852. graph TD
  4853. entry["Block entry:\n br label %target_cond_0\n"]
  4854. entry --> target_cond_0
  4855. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  4856. target_cond_0 -->|true| 5
  4857. target_cond_0 -->|false| target_skip_0
  4858. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  4859. target_skip_0 --> target_phi_0
  4860. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  4861. target_phi_0 --> bunker_cond_0
  4862. 5["Block 5:\n %6 = alloca i8*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i8, align 1\n store i8* %3, i8** %6, align 8\n %10 = load i8*, i8** %6, align 8\n %11 = call i64 @strlen(i8* %10) #7\n %12 = trunc i64 %11 to i32\n store i32 %12, i32* %7, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  4863. 5 --> target_phi_0
  4864. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  4865. bunker_cond_0 -->|true| 14
  4866. bunker_cond_0 -->|false| bunker_skip_0
  4867. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  4868. bunker_skip_0 --> bunker_phi_0
  4869. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  4870. bunker_phi_0 --> target_cond_1
  4871. 14["Block 14:\n %15 = alloca %struct.Matrix*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca %struct.Matrix*, align 8\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n store i32 %1, i32* %16, align 4\n store i32 %2, i32* %17, align 4\n %21 = load i32, i32* %16, align 4\n %22 = icmp slt i32 %21, 1\n br i1 %22, label %26, label %23\n"]
  4872. 14 -->|true| 26
  4873. 14 -->|false| 23
  4874. 23["Block 23:\n %24 = load i32, i32* %17, align 4\n %25 = icmp slt i32 %24, 1\n br i1 %25, label %26, label %28\n"]
  4875. 23 -->|true| 26
  4876. 23 -->|false| 28
  4877. 26["Block 26:\n %27 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  4878. 26 --> 165
  4879. 28["Block 28:\n %29 = load i32, i32* %16, align 4\n %30 = icmp sgt i32 %29, 100\n br i1 %30, label %34, label %31\n"]
  4880. 28 -->|true| 34
  4881. 28 -->|false| 31
  4882. 31["Block 31:\n %32 = load i32, i32* %17, align 4\n %33 = icmp sgt i32 %32, 100\n br i1 %33, label %34, label %36\n"]
  4883. 31 -->|true| 34
  4884. 31 -->|false| 36
  4885. 34["Block 34:\n %35 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  4886. 34 --> 165
  4887. 36["Block 36:\n %37 = call noalias i8* @malloc(i64 32) #8\n %38 = bitcast i8* %37 to %struct.Matrix*\n store %struct.Matrix* %38, %struct.Matrix** %...\n %39 = load %struct.Matrix*, %struct.Matrix** ...\n %40 = icmp ne %struct.Matrix* %39, null\n br i1 %40, label %43, label %41\n"]
  4888. 36 -->|true| 43
  4889. 36 -->|false| 41
  4890. 41["Block 41:\n %42 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  4891. 41 --> 165
  4892. 43["Block 43:\n %44 = load i32, i32* %16, align 4\n %45 = load %struct.Matrix*, %struct.Matrix** ...\n %46 = getelementptr inbounds %struct.Matrix, ...\n store i32 %44, i32* %46, align 8\n %47 = load i32, i32* %17, align 4\n %48 = load %struct.Matrix*, %struct.Matrix** ...\n %49 = getelementptr inbounds %struct.Matrix, ...\n store i32 %47, i32* %49, align 4\n %50 = load i32, i32* %16, align 4\n %51 = load i32, i32* %17, align 4\n %52 = icmp eq i32 %50, %51\n %53 = zext i1 %52 to i32\n %54 = load %struct.Matrix*, %struct.Matrix** ...\n %55 = getelementptr inbounds %struct.Matrix, ...\n store i32 %53, i32* %55, align 8\n %56 = load %struct.Matrix*, %struct.Matrix** ...\n %57 = getelementptr inbounds %struct.Matrix, ...\n store double 0.000000e+00, double* %57, align 8\n %58 = load i32, i32* %16, align 4\n %59 = sext i32 %58 to i64\n %60 = mul i64 %59, 8\n %61 = call noalias i8* @malloc(i64 %60) #8\n %62 = bitcast i8* %61 to i32**\n %63 = load %struct.Matrix*, %struct.Matrix** ...\n %64 = getelementptr inbounds %struct.Matrix, ...\n store i32** %62, i32*** %64, align 8\n %65 = load %struct.Matrix*, %struct.Matrix** ...\n %66 = getelementptr inbounds %struct.Matrix, ...\n %67 = load i32**, i32*** %66, align 8\n %68 = icmp ne i32** %67, null\n br i1 %68, label %73, label %69\n"]
  4893. 43 -->|true| 73
  4894. 43 -->|false| 69
  4895. 69["Block 69:\n %70 = load %struct.Matrix*, %struct.Matrix** ...\n %71 = bitcast %struct.Matrix* %70 to i8*\n call void @free(i8* %71) #8\n %72 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  4896. 69 --> 165
  4897. 73["Block 73:\n store i32 0, i32* %19, align 4\n br label %74\n"]
  4898. 73 --> 74
  4899. 74["Block 74:\n %75 = load i32, i32* %19, align 4\n %76 = load i32, i32* %16, align 4\n %77 = icmp slt i32 %75, %76\n br i1 %77, label %78, label %126\n"]
  4900. 74 -->|true| 78
  4901. 74 -->|false| 126
  4902. 78["Block 78:\n %79 = load i32, i32* %17, align 4\n %80 = sext i32 %79 to i64\n %81 = call noalias i8* @calloc(i64 %80, i64 4...\n %82 = bitcast i8* %81 to i32*\n %83 = load %struct.Matrix*, %struct.Matrix** ...\n %84 = getelementptr inbounds %struct.Matrix, ...\n %85 = load i32**, i32*** %84, align 8\n %86 = load i32, i32* %19, align 4\n %87 = sext i32 %86 to i64\n %88 = getelementptr inbounds i32*, i32** %85,...\n store i32* %82, i32** %88, align 8\n %89 = load %struct.Matrix*, %struct.Matrix** ...\n %90 = getelementptr inbounds %struct.Matrix, ...\n %91 = load i32**, i32*** %90, align 8\n %92 = load i32, i32* %19, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds i32*, i32** %91,...\n %95 = load i32*, i32** %94, align 8\n %96 = icmp ne i32* %95, null\n br i1 %96, label %122, label %97\n"]
  4903. 78 -->|true| 122
  4904. 78 -->|false| 97
  4905. 97["Block 97:\n store i32 0, i32* %20, align 4\n br label %98\n"]
  4906. 97 --> 98
  4907. 98["Block 98:\n %99 = load i32, i32* %20, align 4\n %100 = load i32, i32* %19, align 4\n %101 = icmp slt i32 %99, %100\n br i1 %101, label %102, label %114\n"]
  4908. 98 -->|true| 102
  4909. 98 -->|false| 114
  4910. 102["Block 102:\n %103 = load %struct.Matrix*, %struct.Matrix**...\n %104 = getelementptr inbounds %struct.Matrix,...\n %105 = load i32**, i32*** %104, align 8\n %106 = load i32, i32* %20, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds i32*, i32** %10...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #8\n br label %111\n"]
  4911. 102 --> 111
  4912. 111["Block 111:\n %112 = load i32, i32* %20, align 4\n %113 = add nsw i32 %112, 1\n store i32 %113, i32* %20, align 4\n br label %98\n"]
  4913. 111 --> 98
  4914. 114["Block 114:\n %115 = load %struct.Matrix*, %struct.Matrix**...\n %116 = getelementptr inbounds %struct.Matrix,...\n %117 = load i32**, i32*** %116, align 8\n %118 = bitcast i32** %117 to i8*\n call void @free(i8* %118) #8\n %119 = load %struct.Matrix*, %struct.Matrix**...\n %120 = bitcast %struct.Matrix* %119 to i8*\n call void @free(i8* %120) #8\n %121 = call i32 @fused_setErrorMessage(i1 fal...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  4915. 114 --> 165
  4916. 122["Block 122:\n br label %123\n"]
  4917. 122 --> 123
  4918. 123["Block 123:\n %124 = load i32, i32* %19, align 4\n %125 = add nsw i32 %124, 1\n store i32 %125, i32* %19, align 4\n br label %74\n"]
  4919. 123 --> 74
  4920. 126["Block 126:\n %127 = load %struct.Matrix*, %struct.Matrix**...\n store %struct.Matrix* %127, %struct.Matrix** ...\n br label %bunker_phi_0\n"]
  4921. 126 --> bunker_phi_0
  4922. target_cond_1["Block target_cond_1:\n %128 = icmp eq i1 %0, true\n br i1 %128, label %129, label %target_skip_1\n"]
  4923. target_cond_1 -->|true| 129
  4924. target_cond_1 -->|false| target_skip_1
  4925. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  4926. target_skip_1 --> target_phi_1
  4927. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  4928. target_phi_1 --> bunker_cond_1
  4929. 129["Block 129:\n %130 = load i32, i32* %8, align 4\n %131 = load i32, i32* %7, align 4\n %132 = sdiv i32 %131, 2\n %133 = icmp slt i32 %130, %132\n br i1 %133, label %134, label %160\n"]
  4930. 129 -->|true| 134
  4931. 129 -->|false| 160
  4932. 134["Block 134:\n %135 = load i8*, i8** %6, align 8\n %136 = load i32, i32* %8, align 4\n %137 = sext i32 %136 to i64\n %138 = getelementptr inbounds i8, i8* %135, i...\n %139 = load i8, i8* %138, align 1\n store i8 %139, i8* %9, align 1\n %140 = load i8*, i8** %6, align 8\n %141 = load i32, i32* %7, align 4\n %142 = sub nsw i32 %141, 1\n %143 = load i32, i32* %8, align 4\n %144 = sub nsw i32 %142, %143\n %145 = sext i32 %144 to i64\n %146 = getelementptr inbounds i8, i8* %140, i...\n %147 = load i8, i8* %146, align 1\n %148 = load i8*, i8** %6, align 8\n %149 = load i32, i32* %8, align 4\n %150 = sext i32 %149 to i64\n %151 = getelementptr inbounds i8, i8* %148, i...\n store i8 %147, i8* %151, align 1\n %152 = load i8, i8* %9, align 1\n %153 = load i8*, i8** %6, align 8\n %154 = load i32, i32* %7, align 4\n %155 = sub nsw i32 %154, 1\n %156 = load i32, i32* %8, align 4\n %157 = sub nsw i32 %155, %156\n %158 = sext i32 %157 to i64\n %159 = getelementptr inbounds i8, i8* %153, i...\n store i8 %152, i8* %159, align 1\n br label %161\n"]
  4933. 134 --> 161
  4934. 160["Block 160:\n ret void\n"]
  4935. 161["Block 161:\n %162 = load i32, i32* %8, align 4\n %163 = add nsw i32 %162, 1\n store i32 %163, i32* %8, align 4\n br label %target_phi_1\n"]
  4936. 161 --> target_phi_1
  4937. bunker_cond_1["Block bunker_cond_1:\n %164 = icmp eq i1 %0, false\n br i1 %164, label %165, label %bunker_skip_1\n"]
  4938. bunker_cond_1 -->|true| 165
  4939. bunker_cond_1 -->|false| bunker_skip_1
  4940. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  4941. bunker_skip_1 --> bunker_phi_1
  4942. bunker_phi_1["Block bunker_phi_1:\n ret %struct.Matrix* null\n"]
  4943. 165["Block 165:\n %166 = load %struct.Matrix*, %struct.Matrix**...\n ret %struct.Matrix* %166\n br label %bunker_phi_1\n"]
  4944. 165 --> bunker_phi_1
  4945. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  4946. ```
  4947. [DEBUG][performCodeFusion] Processing return values for fused function: fused_createMatrix
  4948. [DEBUG][performCodeFusion] Fused function return type: struct.Matrix*
  4949. [DEBUG][performCodeFusion] Non-struct return type detected: struct.Matrix*
  4950. [DEBUG][performCodeFusion] Processing bunker block: %74
  4951. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %75 = load i32, i32* %19, align 4 (opcode: load)
  4952. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %76 = load i32, i32* %16, align 4 (opcode: load)
  4953. [DEBUG][performCodeFusion] Block %74 - Processing instruction: %77 = icmp slt i32 %75, %76 (opcode: icmp)
  4954. [DEBUG][performCodeFusion] Block %74 - Processing instruction: br i1 %77, label %78, label %126 (opcode: br)
  4955. [DEBUG][performCodeFusion] Processing bunker block: %14
  4956. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %15 = alloca %struct.Matrix*, align 8 (opcode: alloca)
  4957. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %16 = alloca i32, align 4 (opcode: alloca)
  4958. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %17 = alloca i32, align 4 (opcode: alloca)
  4959. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %18 = alloca %struct.Matrix*, align 8 (opcode: alloca)
  4960. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %19 = alloca i32, align 4 (opcode: alloca)
  4961. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %20 = alloca i32, align 4 (opcode: alloca)
  4962. [DEBUG][performCodeFusion] Block %14 - Processing instruction: store i32 %1, i32* %16, align 4 (opcode: store)
  4963. [DEBUG][performCodeFusion] Block %14 - Processing instruction: store i32 %2, i32* %17, align 4 (opcode: store)
  4964. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %21 = load i32, i32* %16, align 4 (opcode: load)
  4965. [DEBUG][performCodeFusion] Block %14 - Processing instruction: %22 = icmp slt i32 %21, 1 (opcode: icmp)
  4966. [DEBUG][performCodeFusion] Block %14 - Processing instruction: br i1 %22, label %26, label %23 (opcode: br)
  4967. [DEBUG][performCodeFusion] Processing bunker block: %97
  4968. [DEBUG][performCodeFusion] Block %97 - Processing instruction: store i32 0, i32* %20, align 4 (opcode: store)
  4969. [DEBUG][performCodeFusion] Block %97 - Processing instruction: br label %98 (opcode: br)
  4970. [DEBUG][performCodeFusion] Processing bunker block: %73
  4971. [DEBUG][performCodeFusion] Block %73 - Processing instruction: store i32 0, i32* %19, align 4 (opcode: store)
  4972. [DEBUG][performCodeFusion] Block %73 - Processing instruction: br label %74 (opcode: br)
  4973. [DEBUG][performCodeFusion] Processing bunker block: %28
  4974. [DEBUG][performCodeFusion] Block %28 - Processing instruction: %29 = load i32, i32* %16, align 4 (opcode: load)
  4975. [DEBUG][performCodeFusion] Block %28 - Processing instruction: %30 = icmp sgt i32 %29, 100 (opcode: icmp)
  4976. [DEBUG][performCodeFusion] Block %28 - Processing instruction: br i1 %30, label %34, label %31 (opcode: br)
  4977. [DEBUG][performCodeFusion] Processing bunker block: %122
  4978. [DEBUG][performCodeFusion] Block %122 - Processing instruction: br label %123 (opcode: br)
  4979. [DEBUG][performCodeFusion] Processing bunker block: %123
  4980. [DEBUG][performCodeFusion] Block %123 - Processing instruction: %124 = load i32, i32* %19, align 4 (opcode: load)
  4981. [DEBUG][performCodeFusion] Block %123 - Processing instruction: %125 = add nsw i32 %124, 1 (opcode: add)
  4982. [DEBUG][performCodeFusion] Block %123 - Processing instruction: store i32 %125, i32* %19, align 4 (opcode: store)
  4983. [DEBUG][performCodeFusion] Block %123 - Processing instruction: br label %74 (opcode: br)
  4984. [DEBUG][performCodeFusion] Processing bunker block: %126
  4985. [DEBUG][performCodeFusion] Block %126 - Processing instruction: %127 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  4986. [DEBUG][performCodeFusion] Block %126 - Processing instruction: store %struct.Matrix* %127, %struct.Matrix** %15, align 8 (opcode: store)
  4987. [DEBUG][performCodeFusion] Block %126 - Processing instruction: br label %bunker_phi_0 (opcode: br)
  4988. [DEBUG][performCodeFusion] Processing bunker block: %43
  4989. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %44 = load i32, i32* %16, align 4 (opcode: load)
  4990. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %45 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  4991. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %46 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %45, i32 0, i32 1 (opcode: getelementptr)
  4992. [DEBUG][performCodeFusion] Block %43 - Processing instruction: store i32 %44, i32* %46, align 8 (opcode: store)
  4993. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %47 = load i32, i32* %17, align 4 (opcode: load)
  4994. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %48 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  4995. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %48, i32 0, i32 2 (opcode: getelementptr)
  4996. [DEBUG][performCodeFusion] Block %43 - Processing instruction: store i32 %47, i32* %49, align 4 (opcode: store)
  4997. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %50 = load i32, i32* %16, align 4 (opcode: load)
  4998. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %51 = load i32, i32* %17, align 4 (opcode: load)
  4999. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %52 = icmp eq i32 %50, %51 (opcode: icmp)
  5000. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %53 = zext i1 %52 to i32 (opcode: zext)
  5001. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %54 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5002. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %55 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %54, i32 0, i32 3 (opcode: getelementptr)
  5003. [DEBUG][performCodeFusion] Block %43 - Processing instruction: store i32 %53, i32* %55, align 8 (opcode: store)
  5004. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %56 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5005. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %57 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %56, i32 0, i32 4 (opcode: getelementptr)
  5006. [DEBUG][performCodeFusion] Block %43 - Processing instruction: store double 0.000000e+00, double* %57, align 8 (opcode: store)
  5007. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %58 = load i32, i32* %16, align 4 (opcode: load)
  5008. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %59 = sext i32 %58 to i64 (opcode: sext)
  5009. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %60 = mul i64 %59, 8 (opcode: mul)
  5010. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %61 = call noalias i8* @malloc(i64 %60) #8 (opcode: call)
  5011. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %62 = bitcast i8* %61 to i32** (opcode: bitcast)
  5012. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %63 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5013. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 0 (opcode: getelementptr)
  5014. [DEBUG][performCodeFusion] Block %43 - Processing instruction: store i32** %62, i32*** %64, align 8 (opcode: store)
  5015. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %65 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5016. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %66 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %65, i32 0, i32 0 (opcode: getelementptr)
  5017. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %67 = load i32**, i32*** %66, align 8 (opcode: load)
  5018. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %68 = icmp ne i32** %67, null (opcode: icmp)
  5019. [DEBUG][performCodeFusion] Block %43 - Processing instruction: br i1 %68, label %73, label %69 (opcode: br)
  5020. [DEBUG][performCodeFusion] Processing bunker block: %41
  5021. [DEBUG][performCodeFusion] Block %41 - Processing instruction: %42 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0)) (opcode: call)
  5022. [DEBUG][performCodeFusion] Block %41 - Processing instruction: store %struct.Matrix* null, %struct.Matrix** %15, align 8 (opcode: store)
  5023. [DEBUG][performCodeFusion] Block %41 - Processing instruction: br label %165 (opcode: br)
  5024. [DEBUG][performCodeFusion] Processing bunker block: %36
  5025. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %37 = call noalias i8* @malloc(i64 32) #8 (opcode: call)
  5026. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %38 = bitcast i8* %37 to %struct.Matrix* (opcode: bitcast)
  5027. [DEBUG][performCodeFusion] Block %36 - Processing instruction: store %struct.Matrix* %38, %struct.Matrix** %18, align 8 (opcode: store)
  5028. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %39 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5029. [DEBUG][performCodeFusion] Block %36 - Processing instruction: %40 = icmp ne %struct.Matrix* %39, null (opcode: icmp)
  5030. [DEBUG][performCodeFusion] Block %36 - Processing instruction: br i1 %40, label %43, label %41 (opcode: br)
  5031. [DEBUG][performCodeFusion] Processing bunker block: %34
  5032. [DEBUG][performCodeFusion] Block %34 - Processing instruction: %35 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0)) (opcode: call)
  5033. [DEBUG][performCodeFusion] Block %34 - Processing instruction: store %struct.Matrix* null, %struct.Matrix** %15, align 8 (opcode: store)
  5034. [DEBUG][performCodeFusion] Block %34 - Processing instruction: br label %165 (opcode: br)
  5035. [DEBUG][performCodeFusion] Processing bunker block: %69
  5036. [DEBUG][performCodeFusion] Block %69 - Processing instruction: %70 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5037. [DEBUG][performCodeFusion] Block %69 - Processing instruction: %71 = bitcast %struct.Matrix* %70 to i8* (opcode: bitcast)
  5038. [DEBUG][performCodeFusion] Block %69 - Processing instruction: call void @free(i8* %71) #8 (opcode: call)
  5039. [DEBUG][performCodeFusion] Block %69 - Processing instruction: %72 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0)) (opcode: call)
  5040. [DEBUG][performCodeFusion] Block %69 - Processing instruction: store %struct.Matrix* null, %struct.Matrix** %15, align 8 (opcode: store)
  5041. [DEBUG][performCodeFusion] Block %69 - Processing instruction: br label %165 (opcode: br)
  5042. [DEBUG][performCodeFusion] Processing bunker block: %31
  5043. [DEBUG][performCodeFusion] Block %31 - Processing instruction: %32 = load i32, i32* %17, align 4 (opcode: load)
  5044. [DEBUG][performCodeFusion] Block %31 - Processing instruction: %33 = icmp sgt i32 %32, 100 (opcode: icmp)
  5045. [DEBUG][performCodeFusion] Block %31 - Processing instruction: br i1 %33, label %34, label %36 (opcode: br)
  5046. [DEBUG][performCodeFusion] Processing bunker block: %26
  5047. [DEBUG][performCodeFusion] Block %26 - Processing instruction: %27 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) (opcode: call)
  5048. [DEBUG][performCodeFusion] Block %26 - Processing instruction: store %struct.Matrix* null, %struct.Matrix** %15, align 8 (opcode: store)
  5049. [DEBUG][performCodeFusion] Block %26 - Processing instruction: br label %165 (opcode: br)
  5050. [DEBUG][performCodeFusion] Processing bunker block: %78
  5051. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %79 = load i32, i32* %17, align 4 (opcode: load)
  5052. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %80 = sext i32 %79 to i64 (opcode: sext)
  5053. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %81 = call noalias i8* @calloc(i64 %80, i64 4) #8 (opcode: call)
  5054. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %82 = bitcast i8* %81 to i32* (opcode: bitcast)
  5055. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %83 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5056. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %84 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %83, i32 0, i32 0 (opcode: getelementptr)
  5057. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %85 = load i32**, i32*** %84, align 8 (opcode: load)
  5058. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %86 = load i32, i32* %19, align 4 (opcode: load)
  5059. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %87 = sext i32 %86 to i64 (opcode: sext)
  5060. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %88 = getelementptr inbounds i32*, i32** %85, i64 %87 (opcode: getelementptr)
  5061. [DEBUG][performCodeFusion] Block %78 - Processing instruction: store i32* %82, i32** %88, align 8 (opcode: store)
  5062. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %89 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5063. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %90 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %89, i32 0, i32 0 (opcode: getelementptr)
  5064. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %91 = load i32**, i32*** %90, align 8 (opcode: load)
  5065. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %92 = load i32, i32* %19, align 4 (opcode: load)
  5066. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %93 = sext i32 %92 to i64 (opcode: sext)
  5067. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %94 = getelementptr inbounds i32*, i32** %91, i64 %93 (opcode: getelementptr)
  5068. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %95 = load i32*, i32** %94, align 8 (opcode: load)
  5069. [DEBUG][performCodeFusion] Block %78 - Processing instruction: %96 = icmp ne i32* %95, null (opcode: icmp)
  5070. [DEBUG][performCodeFusion] Block %78 - Processing instruction: br i1 %96, label %122, label %97 (opcode: br)
  5071. [DEBUG][performCodeFusion] Processing bunker block: %102
  5072. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %103 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5073. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %104 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %103, i32 0, i32 0 (opcode: getelementptr)
  5074. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %105 = load i32**, i32*** %104, align 8 (opcode: load)
  5075. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %106 = load i32, i32* %20, align 4 (opcode: load)
  5076. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %107 = sext i32 %106 to i64 (opcode: sext)
  5077. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %108 = getelementptr inbounds i32*, i32** %105, i64 %107 (opcode: getelementptr)
  5078. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %109 = load i32*, i32** %108, align 8 (opcode: load)
  5079. [DEBUG][performCodeFusion] Block %102 - Processing instruction: %110 = bitcast i32* %109 to i8* (opcode: bitcast)
  5080. [DEBUG][performCodeFusion] Block %102 - Processing instruction: call void @free(i8* %110) #8 (opcode: call)
  5081. [DEBUG][performCodeFusion] Block %102 - Processing instruction: br label %111 (opcode: br)
  5082. [DEBUG][performCodeFusion] Processing bunker block: %98
  5083. [DEBUG][performCodeFusion] Block %98 - Processing instruction: %99 = load i32, i32* %20, align 4 (opcode: load)
  5084. [DEBUG][performCodeFusion] Block %98 - Processing instruction: %100 = load i32, i32* %19, align 4 (opcode: load)
  5085. [DEBUG][performCodeFusion] Block %98 - Processing instruction: %101 = icmp slt i32 %99, %100 (opcode: icmp)
  5086. [DEBUG][performCodeFusion] Block %98 - Processing instruction: br i1 %101, label %102, label %114 (opcode: br)
  5087. [DEBUG][performCodeFusion] Processing bunker block: %111
  5088. [DEBUG][performCodeFusion] Block %111 - Processing instruction: %112 = load i32, i32* %20, align 4 (opcode: load)
  5089. [DEBUG][performCodeFusion] Block %111 - Processing instruction: %113 = add nsw i32 %112, 1 (opcode: add)
  5090. [DEBUG][performCodeFusion] Block %111 - Processing instruction: store i32 %113, i32* %20, align 4 (opcode: store)
  5091. [DEBUG][performCodeFusion] Block %111 - Processing instruction: br label %98 (opcode: br)
  5092. [DEBUG][performCodeFusion] Processing bunker block: %114
  5093. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %115 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5094. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %116 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %115, i32 0, i32 0 (opcode: getelementptr)
  5095. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %117 = load i32**, i32*** %116, align 8 (opcode: load)
  5096. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %118 = bitcast i32** %117 to i8* (opcode: bitcast)
  5097. [DEBUG][performCodeFusion] Block %114 - Processing instruction: call void @free(i8* %118) #8 (opcode: call)
  5098. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %119 = load %struct.Matrix*, %struct.Matrix** %18, align 8 (opcode: load)
  5099. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %120 = bitcast %struct.Matrix* %119 to i8* (opcode: bitcast)
  5100. [DEBUG][performCodeFusion] Block %114 - Processing instruction: call void @free(i8* %120) #8 (opcode: call)
  5101. [DEBUG][performCodeFusion] Block %114 - Processing instruction: %121 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0)) (opcode: call)
  5102. [DEBUG][performCodeFusion] Block %114 - Processing instruction: store %struct.Matrix* null, %struct.Matrix** %15, align 8 (opcode: store)
  5103. [DEBUG][performCodeFusion] Block %114 - Processing instruction: br label %165 (opcode: br)
  5104. [DEBUG][performCodeFusion] Processing bunker block: %23
  5105. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %24 = load i32, i32* %17, align 4 (opcode: load)
  5106. [DEBUG][performCodeFusion] Block %23 - Processing instruction: %25 = icmp slt i32 %24, 1 (opcode: icmp)
  5107. [DEBUG][performCodeFusion] Block %23 - Processing instruction: br i1 %25, label %26, label %28 (opcode: br)
  5108. [DEBUG][performCodeFusion] Processing bunker block: %165
  5109. [DEBUG][performCodeFusion] Block %165 - Processing instruction: %166 = load %struct.Matrix*, %struct.Matrix** %15, align 8 (opcode: load)
  5110. [DEBUG][performCodeFusion] Block %165 - Processing instruction: ret %struct.Matrix* %166 (opcode: ret)
  5111. [DEBUG][performCodeFusion] Updated bunker return in block %165 with value type struct.Matrix*
  5112. [DEBUG][performCodeFusion] Block %165 - Processing instruction: br label %bunker_phi_1 (opcode: br)
  5113. [DEBUG][performCodeFusion] Removing extra instruction after return in block %165: br
  5114. [DEBUG][performCodeFusion] Processing target block: %5
  5115. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %6 = alloca i8*, align 8 (opcode: alloca)
  5116. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %7 = alloca i32, align 4 (opcode: alloca)
  5117. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %8 = alloca i32, align 4 (opcode: alloca)
  5118. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %9 = alloca i8, align 1 (opcode: alloca)
  5119. [DEBUG][performCodeFusion] Block %5 - Processing instruction: store i8* %3, i8** %6, align 8 (opcode: store)
  5120. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %10 = load i8*, i8** %6, align 8 (opcode: load)
  5121. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %11 = call i64 @strlen(i8* %10) #7 (opcode: call)
  5122. [DEBUG][performCodeFusion] Block %5 - Processing instruction: %12 = trunc i64 %11 to i32 (opcode: trunc)
  5123. [DEBUG][performCodeFusion] Block %5 - Processing instruction: store i32 %12, i32* %7, align 4 (opcode: store)
  5124. [DEBUG][performCodeFusion] Block %5 - Processing instruction: store i32 0, i32* %8, align 4 (opcode: store)
  5125. [DEBUG][performCodeFusion] Block %5 - Processing instruction: br label %target_phi_0 (opcode: br)
  5126. [DEBUG][performCodeFusion] Processing target block: %160
  5127. [DEBUG][performCodeFusion] Block %160 - Processing instruction: ret void (opcode: ret)
  5128. [DEBUG][performCodeFusion] Setting default target return value
  5129. [DEBUG][performCodeFusion] Updated target return in block %160 with value type struct.Matrix*
  5130. [DEBUG][performCodeFusion] Processing target block: %161
  5131. [DEBUG][performCodeFusion] Block %161 - Processing instruction: %162 = load i32, i32* %8, align 4 (opcode: load)
  5132. [DEBUG][performCodeFusion] Block %161 - Processing instruction: %163 = add nsw i32 %162, 1 (opcode: add)
  5133. [DEBUG][performCodeFusion] Block %161 - Processing instruction: store i32 %163, i32* %8, align 4 (opcode: store)
  5134. [DEBUG][performCodeFusion] Block %161 - Processing instruction: br label %target_phi_1 (opcode: br)
  5135. [DEBUG][performCodeFusion] Processing target block: %129
  5136. [DEBUG][performCodeFusion] Block %129 - Processing instruction: %130 = load i32, i32* %8, align 4 (opcode: load)
  5137. [DEBUG][performCodeFusion] Block %129 - Processing instruction: %131 = load i32, i32* %7, align 4 (opcode: load)
  5138. [DEBUG][performCodeFusion] Block %129 - Processing instruction: %132 = sdiv i32 %131, 2 (opcode: sdiv)
  5139. [DEBUG][performCodeFusion] Block %129 - Processing instruction: %133 = icmp slt i32 %130, %132 (opcode: icmp)
  5140. [DEBUG][performCodeFusion] Block %129 - Processing instruction: br i1 %133, label %134, label %160 (opcode: br)
  5141. [DEBUG][performCodeFusion] Processing target block: %134
  5142. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %135 = load i8*, i8** %6, align 8 (opcode: load)
  5143. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %136 = load i32, i32* %8, align 4 (opcode: load)
  5144. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %137 = sext i32 %136 to i64 (opcode: sext)
  5145. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %138 = getelementptr inbounds i8, i8* %135, i64 %137 (opcode: getelementptr)
  5146. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %139 = load i8, i8* %138, align 1 (opcode: load)
  5147. [DEBUG][performCodeFusion] Block %134 - Processing instruction: store i8 %139, i8* %9, align 1 (opcode: store)
  5148. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %140 = load i8*, i8** %6, align 8 (opcode: load)
  5149. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %141 = load i32, i32* %7, align 4 (opcode: load)
  5150. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %142 = sub nsw i32 %141, 1 (opcode: sub)
  5151. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %143 = load i32, i32* %8, align 4 (opcode: load)
  5152. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %144 = sub nsw i32 %142, %143 (opcode: sub)
  5153. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %145 = sext i32 %144 to i64 (opcode: sext)
  5154. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %146 = getelementptr inbounds i8, i8* %140, i64 %145 (opcode: getelementptr)
  5155. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %147 = load i8, i8* %146, align 1 (opcode: load)
  5156. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %148 = load i8*, i8** %6, align 8 (opcode: load)
  5157. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %149 = load i32, i32* %8, align 4 (opcode: load)
  5158. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %150 = sext i32 %149 to i64 (opcode: sext)
  5159. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %151 = getelementptr inbounds i8, i8* %148, i64 %150 (opcode: getelementptr)
  5160. [DEBUG][performCodeFusion] Block %134 - Processing instruction: store i8 %147, i8* %151, align 1 (opcode: store)
  5161. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %152 = load i8, i8* %9, align 1 (opcode: load)
  5162. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %153 = load i8*, i8** %6, align 8 (opcode: load)
  5163. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %154 = load i32, i32* %7, align 4 (opcode: load)
  5164. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %155 = sub nsw i32 %154, 1 (opcode: sub)
  5165. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %156 = load i32, i32* %8, align 4 (opcode: load)
  5166. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %157 = sub nsw i32 %155, %156 (opcode: sub)
  5167. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %158 = sext i32 %157 to i64 (opcode: sext)
  5168. [DEBUG][performCodeFusion] Block %134 - Processing instruction: %159 = getelementptr inbounds i8, i8* %153, i64 %158 (opcode: getelementptr)
  5169. [DEBUG][performCodeFusion] Block %134 - Processing instruction: store i8 %152, i8* %159, align 1 (opcode: store)
  5170. [DEBUG][performCodeFusion] Block %134 - Processing instruction: br label %161 (opcode: br)
  5171. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_createMatrix
  5172. ```mermaid: fused_createMatrix
  5173. graph TD
  5174. entry["Block entry:\n br label %target_cond_0\n"]
  5175. entry --> target_cond_0
  5176. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  5177. target_cond_0 -->|true| 5
  5178. target_cond_0 -->|false| target_skip_0
  5179. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  5180. target_skip_0 --> target_phi_0
  5181. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  5182. target_phi_0 --> bunker_cond_0
  5183. 5["Block 5:\n %6 = alloca i8*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i8, align 1\n store i8* %3, i8** %6, align 8\n %10 = load i8*, i8** %6, align 8\n %11 = call i64 @strlen(i8* %10) #7\n %12 = trunc i64 %11 to i32\n store i32 %12, i32* %7, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  5184. 5 --> target_phi_0
  5185. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  5186. bunker_cond_0 -->|true| 14
  5187. bunker_cond_0 -->|false| bunker_skip_0
  5188. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  5189. bunker_skip_0 --> bunker_phi_0
  5190. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  5191. bunker_phi_0 --> target_cond_1
  5192. 14["Block 14:\n %15 = alloca %struct.Matrix*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca %struct.Matrix*, align 8\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n store i32 %1, i32* %16, align 4\n store i32 %2, i32* %17, align 4\n %21 = load i32, i32* %16, align 4\n %22 = icmp slt i32 %21, 1\n br i1 %22, label %26, label %23\n"]
  5193. 14 -->|true| 26
  5194. 14 -->|false| 23
  5195. 23["Block 23:\n %24 = load i32, i32* %17, align 4\n %25 = icmp slt i32 %24, 1\n br i1 %25, label %26, label %28\n"]
  5196. 23 -->|true| 26
  5197. 23 -->|false| 28
  5198. 26["Block 26:\n %27 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5199. 26 --> 165
  5200. 28["Block 28:\n %29 = load i32, i32* %16, align 4\n %30 = icmp sgt i32 %29, 100\n br i1 %30, label %34, label %31\n"]
  5201. 28 -->|true| 34
  5202. 28 -->|false| 31
  5203. 31["Block 31:\n %32 = load i32, i32* %17, align 4\n %33 = icmp sgt i32 %32, 100\n br i1 %33, label %34, label %36\n"]
  5204. 31 -->|true| 34
  5205. 31 -->|false| 36
  5206. 34["Block 34:\n %35 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5207. 34 --> 165
  5208. 36["Block 36:\n %37 = call noalias i8* @malloc(i64 32) #8\n %38 = bitcast i8* %37 to %struct.Matrix*\n store %struct.Matrix* %38, %struct.Matrix** %...\n %39 = load %struct.Matrix*, %struct.Matrix** ...\n %40 = icmp ne %struct.Matrix* %39, null\n br i1 %40, label %43, label %41\n"]
  5209. 36 -->|true| 43
  5210. 36 -->|false| 41
  5211. 41["Block 41:\n %42 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5212. 41 --> 165
  5213. 43["Block 43:\n %44 = load i32, i32* %16, align 4\n %45 = load %struct.Matrix*, %struct.Matrix** ...\n %46 = getelementptr inbounds %struct.Matrix, ...\n store i32 %44, i32* %46, align 8\n %47 = load i32, i32* %17, align 4\n %48 = load %struct.Matrix*, %struct.Matrix** ...\n %49 = getelementptr inbounds %struct.Matrix, ...\n store i32 %47, i32* %49, align 4\n %50 = load i32, i32* %16, align 4\n %51 = load i32, i32* %17, align 4\n %52 = icmp eq i32 %50, %51\n %53 = zext i1 %52 to i32\n %54 = load %struct.Matrix*, %struct.Matrix** ...\n %55 = getelementptr inbounds %struct.Matrix, ...\n store i32 %53, i32* %55, align 8\n %56 = load %struct.Matrix*, %struct.Matrix** ...\n %57 = getelementptr inbounds %struct.Matrix, ...\n store double 0.000000e+00, double* %57, align 8\n %58 = load i32, i32* %16, align 4\n %59 = sext i32 %58 to i64\n %60 = mul i64 %59, 8\n %61 = call noalias i8* @malloc(i64 %60) #8\n %62 = bitcast i8* %61 to i32**\n %63 = load %struct.Matrix*, %struct.Matrix** ...\n %64 = getelementptr inbounds %struct.Matrix, ...\n store i32** %62, i32*** %64, align 8\n %65 = load %struct.Matrix*, %struct.Matrix** ...\n %66 = getelementptr inbounds %struct.Matrix, ...\n %67 = load i32**, i32*** %66, align 8\n %68 = icmp ne i32** %67, null\n br i1 %68, label %73, label %69\n"]
  5214. 43 -->|true| 73
  5215. 43 -->|false| 69
  5216. 69["Block 69:\n %70 = load %struct.Matrix*, %struct.Matrix** ...\n %71 = bitcast %struct.Matrix* %70 to i8*\n call void @free(i8* %71) #8\n %72 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5217. 69 --> 165
  5218. 73["Block 73:\n store i32 0, i32* %19, align 4\n br label %74\n"]
  5219. 73 --> 74
  5220. 74["Block 74:\n %75 = load i32, i32* %19, align 4\n %76 = load i32, i32* %16, align 4\n %77 = icmp slt i32 %75, %76\n br i1 %77, label %78, label %126\n"]
  5221. 74 -->|true| 78
  5222. 74 -->|false| 126
  5223. 78["Block 78:\n %79 = load i32, i32* %17, align 4\n %80 = sext i32 %79 to i64\n %81 = call noalias i8* @calloc(i64 %80, i64 4...\n %82 = bitcast i8* %81 to i32*\n %83 = load %struct.Matrix*, %struct.Matrix** ...\n %84 = getelementptr inbounds %struct.Matrix, ...\n %85 = load i32**, i32*** %84, align 8\n %86 = load i32, i32* %19, align 4\n %87 = sext i32 %86 to i64\n %88 = getelementptr inbounds i32*, i32** %85,...\n store i32* %82, i32** %88, align 8\n %89 = load %struct.Matrix*, %struct.Matrix** ...\n %90 = getelementptr inbounds %struct.Matrix, ...\n %91 = load i32**, i32*** %90, align 8\n %92 = load i32, i32* %19, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds i32*, i32** %91,...\n %95 = load i32*, i32** %94, align 8\n %96 = icmp ne i32* %95, null\n br i1 %96, label %122, label %97\n"]
  5224. 78 -->|true| 122
  5225. 78 -->|false| 97
  5226. 97["Block 97:\n store i32 0, i32* %20, align 4\n br label %98\n"]
  5227. 97 --> 98
  5228. 98["Block 98:\n %99 = load i32, i32* %20, align 4\n %100 = load i32, i32* %19, align 4\n %101 = icmp slt i32 %99, %100\n br i1 %101, label %102, label %114\n"]
  5229. 98 -->|true| 102
  5230. 98 -->|false| 114
  5231. 102["Block 102:\n %103 = load %struct.Matrix*, %struct.Matrix**...\n %104 = getelementptr inbounds %struct.Matrix,...\n %105 = load i32**, i32*** %104, align 8\n %106 = load i32, i32* %20, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds i32*, i32** %10...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #8\n br label %111\n"]
  5232. 102 --> 111
  5233. 111["Block 111:\n %112 = load i32, i32* %20, align 4\n %113 = add nsw i32 %112, 1\n store i32 %113, i32* %20, align 4\n br label %98\n"]
  5234. 111 --> 98
  5235. 114["Block 114:\n %115 = load %struct.Matrix*, %struct.Matrix**...\n %116 = getelementptr inbounds %struct.Matrix,...\n %117 = load i32**, i32*** %116, align 8\n %118 = bitcast i32** %117 to i8*\n call void @free(i8* %118) #8\n %119 = load %struct.Matrix*, %struct.Matrix**...\n %120 = bitcast %struct.Matrix* %119 to i8*\n call void @free(i8* %120) #8\n %121 = call i32 @fused_setErrorMessage(i1 fal...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5236. 114 --> 165
  5237. 122["Block 122:\n br label %123\n"]
  5238. 122 --> 123
  5239. 123["Block 123:\n %124 = load i32, i32* %19, align 4\n %125 = add nsw i32 %124, 1\n store i32 %125, i32* %19, align 4\n br label %74\n"]
  5240. 123 --> 74
  5241. 126["Block 126:\n %127 = load %struct.Matrix*, %struct.Matrix**...\n store %struct.Matrix* %127, %struct.Matrix** ...\n br label %bunker_phi_0\n"]
  5242. 126 --> bunker_phi_0
  5243. target_cond_1["Block target_cond_1:\n %128 = icmp eq i1 %0, true\n br i1 %128, label %129, label %target_skip_1\n"]
  5244. target_cond_1 -->|true| 129
  5245. target_cond_1 -->|false| target_skip_1
  5246. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  5247. target_skip_1 --> target_phi_1
  5248. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  5249. target_phi_1 --> bunker_cond_1
  5250. 129["Block 129:\n %130 = load i32, i32* %8, align 4\n %131 = load i32, i32* %7, align 4\n %132 = sdiv i32 %131, 2\n %133 = icmp slt i32 %130, %132\n br i1 %133, label %134, label %160\n"]
  5251. 129 -->|true| 134
  5252. 129 -->|false| 160
  5253. 134["Block 134:\n %135 = load i8*, i8** %6, align 8\n %136 = load i32, i32* %8, align 4\n %137 = sext i32 %136 to i64\n %138 = getelementptr inbounds i8, i8* %135, i...\n %139 = load i8, i8* %138, align 1\n store i8 %139, i8* %9, align 1\n %140 = load i8*, i8** %6, align 8\n %141 = load i32, i32* %7, align 4\n %142 = sub nsw i32 %141, 1\n %143 = load i32, i32* %8, align 4\n %144 = sub nsw i32 %142, %143\n %145 = sext i32 %144 to i64\n %146 = getelementptr inbounds i8, i8* %140, i...\n %147 = load i8, i8* %146, align 1\n %148 = load i8*, i8** %6, align 8\n %149 = load i32, i32* %8, align 4\n %150 = sext i32 %149 to i64\n %151 = getelementptr inbounds i8, i8* %148, i...\n store i8 %147, i8* %151, align 1\n %152 = load i8, i8* %9, align 1\n %153 = load i8*, i8** %6, align 8\n %154 = load i32, i32* %7, align 4\n %155 = sub nsw i32 %154, 1\n %156 = load i32, i32* %8, align 4\n %157 = sub nsw i32 %155, %156\n %158 = sext i32 %157 to i64\n %159 = getelementptr inbounds i8, i8* %153, i...\n store i8 %152, i8* %159, align 1\n br label %161\n"]
  5254. 134 --> 161
  5255. 160["Block 160:\n ret %struct.Matrix* null\n"]
  5256. 161["Block 161:\n %162 = load i32, i32* %8, align 4\n %163 = add nsw i32 %162, 1\n store i32 %163, i32* %8, align 4\n br label %target_phi_1\n"]
  5257. 161 --> target_phi_1
  5258. bunker_cond_1["Block bunker_cond_1:\n %164 = icmp eq i1 %0, false\n br i1 %164, label %165, label %bunker_skip_1\n"]
  5259. bunker_cond_1 -->|true| 165
  5260. bunker_cond_1 -->|false| bunker_skip_1
  5261. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  5262. bunker_skip_1 --> bunker_phi_1
  5263. bunker_phi_1["Block bunker_phi_1:\n ret %struct.Matrix* null\n"]
  5264. 165["Block 165:\n %166 = load %struct.Matrix*, %struct.Matrix**...\n ret %struct.Matrix* %166\n"]
  5265. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  5266. ```
  5267. [DEBUG][updateCallSite] Original call instruction:
  5268. %86 = call %struct.Matrix* @createMatrix(i32 3, i32 3)
  5269. [DEBUG][updateCallSite] Adding bunker control parameter
  5270. [DEBUG][updateCallSite] Adding original call parameters:
  5271. [DEBUG][updateCallSite] Argument 0: type=i32
  5272. [DEBUG][updateCallSite] Argument 1: type=i32
  5273. [DEBUG][updateCallSite] Adding default target parameters:
  5274. [DEBUG][updateCallSite] Parameter type: i8*
  5275. [DEBUG][updateCallSite] New call instruction:
  5276. %86 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  5277. [DEBUG][updateCallSite] Processing non-void return value of type: struct.Matrix*
  5278. [DEBUG][updateCallSite] Using direct return value
  5279. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  5280. [INFO][updateCallSite] Successfully updated call site from %86 = call %struct.Matrix* @createMatrix(i32 3, i32 3) to %86 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  5281. [DEBUG][updateCallSite] Original call instruction:
  5282. %85 = call %struct.Matrix* @createMatrix(i32 3, i32 3)
  5283. [DEBUG][updateCallSite] Adding bunker control parameter
  5284. [DEBUG][updateCallSite] Adding original call parameters:
  5285. [DEBUG][updateCallSite] Argument 0: type=i32
  5286. [DEBUG][updateCallSite] Argument 1: type=i32
  5287. [DEBUG][updateCallSite] Adding default target parameters:
  5288. [DEBUG][updateCallSite] Parameter type: i8*
  5289. [DEBUG][updateCallSite] New call instruction:
  5290. %85 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  5291. [DEBUG][updateCallSite] Processing non-void return value of type: struct.Matrix*
  5292. [DEBUG][updateCallSite] Using direct return value
  5293. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  5294. [INFO][updateCallSite] Successfully updated call site from %85 = call %struct.Matrix* @createMatrix(i32 3, i32 3) to %85 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  5295. [DEBUG][updateCallSite] Original call instruction:
  5296. %62 = call %struct.Matrix* @createMatrix(i32 %58, i32 %61)
  5297. [DEBUG][updateCallSite] Adding bunker control parameter
  5298. [DEBUG][updateCallSite] Adding original call parameters:
  5299. [DEBUG][updateCallSite] Argument 0: type=i32
  5300. [DEBUG][updateCallSite] Argument 1: type=i32
  5301. [DEBUG][updateCallSite] Adding default target parameters:
  5302. [DEBUG][updateCallSite] Parameter type: i8*
  5303. [DEBUG][updateCallSite] New call instruction:
  5304. %62 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 %58, i32 %61, i8* null)
  5305. [DEBUG][updateCallSite] Processing non-void return value of type: struct.Matrix*
  5306. [DEBUG][updateCallSite] Using direct return value
  5307. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  5308. [INFO][updateCallSite] Successfully updated call site from %62 = call %struct.Matrix* @createMatrix(i32 %58, i32 %61) to %62 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 %58, i32 %61, i8* null)
  5309. [DEBUG][updateCallSite] Original call instruction:
  5310. call void @reverseString(i8* %14)
  5311. [DEBUG][updateCallSite] Adding target control parameter
  5312. [DEBUG][updateCallSite] Adding default bunker parameters:
  5313. [DEBUG][updateCallSite] Parameter type: i32
  5314. [DEBUG][updateCallSite] Parameter type: i32
  5315. [DEBUG][updateCallSite] Adding original call parameters:
  5316. [DEBUG][updateCallSite] Argument 0: type=i8*
  5317. [DEBUG][updateCallSite] New call instruction:
  5318. %15 = call %struct.Matrix* @fused_createMatrix(i1 true, i32 0, i32 0, i8* %14)
  5319. [DEBUG][updateCallSite] Void return type, no value processing needed
  5320. [INFO][updateCallSite] Successfully updated call site from call void @reverseString(i8* %14) to %15 = call %struct.Matrix* @fused_createMatrix(i1 true, i32 0, i32 0, i8* %14)
  5321. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_createMatrix
  5322. ```mermaid: fused_createMatrix
  5323. graph TD
  5324. entry["Block entry:\n br label %target_cond_0\n"]
  5325. entry --> target_cond_0
  5326. target_cond_0["Block target_cond_0:\n %4 = icmp eq i1 %0, true\n br i1 %4, label %5, label %target_skip_0\n"]
  5327. target_cond_0 -->|true| 5
  5328. target_cond_0 -->|false| target_skip_0
  5329. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  5330. target_skip_0 --> target_phi_0
  5331. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  5332. target_phi_0 --> bunker_cond_0
  5333. 5["Block 5:\n %6 = alloca i8*, align 8\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n %9 = alloca i8, align 1\n store i8* %3, i8** %6, align 8\n %10 = load i8*, i8** %6, align 8\n %11 = call i64 @strlen(i8* %10) #7\n %12 = trunc i64 %11 to i32\n store i32 %12, i32* %7, align 4\n store i32 0, i32* %8, align 4\n br label %target_phi_0\n"]
  5334. 5 --> target_phi_0
  5335. bunker_cond_0["Block bunker_cond_0:\n %13 = icmp eq i1 %0, false\n br i1 %13, label %14, label %bunker_skip_0\n"]
  5336. bunker_cond_0 -->|true| 14
  5337. bunker_cond_0 -->|false| bunker_skip_0
  5338. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  5339. bunker_skip_0 --> bunker_phi_0
  5340. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  5341. bunker_phi_0 --> target_cond_1
  5342. 14["Block 14:\n %15 = alloca %struct.Matrix*, align 8\n %16 = alloca i32, align 4\n %17 = alloca i32, align 4\n %18 = alloca %struct.Matrix*, align 8\n %19 = alloca i32, align 4\n %20 = alloca i32, align 4\n store i32 %1, i32* %16, align 4\n store i32 %2, i32* %17, align 4\n %21 = load i32, i32* %16, align 4\n %22 = icmp slt i32 %21, 1\n br i1 %22, label %26, label %23\n"]
  5343. 14 -->|true| 26
  5344. 14 -->|false| 23
  5345. 23["Block 23:\n %24 = load i32, i32* %17, align 4\n %25 = icmp slt i32 %24, 1\n br i1 %25, label %26, label %28\n"]
  5346. 23 -->|true| 26
  5347. 23 -->|false| 28
  5348. 26["Block 26:\n %27 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5349. 26 --> 165
  5350. 28["Block 28:\n %29 = load i32, i32* %16, align 4\n %30 = icmp sgt i32 %29, 100\n br i1 %30, label %34, label %31\n"]
  5351. 28 -->|true| 34
  5352. 28 -->|false| 31
  5353. 31["Block 31:\n %32 = load i32, i32* %17, align 4\n %33 = icmp sgt i32 %32, 100\n br i1 %33, label %34, label %36\n"]
  5354. 31 -->|true| 34
  5355. 31 -->|false| 36
  5356. 34["Block 34:\n %35 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5357. 34 --> 165
  5358. 36["Block 36:\n %37 = call noalias i8* @malloc(i64 32) #8\n %38 = bitcast i8* %37 to %struct.Matrix*\n store %struct.Matrix* %38, %struct.Matrix** %...\n %39 = load %struct.Matrix*, %struct.Matrix** ...\n %40 = icmp ne %struct.Matrix* %39, null\n br i1 %40, label %43, label %41\n"]
  5359. 36 -->|true| 43
  5360. 36 -->|false| 41
  5361. 41["Block 41:\n %42 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5362. 41 --> 165
  5363. 43["Block 43:\n %44 = load i32, i32* %16, align 4\n %45 = load %struct.Matrix*, %struct.Matrix** ...\n %46 = getelementptr inbounds %struct.Matrix, ...\n store i32 %44, i32* %46, align 8\n %47 = load i32, i32* %17, align 4\n %48 = load %struct.Matrix*, %struct.Matrix** ...\n %49 = getelementptr inbounds %struct.Matrix, ...\n store i32 %47, i32* %49, align 4\n %50 = load i32, i32* %16, align 4\n %51 = load i32, i32* %17, align 4\n %52 = icmp eq i32 %50, %51\n %53 = zext i1 %52 to i32\n %54 = load %struct.Matrix*, %struct.Matrix** ...\n %55 = getelementptr inbounds %struct.Matrix, ...\n store i32 %53, i32* %55, align 8\n %56 = load %struct.Matrix*, %struct.Matrix** ...\n %57 = getelementptr inbounds %struct.Matrix, ...\n store double 0.000000e+00, double* %57, align 8\n %58 = load i32, i32* %16, align 4\n %59 = sext i32 %58 to i64\n %60 = mul i64 %59, 8\n %61 = call noalias i8* @malloc(i64 %60) #8\n %62 = bitcast i8* %61 to i32**\n %63 = load %struct.Matrix*, %struct.Matrix** ...\n %64 = getelementptr inbounds %struct.Matrix, ...\n store i32** %62, i32*** %64, align 8\n %65 = load %struct.Matrix*, %struct.Matrix** ...\n %66 = getelementptr inbounds %struct.Matrix, ...\n %67 = load i32**, i32*** %66, align 8\n %68 = icmp ne i32** %67, null\n br i1 %68, label %73, label %69\n"]
  5364. 43 -->|true| 73
  5365. 43 -->|false| 69
  5366. 69["Block 69:\n %70 = load %struct.Matrix*, %struct.Matrix** ...\n %71 = bitcast %struct.Matrix* %70 to i8*\n call void @free(i8* %71) #8\n %72 = call i32 @fused_setErrorMessage(i1 fals...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5367. 69 --> 165
  5368. 73["Block 73:\n store i32 0, i32* %19, align 4\n br label %74\n"]
  5369. 73 --> 74
  5370. 74["Block 74:\n %75 = load i32, i32* %19, align 4\n %76 = load i32, i32* %16, align 4\n %77 = icmp slt i32 %75, %76\n br i1 %77, label %78, label %126\n"]
  5371. 74 -->|true| 78
  5372. 74 -->|false| 126
  5373. 78["Block 78:\n %79 = load i32, i32* %17, align 4\n %80 = sext i32 %79 to i64\n %81 = call noalias i8* @calloc(i64 %80, i64 4...\n %82 = bitcast i8* %81 to i32*\n %83 = load %struct.Matrix*, %struct.Matrix** ...\n %84 = getelementptr inbounds %struct.Matrix, ...\n %85 = load i32**, i32*** %84, align 8\n %86 = load i32, i32* %19, align 4\n %87 = sext i32 %86 to i64\n %88 = getelementptr inbounds i32*, i32** %85,...\n store i32* %82, i32** %88, align 8\n %89 = load %struct.Matrix*, %struct.Matrix** ...\n %90 = getelementptr inbounds %struct.Matrix, ...\n %91 = load i32**, i32*** %90, align 8\n %92 = load i32, i32* %19, align 4\n %93 = sext i32 %92 to i64\n %94 = getelementptr inbounds i32*, i32** %91,...\n %95 = load i32*, i32** %94, align 8\n %96 = icmp ne i32* %95, null\n br i1 %96, label %122, label %97\n"]
  5374. 78 -->|true| 122
  5375. 78 -->|false| 97
  5376. 97["Block 97:\n store i32 0, i32* %20, align 4\n br label %98\n"]
  5377. 97 --> 98
  5378. 98["Block 98:\n %99 = load i32, i32* %20, align 4\n %100 = load i32, i32* %19, align 4\n %101 = icmp slt i32 %99, %100\n br i1 %101, label %102, label %114\n"]
  5379. 98 -->|true| 102
  5380. 98 -->|false| 114
  5381. 102["Block 102:\n %103 = load %struct.Matrix*, %struct.Matrix**...\n %104 = getelementptr inbounds %struct.Matrix,...\n %105 = load i32**, i32*** %104, align 8\n %106 = load i32, i32* %20, align 4\n %107 = sext i32 %106 to i64\n %108 = getelementptr inbounds i32*, i32** %10...\n %109 = load i32*, i32** %108, align 8\n %110 = bitcast i32* %109 to i8*\n call void @free(i8* %110) #8\n br label %111\n"]
  5382. 102 --> 111
  5383. 111["Block 111:\n %112 = load i32, i32* %20, align 4\n %113 = add nsw i32 %112, 1\n store i32 %113, i32* %20, align 4\n br label %98\n"]
  5384. 111 --> 98
  5385. 114["Block 114:\n %115 = load %struct.Matrix*, %struct.Matrix**...\n %116 = getelementptr inbounds %struct.Matrix,...\n %117 = load i32**, i32*** %116, align 8\n %118 = bitcast i32** %117 to i8*\n call void @free(i8* %118) #8\n %119 = load %struct.Matrix*, %struct.Matrix**...\n %120 = bitcast %struct.Matrix* %119 to i8*\n call void @free(i8* %120) #8\n %121 = call i32 @fused_setErrorMessage(i1 fal...\n store %struct.Matrix* null, %struct.Matrix** ...\n br label %165\n"]
  5386. 114 --> 165
  5387. 122["Block 122:\n br label %123\n"]
  5388. 122 --> 123
  5389. 123["Block 123:\n %124 = load i32, i32* %19, align 4\n %125 = add nsw i32 %124, 1\n store i32 %125, i32* %19, align 4\n br label %74\n"]
  5390. 123 --> 74
  5391. 126["Block 126:\n %127 = load %struct.Matrix*, %struct.Matrix**...\n store %struct.Matrix* %127, %struct.Matrix** ...\n br label %bunker_phi_0\n"]
  5392. 126 --> bunker_phi_0
  5393. target_cond_1["Block target_cond_1:\n %128 = icmp eq i1 %0, true\n br i1 %128, label %129, label %target_skip_1\n"]
  5394. target_cond_1 -->|true| 129
  5395. target_cond_1 -->|false| target_skip_1
  5396. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  5397. target_skip_1 --> target_phi_1
  5398. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  5399. target_phi_1 --> bunker_cond_1
  5400. 129["Block 129:\n %130 = load i32, i32* %8, align 4\n %131 = load i32, i32* %7, align 4\n %132 = sdiv i32 %131, 2\n %133 = icmp slt i32 %130, %132\n br i1 %133, label %134, label %160\n"]
  5401. 129 -->|true| 134
  5402. 129 -->|false| 160
  5403. 134["Block 134:\n %135 = load i8*, i8** %6, align 8\n %136 = load i32, i32* %8, align 4\n %137 = sext i32 %136 to i64\n %138 = getelementptr inbounds i8, i8* %135, i...\n %139 = load i8, i8* %138, align 1\n store i8 %139, i8* %9, align 1\n %140 = load i8*, i8** %6, align 8\n %141 = load i32, i32* %7, align 4\n %142 = sub nsw i32 %141, 1\n %143 = load i32, i32* %8, align 4\n %144 = sub nsw i32 %142, %143\n %145 = sext i32 %144 to i64\n %146 = getelementptr inbounds i8, i8* %140, i...\n %147 = load i8, i8* %146, align 1\n %148 = load i8*, i8** %6, align 8\n %149 = load i32, i32* %8, align 4\n %150 = sext i32 %149 to i64\n %151 = getelementptr inbounds i8, i8* %148, i...\n store i8 %147, i8* %151, align 1\n %152 = load i8, i8* %9, align 1\n %153 = load i8*, i8** %6, align 8\n %154 = load i32, i32* %7, align 4\n %155 = sub nsw i32 %154, 1\n %156 = load i32, i32* %8, align 4\n %157 = sub nsw i32 %155, %156\n %158 = sext i32 %157 to i64\n %159 = getelementptr inbounds i8, i8* %153, i...\n store i8 %152, i8* %159, align 1\n br label %161\n"]
  5404. 134 --> 161
  5405. 160["Block 160:\n ret %struct.Matrix* null\n"]
  5406. 161["Block 161:\n %162 = load i32, i32* %8, align 4\n %163 = add nsw i32 %162, 1\n store i32 %163, i32* %8, align 4\n br label %target_phi_1\n"]
  5407. 161 --> target_phi_1
  5408. bunker_cond_1["Block bunker_cond_1:\n %164 = icmp eq i1 %0, false\n br i1 %164, label %165, label %bunker_skip_1\n"]
  5409. bunker_cond_1 -->|true| 165
  5410. bunker_cond_1 -->|false| bunker_skip_1
  5411. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  5412. bunker_skip_1 --> bunker_phi_1
  5413. bunker_phi_1["Block bunker_phi_1:\n ret %struct.Matrix* null\n"]
  5414. 165["Block 165:\n %166 = load %struct.Matrix*, %struct.Matrix**...\n ret %struct.Matrix* %166\n"]
  5415. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  5416. ```
  5417. [INFO][performCodeFusion] Completed function fusion: fused_createMatrix
  5418. [INFO][performCodeFusion] Processing function pair: target=testPoints, bunker=removeDuplicates
  5419. [INFO][performCodeFusion] adding: %4
  5420. [INFO][performCodeFusion] before push Block ID: %4
  5421. [INFO][performCodeFusion] adding: %93
  5422. [INFO][performCodeFusion] adding: %96
  5423. [INFO][performCodeFusion] adding: %101
  5424. [INFO][performCodeFusion] adding: %103
  5425. [INFO][performCodeFusion] adding: %104
  5426. [INFO][performCodeFusion] adding: %105
  5427. [INFO][performCodeFusion] adding: %107
  5428. [INFO][performCodeFusion] before push Block ID: %93
  5429. [INFO][performCodeFusion] before push Block ID: %96
  5430. [INFO][performCodeFusion] before push Block ID: %101
  5431. [INFO][performCodeFusion] before push Block ID: %103
  5432. [INFO][performCodeFusion] before push Block ID: %104
  5433. [INFO][performCodeFusion] before push Block ID: %105
  5434. [INFO][performCodeFusion] before push Block ID: %107
  5435. [INFO][performCodeFusion] Listing all instructions after block cloning in function: fused_removeDuplicates
  5436. ```mermaid: fused_removeDuplicates
  5437. graph TD
  5438. entry["Block entry:\n br label %target_cond_0\n"]
  5439. entry --> target_cond_0
  5440. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  5441. target_cond_0 -->|true| 4
  5442. target_cond_0 -->|false| target_skip_0
  5443. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  5444. target_skip_0 --> target_phi_0
  5445. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  5446. target_phi_0 --> bunker_cond_0
  5447. 4["Block 4:\n %5 = alloca i32, align 4\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %7, align 4\n store i32 1, i32* %8, align 4\n br label %target_phi_0\n"]
  5448. 4 --> target_phi_0
  5449. bunker_cond_0["Block bunker_cond_0:\n %9 = icmp eq i1 %0, false\n br i1 %9, label %10, label %bunker_skip_0\n"]
  5450. bunker_cond_0 -->|true| 10
  5451. bunker_cond_0 -->|false| bunker_skip_0
  5452. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  5453. bunker_skip_0 --> bunker_phi_0
  5454. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  5455. bunker_phi_0 --> target_cond_1
  5456. 10["Block 10:\n %11 = alloca %struct.DynamicArray*, align 8\n %12 = alloca i32, align 4\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n store %struct.DynamicArray* %1, %struct.Dynam...\n %15 = load %struct.DynamicArray*, %struct.Dyn...\n %16 = icmp ne %struct.DynamicArray* %15, null\n br i1 %16, label %17, label %22\n"]
  5457. 10 -->|true| 17
  5458. 10 -->|false| 22
  5459. 17["Block 17:\n %18 = load %struct.DynamicArray*, %struct.Dyn...\n %19 = getelementptr inbounds %struct.DynamicA...\n %20 = load i32*, i32** %19, align 8\n %21 = icmp ne i32* %20, null\n br i1 %21, label %24, label %22\n"]
  5460. 17 -->|true| 24
  5461. 17 -->|false| 22
  5462. 22["Block 22:\n %23 = call i32 @fused_setErrorMessage(i1 fals...\n br label %111\n"]
  5463. 22 --> 111
  5464. 24["Block 24:\n %25 = load %struct.DynamicArray*, %struct.Dyn...\n %26 = getelementptr inbounds %struct.DynamicA...\n %27 = load i32, i32* %26, align 8\n %28 = icmp sle i32 %27, 1\n br i1 %28, label %29, label %30\n"]
  5465. 24 -->|true| 29
  5466. 24 -->|false| 30
  5467. 29["Block 29:\n br label %111\n"]
  5468. 29 --> 111
  5469. 30["Block 30:\n store i32 0, i32* %12, align 4\n %31 = load %struct.DynamicArray*, %struct.Dyn...\n %32 = getelementptr inbounds %struct.DynamicA...\n %33 = load i32*, i32** %32, align 8\n %34 = load %struct.DynamicArray*, %struct.Dyn...\n %35 = getelementptr inbounds %struct.DynamicA...\n %36 = load i32, i32* %35, align 8\n %37 = sub nsw i32 %36, 1\n %38 = call i32 @fused_quickSort(i1 false, i32...\n %39 = load i32, i32* %12, align 4\n %40 = icmp ne i32 %39, 0\n br i1 %40, label %41, label %42\n"]
  5470. 30 -->|true| 41
  5471. 30 -->|false| 42
  5472. 41["Block 41:\n br label %111\n"]
  5473. 41 --> 111
  5474. 42["Block 42:\n store i32 1, i32* %13, align 4\n store i32 1, i32* %14, align 4\n br label %43\n"]
  5475. 42 --> 43
  5476. 43["Block 43:\n %44 = load i32, i32* %14, align 4\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n %47 = load i32, i32* %46, align 8\n %48 = icmp slt i32 %44, %47\n br i1 %48, label %49, label %86\n"]
  5477. 43 -->|true| 49
  5478. 43 -->|false| 86
  5479. 49["Block 49:\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n %52 = load i32*, i32** %51, align 8\n %53 = load i32, i32* %14, align 4\n %54 = sext i32 %53 to i64\n %55 = getelementptr inbounds i32, i32* %52, i...\n %56 = load i32, i32* %55, align 4\n %57 = load %struct.DynamicArray*, %struct.Dyn...\n %58 = getelementptr inbounds %struct.DynamicA...\n %59 = load i32*, i32** %58, align 8\n %60 = load i32, i32* %14, align 4\n %61 = sub nsw i32 %60, 1\n %62 = sext i32 %61 to i64\n %63 = getelementptr inbounds i32, i32* %59, i...\n %64 = load i32, i32* %63, align 4\n %65 = icmp ne i32 %56, %64\n br i1 %65, label %66, label %82\n"]
  5480. 49 -->|true| 66
  5481. 49 -->|false| 82
  5482. 66["Block 66:\n %67 = load %struct.DynamicArray*, %struct.Dyn...\n %68 = getelementptr inbounds %struct.DynamicA...\n %69 = load i32*, i32** %68, align 8\n %70 = load i32, i32* %14, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = load %struct.DynamicArray*, %struct.Dyn...\n %75 = getelementptr inbounds %struct.DynamicA...\n %76 = load i32*, i32** %75, align 8\n %77 = load i32, i32* %13, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds i32, i32* %76, i...\n store i32 %73, i32* %79, align 4\n %80 = load i32, i32* %13, align 4\n %81 = add nsw i32 %80, 1\n store i32 %81, i32* %13, align 4\n br label %82\n"]
  5483. 66 --> 82
  5484. 82["Block 82:\n br label %83\n"]
  5485. 82 --> 83
  5486. 83["Block 83:\n %84 = load i32, i32* %14, align 4\n %85 = add nsw i32 %84, 1\n store i32 %85, i32* %14, align 4\n br label %43\n"]
  5487. 83 --> 43
  5488. 86["Block 86:\n %87 = load i32, i32* %13, align 4\n %88 = load %struct.DynamicArray*, %struct.Dyn...\n %89 = getelementptr inbounds %struct.DynamicA...\n store i32 %87, i32* %89, align 8\n %90 = load %struct.DynamicArray*, %struct.Dyn...\n %91 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %91, align 8\n br label %bunker_phi_0\n"]
  5489. 86 --> bunker_phi_0
  5490. target_cond_1["Block target_cond_1:\n %92 = icmp eq i1 %0, true\n br i1 %92, label %93, label %target_skip_1\n"]
  5491. target_cond_1 -->|true| 93
  5492. target_cond_1 -->|false| target_skip_1
  5493. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  5494. target_skip_1 --> target_phi_1
  5495. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  5496. target_phi_1 --> bunker_cond_1
  5497. 93["Block 93:\n %94 = load i32, i32* %8, align 4\n %95 = icmp slt i32 %94, 5\n br i1 %95, label %96, label %101\n"]
  5498. 93 -->|true| 96
  5499. 93 -->|false| 101
  5500. 96["Block 96:\n %97 = load i32, i32* %7, align 4\n %98 = add nsw i32 %97, 1\n store i32 %98, i32* %7, align 4\n %99 = load i32, i32* %6, align 4\n %100 = icmp sgt i32 %99, 2\n br i1 %100, label %103, label %104\n"]
  5501. 96 -->|true| 103
  5502. 96 -->|false| 104
  5503. 101["Block 101:\n %102 = load i32, i32* %7, align 4\n store i32 %102, i32* %5, align 4\n br label %105\n"]
  5504. 101 --> 105
  5505. 103["Block 103:\n store i32 23, i32* %5, align 4\n br label %105\n"]
  5506. 103 --> 105
  5507. 104["Block 104:\n br label %107\n"]
  5508. 104 --> 107
  5509. 105["Block 105:\n %106 = load i32, i32* %5, align 4\n ret i32 %22\n"]
  5510. 107["Block 107:\n %108 = load i32, i32* %8, align 4\n %109 = add nsw i32 %108, 1\n store i32 %109, i32* %8, align 4\n br label %target_phi_1\n"]
  5511. 107 --> target_phi_1
  5512. bunker_cond_1["Block bunker_cond_1:\n %110 = icmp eq i1 %0, false\n br i1 %110, label %111, label %bunker_skip_1\n"]
  5513. bunker_cond_1 -->|true| 111
  5514. bunker_cond_1 -->|false| bunker_skip_1
  5515. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  5516. bunker_skip_1 --> bunker_phi_1
  5517. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  5518. 111["Block 111:\n ret void\n br label %bunker_phi_1\n"]
  5519. 111 --> bunker_phi_1
  5520. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  5521. ```
  5522. [DEBUG][performCodeFusion] Processing return values for fused function: fused_removeDuplicates
  5523. [DEBUG][performCodeFusion] Fused function return type: i32
  5524. [DEBUG][performCodeFusion] Non-struct return type detected: i32
  5525. [DEBUG][performCodeFusion] Processing bunker block: %49
  5526. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %50 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5527. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 0 (opcode: getelementptr)
  5528. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %52 = load i32*, i32** %51, align 8 (opcode: load)
  5529. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %53 = load i32, i32* %14, align 4 (opcode: load)
  5530. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %54 = sext i32 %53 to i64 (opcode: sext)
  5531. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %55 = getelementptr inbounds i32, i32* %52, i64 %54 (opcode: getelementptr)
  5532. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %56 = load i32, i32* %55, align 4 (opcode: load)
  5533. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %57 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5534. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %58 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %57, i32 0, i32 0 (opcode: getelementptr)
  5535. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %59 = load i32*, i32** %58, align 8 (opcode: load)
  5536. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %60 = load i32, i32* %14, align 4 (opcode: load)
  5537. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %61 = sub nsw i32 %60, 1 (opcode: sub)
  5538. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %62 = sext i32 %61 to i64 (opcode: sext)
  5539. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %63 = getelementptr inbounds i32, i32* %59, i64 %62 (opcode: getelementptr)
  5540. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %64 = load i32, i32* %63, align 4 (opcode: load)
  5541. [DEBUG][performCodeFusion] Block %49 - Processing instruction: %65 = icmp ne i32 %56, %64 (opcode: icmp)
  5542. [DEBUG][performCodeFusion] Block %49 - Processing instruction: br i1 %65, label %66, label %82 (opcode: br)
  5543. [DEBUG][performCodeFusion] Processing bunker block: %83
  5544. [DEBUG][performCodeFusion] Block %83 - Processing instruction: %84 = load i32, i32* %14, align 4 (opcode: load)
  5545. [DEBUG][performCodeFusion] Block %83 - Processing instruction: %85 = add nsw i32 %84, 1 (opcode: add)
  5546. [DEBUG][performCodeFusion] Block %83 - Processing instruction: store i32 %85, i32* %14, align 4 (opcode: store)
  5547. [DEBUG][performCodeFusion] Block %83 - Processing instruction: br label %43 (opcode: br)
  5548. [DEBUG][performCodeFusion] Processing bunker block: %42
  5549. [DEBUG][performCodeFusion] Block %42 - Processing instruction: store i32 1, i32* %13, align 4 (opcode: store)
  5550. [DEBUG][performCodeFusion] Block %42 - Processing instruction: store i32 1, i32* %14, align 4 (opcode: store)
  5551. [DEBUG][performCodeFusion] Block %42 - Processing instruction: br label %43 (opcode: br)
  5552. [DEBUG][performCodeFusion] Processing bunker block: %43
  5553. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %44 = load i32, i32* %14, align 4 (opcode: load)
  5554. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %45 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5555. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %46 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %45, i32 0, i32 1 (opcode: getelementptr)
  5556. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %47 = load i32, i32* %46, align 8 (opcode: load)
  5557. [DEBUG][performCodeFusion] Block %43 - Processing instruction: %48 = icmp slt i32 %44, %47 (opcode: icmp)
  5558. [DEBUG][performCodeFusion] Block %43 - Processing instruction: br i1 %48, label %49, label %86 (opcode: br)
  5559. [DEBUG][performCodeFusion] Processing bunker block: %82
  5560. [DEBUG][performCodeFusion] Block %82 - Processing instruction: br label %83 (opcode: br)
  5561. [DEBUG][performCodeFusion] Processing bunker block: %22
  5562. [DEBUG][performCodeFusion] Block %22 - Processing instruction: %23 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0)) (opcode: call)
  5563. [DEBUG][performCodeFusion] Block %22 - Processing instruction: br label %111 (opcode: br)
  5564. [DEBUG][performCodeFusion] Processing bunker block: %86
  5565. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %87 = load i32, i32* %13, align 4 (opcode: load)
  5566. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %88 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5567. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %89 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %88, i32 0, i32 1 (opcode: getelementptr)
  5568. [DEBUG][performCodeFusion] Block %86 - Processing instruction: store i32 %87, i32* %89, align 8 (opcode: store)
  5569. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %90 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5570. [DEBUG][performCodeFusion] Block %86 - Processing instruction: %91 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %90, i32 0, i32 3 (opcode: getelementptr)
  5571. [DEBUG][performCodeFusion] Block %86 - Processing instruction: store i32 1, i32* %91, align 8 (opcode: store)
  5572. [DEBUG][performCodeFusion] Block %86 - Processing instruction: br label %bunker_phi_0 (opcode: br)
  5573. [DEBUG][performCodeFusion] Processing bunker block: %30
  5574. [DEBUG][performCodeFusion] Block %30 - Processing instruction: store i32 0, i32* %12, align 4 (opcode: store)
  5575. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %31 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5576. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %32 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %31, i32 0, i32 0 (opcode: getelementptr)
  5577. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %33 = load i32*, i32** %32, align 8 (opcode: load)
  5578. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %34 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5579. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %35 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %34, i32 0, i32 1 (opcode: getelementptr)
  5580. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %36 = load i32, i32* %35, align 8 (opcode: load)
  5581. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %37 = sub nsw i32 %36, 1 (opcode: sub)
  5582. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %38 = call i32 @fused_quickSort(i1 false, i32* %33, i32 0, i32 %37, i32* %12, i32 0) (opcode: call)
  5583. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %39 = load i32, i32* %12, align 4 (opcode: load)
  5584. [DEBUG][performCodeFusion] Block %30 - Processing instruction: %40 = icmp ne i32 %39, 0 (opcode: icmp)
  5585. [DEBUG][performCodeFusion] Block %30 - Processing instruction: br i1 %40, label %41, label %42 (opcode: br)
  5586. [DEBUG][performCodeFusion] Processing bunker block: %41
  5587. [DEBUG][performCodeFusion] Block %41 - Processing instruction: br label %111 (opcode: br)
  5588. [DEBUG][performCodeFusion] Processing bunker block: %111
  5589. [DEBUG][performCodeFusion] Block %111 - Processing instruction: ret void (opcode: ret)
  5590. [DEBUG][performCodeFusion] Setting default bunker return value
  5591. [DEBUG][performCodeFusion] Updated bunker return in block %111 with value type i32
  5592. [DEBUG][performCodeFusion] Block %111 - Processing instruction: br label %bunker_phi_1 (opcode: br)
  5593. [DEBUG][performCodeFusion] Removing extra instruction after return in block %111: br
  5594. [DEBUG][performCodeFusion] Processing bunker block: %29
  5595. [DEBUG][performCodeFusion] Block %29 - Processing instruction: br label %111 (opcode: br)
  5596. [DEBUG][performCodeFusion] Processing bunker block: %66
  5597. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %67 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5598. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %68 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %67, i32 0, i32 0 (opcode: getelementptr)
  5599. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %69 = load i32*, i32** %68, align 8 (opcode: load)
  5600. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %70 = load i32, i32* %14, align 4 (opcode: load)
  5601. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %71 = sext i32 %70 to i64 (opcode: sext)
  5602. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %72 = getelementptr inbounds i32, i32* %69, i64 %71 (opcode: getelementptr)
  5603. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %73 = load i32, i32* %72, align 4 (opcode: load)
  5604. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %74 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5605. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %75 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %74, i32 0, i32 0 (opcode: getelementptr)
  5606. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %76 = load i32*, i32** %75, align 8 (opcode: load)
  5607. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %77 = load i32, i32* %13, align 4 (opcode: load)
  5608. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %78 = sext i32 %77 to i64 (opcode: sext)
  5609. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %79 = getelementptr inbounds i32, i32* %76, i64 %78 (opcode: getelementptr)
  5610. [DEBUG][performCodeFusion] Block %66 - Processing instruction: store i32 %73, i32* %79, align 4 (opcode: store)
  5611. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %80 = load i32, i32* %13, align 4 (opcode: load)
  5612. [DEBUG][performCodeFusion] Block %66 - Processing instruction: %81 = add nsw i32 %80, 1 (opcode: add)
  5613. [DEBUG][performCodeFusion] Block %66 - Processing instruction: store i32 %81, i32* %13, align 4 (opcode: store)
  5614. [DEBUG][performCodeFusion] Block %66 - Processing instruction: br label %82 (opcode: br)
  5615. [DEBUG][performCodeFusion] Processing bunker block: %17
  5616. [DEBUG][performCodeFusion] Block %17 - Processing instruction: %18 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5617. [DEBUG][performCodeFusion] Block %17 - Processing instruction: %19 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %18, i32 0, i32 0 (opcode: getelementptr)
  5618. [DEBUG][performCodeFusion] Block %17 - Processing instruction: %20 = load i32*, i32** %19, align 8 (opcode: load)
  5619. [DEBUG][performCodeFusion] Block %17 - Processing instruction: %21 = icmp ne i32* %20, null (opcode: icmp)
  5620. [DEBUG][performCodeFusion] Block %17 - Processing instruction: br i1 %21, label %24, label %22 (opcode: br)
  5621. [DEBUG][performCodeFusion] Processing bunker block: %10
  5622. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %11 = alloca %struct.DynamicArray*, align 8 (opcode: alloca)
  5623. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %12 = alloca i32, align 4 (opcode: alloca)
  5624. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %13 = alloca i32, align 4 (opcode: alloca)
  5625. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %14 = alloca i32, align 4 (opcode: alloca)
  5626. [DEBUG][performCodeFusion] Block %10 - Processing instruction: store %struct.DynamicArray* %1, %struct.DynamicArray** %11, align 8 (opcode: store)
  5627. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %15 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5628. [DEBUG][performCodeFusion] Block %10 - Processing instruction: %16 = icmp ne %struct.DynamicArray* %15, null (opcode: icmp)
  5629. [DEBUG][performCodeFusion] Block %10 - Processing instruction: br i1 %16, label %17, label %22 (opcode: br)
  5630. [DEBUG][performCodeFusion] Processing bunker block: %24
  5631. [DEBUG][performCodeFusion] Block %24 - Processing instruction: %25 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 (opcode: load)
  5632. [DEBUG][performCodeFusion] Block %24 - Processing instruction: %26 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %25, i32 0, i32 1 (opcode: getelementptr)
  5633. [DEBUG][performCodeFusion] Block %24 - Processing instruction: %27 = load i32, i32* %26, align 8 (opcode: load)
  5634. [DEBUG][performCodeFusion] Block %24 - Processing instruction: %28 = icmp sle i32 %27, 1 (opcode: icmp)
  5635. [DEBUG][performCodeFusion] Block %24 - Processing instruction: br i1 %28, label %29, label %30 (opcode: br)
  5636. [DEBUG][performCodeFusion] Processing target block: %105
  5637. [DEBUG][performCodeFusion] Block %105 - Processing instruction: %106 = load i32, i32* %5, align 4 (opcode: load)
  5638. [DEBUG][performCodeFusion] Block %105 - Processing instruction: ret i32 %22 (opcode: ret)
  5639. [DEBUG][performCodeFusion] Updated target return in block %105 with value type i32
  5640. [DEBUG][performCodeFusion] Processing target block: %107
  5641. [DEBUG][performCodeFusion] Block %107 - Processing instruction: %108 = load i32, i32* %8, align 4 (opcode: load)
  5642. [DEBUG][performCodeFusion] Block %107 - Processing instruction: %109 = add nsw i32 %108, 1 (opcode: add)
  5643. [DEBUG][performCodeFusion] Block %107 - Processing instruction: store i32 %109, i32* %8, align 4 (opcode: store)
  5644. [DEBUG][performCodeFusion] Block %107 - Processing instruction: br label %target_phi_1 (opcode: br)
  5645. [DEBUG][performCodeFusion] Processing target block: %101
  5646. [DEBUG][performCodeFusion] Block %101 - Processing instruction: %102 = load i32, i32* %7, align 4 (opcode: load)
  5647. [DEBUG][performCodeFusion] Block %101 - Processing instruction: store i32 %102, i32* %5, align 4 (opcode: store)
  5648. [DEBUG][performCodeFusion] Block %101 - Processing instruction: br label %105 (opcode: br)
  5649. [DEBUG][performCodeFusion] Processing target block: %103
  5650. [DEBUG][performCodeFusion] Block %103 - Processing instruction: store i32 23, i32* %5, align 4 (opcode: store)
  5651. [DEBUG][performCodeFusion] Block %103 - Processing instruction: br label %105 (opcode: br)
  5652. [DEBUG][performCodeFusion] Processing target block: %104
  5653. [DEBUG][performCodeFusion] Block %104 - Processing instruction: br label %107 (opcode: br)
  5654. [DEBUG][performCodeFusion] Processing target block: %93
  5655. [DEBUG][performCodeFusion] Block %93 - Processing instruction: %94 = load i32, i32* %8, align 4 (opcode: load)
  5656. [DEBUG][performCodeFusion] Block %93 - Processing instruction: %95 = icmp slt i32 %94, 5 (opcode: icmp)
  5657. [DEBUG][performCodeFusion] Block %93 - Processing instruction: br i1 %95, label %96, label %101 (opcode: br)
  5658. [DEBUG][performCodeFusion] Processing target block: %96
  5659. [DEBUG][performCodeFusion] Block %96 - Processing instruction: %97 = load i32, i32* %7, align 4 (opcode: load)
  5660. [DEBUG][performCodeFusion] Block %96 - Processing instruction: %98 = add nsw i32 %97, 1 (opcode: add)
  5661. [DEBUG][performCodeFusion] Block %96 - Processing instruction: store i32 %98, i32* %7, align 4 (opcode: store)
  5662. [DEBUG][performCodeFusion] Block %96 - Processing instruction: %99 = load i32, i32* %6, align 4 (opcode: load)
  5663. [DEBUG][performCodeFusion] Block %96 - Processing instruction: %100 = icmp sgt i32 %99, 2 (opcode: icmp)
  5664. [DEBUG][performCodeFusion] Block %96 - Processing instruction: br i1 %100, label %103, label %104 (opcode: br)
  5665. [DEBUG][performCodeFusion] Processing target block: %4
  5666. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %5 = alloca i32, align 4 (opcode: alloca)
  5667. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %6 = alloca i32, align 4 (opcode: alloca)
  5668. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %7 = alloca i32, align 4 (opcode: alloca)
  5669. [DEBUG][performCodeFusion] Block %4 - Processing instruction: %8 = alloca i32, align 4 (opcode: alloca)
  5670. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32 %2, i32* %6, align 4 (opcode: store)
  5671. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32 0, i32* %7, align 4 (opcode: store)
  5672. [DEBUG][performCodeFusion] Block %4 - Processing instruction: store i32 1, i32* %8, align 4 (opcode: store)
  5673. [DEBUG][performCodeFusion] Block %4 - Processing instruction: br label %target_phi_0 (opcode: br)
  5674. [INFO][performCodeFusion] Listing all instructions after return repairing in function: fused_removeDuplicates
  5675. ```mermaid: fused_removeDuplicates
  5676. graph TD
  5677. entry["Block entry:\n br label %target_cond_0\n"]
  5678. entry --> target_cond_0
  5679. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  5680. target_cond_0 -->|true| 4
  5681. target_cond_0 -->|false| target_skip_0
  5682. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  5683. target_skip_0 --> target_phi_0
  5684. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  5685. target_phi_0 --> bunker_cond_0
  5686. 4["Block 4:\n %5 = alloca i32, align 4\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %7, align 4\n store i32 1, i32* %8, align 4\n br label %target_phi_0\n"]
  5687. 4 --> target_phi_0
  5688. bunker_cond_0["Block bunker_cond_0:\n %9 = icmp eq i1 %0, false\n br i1 %9, label %10, label %bunker_skip_0\n"]
  5689. bunker_cond_0 -->|true| 10
  5690. bunker_cond_0 -->|false| bunker_skip_0
  5691. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  5692. bunker_skip_0 --> bunker_phi_0
  5693. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  5694. bunker_phi_0 --> target_cond_1
  5695. 10["Block 10:\n %11 = alloca %struct.DynamicArray*, align 8\n %12 = alloca i32, align 4\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n store %struct.DynamicArray* %1, %struct.Dynam...\n %15 = load %struct.DynamicArray*, %struct.Dyn...\n %16 = icmp ne %struct.DynamicArray* %15, null\n br i1 %16, label %17, label %22\n"]
  5696. 10 -->|true| 17
  5697. 10 -->|false| 22
  5698. 17["Block 17:\n %18 = load %struct.DynamicArray*, %struct.Dyn...\n %19 = getelementptr inbounds %struct.DynamicA...\n %20 = load i32*, i32** %19, align 8\n %21 = icmp ne i32* %20, null\n br i1 %21, label %24, label %22\n"]
  5699. 17 -->|true| 24
  5700. 17 -->|false| 22
  5701. 22["Block 22:\n %23 = call i32 @fused_setErrorMessage(i1 fals...\n br label %111\n"]
  5702. 22 --> 111
  5703. 24["Block 24:\n %25 = load %struct.DynamicArray*, %struct.Dyn...\n %26 = getelementptr inbounds %struct.DynamicA...\n %27 = load i32, i32* %26, align 8\n %28 = icmp sle i32 %27, 1\n br i1 %28, label %29, label %30\n"]
  5704. 24 -->|true| 29
  5705. 24 -->|false| 30
  5706. 29["Block 29:\n br label %111\n"]
  5707. 29 --> 111
  5708. 30["Block 30:\n store i32 0, i32* %12, align 4\n %31 = load %struct.DynamicArray*, %struct.Dyn...\n %32 = getelementptr inbounds %struct.DynamicA...\n %33 = load i32*, i32** %32, align 8\n %34 = load %struct.DynamicArray*, %struct.Dyn...\n %35 = getelementptr inbounds %struct.DynamicA...\n %36 = load i32, i32* %35, align 8\n %37 = sub nsw i32 %36, 1\n %38 = call i32 @fused_quickSort(i1 false, i32...\n %39 = load i32, i32* %12, align 4\n %40 = icmp ne i32 %39, 0\n br i1 %40, label %41, label %42\n"]
  5709. 30 -->|true| 41
  5710. 30 -->|false| 42
  5711. 41["Block 41:\n br label %111\n"]
  5712. 41 --> 111
  5713. 42["Block 42:\n store i32 1, i32* %13, align 4\n store i32 1, i32* %14, align 4\n br label %43\n"]
  5714. 42 --> 43
  5715. 43["Block 43:\n %44 = load i32, i32* %14, align 4\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n %47 = load i32, i32* %46, align 8\n %48 = icmp slt i32 %44, %47\n br i1 %48, label %49, label %86\n"]
  5716. 43 -->|true| 49
  5717. 43 -->|false| 86
  5718. 49["Block 49:\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n %52 = load i32*, i32** %51, align 8\n %53 = load i32, i32* %14, align 4\n %54 = sext i32 %53 to i64\n %55 = getelementptr inbounds i32, i32* %52, i...\n %56 = load i32, i32* %55, align 4\n %57 = load %struct.DynamicArray*, %struct.Dyn...\n %58 = getelementptr inbounds %struct.DynamicA...\n %59 = load i32*, i32** %58, align 8\n %60 = load i32, i32* %14, align 4\n %61 = sub nsw i32 %60, 1\n %62 = sext i32 %61 to i64\n %63 = getelementptr inbounds i32, i32* %59, i...\n %64 = load i32, i32* %63, align 4\n %65 = icmp ne i32 %56, %64\n br i1 %65, label %66, label %82\n"]
  5719. 49 -->|true| 66
  5720. 49 -->|false| 82
  5721. 66["Block 66:\n %67 = load %struct.DynamicArray*, %struct.Dyn...\n %68 = getelementptr inbounds %struct.DynamicA...\n %69 = load i32*, i32** %68, align 8\n %70 = load i32, i32* %14, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = load %struct.DynamicArray*, %struct.Dyn...\n %75 = getelementptr inbounds %struct.DynamicA...\n %76 = load i32*, i32** %75, align 8\n %77 = load i32, i32* %13, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds i32, i32* %76, i...\n store i32 %73, i32* %79, align 4\n %80 = load i32, i32* %13, align 4\n %81 = add nsw i32 %80, 1\n store i32 %81, i32* %13, align 4\n br label %82\n"]
  5722. 66 --> 82
  5723. 82["Block 82:\n br label %83\n"]
  5724. 82 --> 83
  5725. 83["Block 83:\n %84 = load i32, i32* %14, align 4\n %85 = add nsw i32 %84, 1\n store i32 %85, i32* %14, align 4\n br label %43\n"]
  5726. 83 --> 43
  5727. 86["Block 86:\n %87 = load i32, i32* %13, align 4\n %88 = load %struct.DynamicArray*, %struct.Dyn...\n %89 = getelementptr inbounds %struct.DynamicA...\n store i32 %87, i32* %89, align 8\n %90 = load %struct.DynamicArray*, %struct.Dyn...\n %91 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %91, align 8\n br label %bunker_phi_0\n"]
  5728. 86 --> bunker_phi_0
  5729. target_cond_1["Block target_cond_1:\n %92 = icmp eq i1 %0, true\n br i1 %92, label %93, label %target_skip_1\n"]
  5730. target_cond_1 -->|true| 93
  5731. target_cond_1 -->|false| target_skip_1
  5732. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  5733. target_skip_1 --> target_phi_1
  5734. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  5735. target_phi_1 --> bunker_cond_1
  5736. 93["Block 93:\n %94 = load i32, i32* %8, align 4\n %95 = icmp slt i32 %94, 5\n br i1 %95, label %96, label %101\n"]
  5737. 93 -->|true| 96
  5738. 93 -->|false| 101
  5739. 96["Block 96:\n %97 = load i32, i32* %7, align 4\n %98 = add nsw i32 %97, 1\n store i32 %98, i32* %7, align 4\n %99 = load i32, i32* %6, align 4\n %100 = icmp sgt i32 %99, 2\n br i1 %100, label %103, label %104\n"]
  5740. 96 -->|true| 103
  5741. 96 -->|false| 104
  5742. 101["Block 101:\n %102 = load i32, i32* %7, align 4\n store i32 %102, i32* %5, align 4\n br label %105\n"]
  5743. 101 --> 105
  5744. 103["Block 103:\n store i32 23, i32* %5, align 4\n br label %105\n"]
  5745. 103 --> 105
  5746. 104["Block 104:\n br label %107\n"]
  5747. 104 --> 107
  5748. 105["Block 105:\n %106 = load i32, i32* %5, align 4\n ret i32 %22\n"]
  5749. 107["Block 107:\n %108 = load i32, i32* %8, align 4\n %109 = add nsw i32 %108, 1\n store i32 %109, i32* %8, align 4\n br label %target_phi_1\n"]
  5750. 107 --> target_phi_1
  5751. bunker_cond_1["Block bunker_cond_1:\n %110 = icmp eq i1 %0, false\n br i1 %110, label %111, label %bunker_skip_1\n"]
  5752. bunker_cond_1 -->|true| 111
  5753. bunker_cond_1 -->|false| bunker_skip_1
  5754. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  5755. bunker_skip_1 --> bunker_phi_1
  5756. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  5757. 111["Block 111:\n ret i32 0\n"]
  5758. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  5759. ```
  5760. [DEBUG][updateCallSite] Original call instruction:
  5761. %12 = call i32 @testPoints(i32 5)
  5762. [DEBUG][updateCallSite] Adding target control parameter
  5763. [DEBUG][updateCallSite] Adding default bunker parameters:
  5764. [DEBUG][updateCallSite] Parameter type: struct.DynamicArray*
  5765. [DEBUG][updateCallSite] Adding original call parameters:
  5766. [DEBUG][updateCallSite] Argument 0: type=i32
  5767. [DEBUG][updateCallSite] New call instruction:
  5768. %12 = call i32 @fused_removeDuplicates(i1 true, %struct.DynamicArray* null, i32 5)
  5769. [DEBUG][updateCallSite] Processing non-void return value of type: i32
  5770. [DEBUG][updateCallSite] Using direct return value
  5771. [DEBUG][updateCallSite] Successfully replaced all uses of original call
  5772. [INFO][updateCallSite] Successfully updated call site from %12 = call i32 @testPoints(i32 5) to %12 = call i32 @fused_removeDuplicates(i1 true, %struct.DynamicArray* null, i32 5)
  5773. [INFO][performCodeFusion] Listing all instructions after update calls in function: fused_removeDuplicates
  5774. ```mermaid: fused_removeDuplicates
  5775. graph TD
  5776. entry["Block entry:\n br label %target_cond_0\n"]
  5777. entry --> target_cond_0
  5778. target_cond_0["Block target_cond_0:\n %3 = icmp eq i1 %0, true\n br i1 %3, label %4, label %target_skip_0\n"]
  5779. target_cond_0 -->|true| 4
  5780. target_cond_0 -->|false| target_skip_0
  5781. target_skip_0["Block target_skip_0:\n br label %target_phi_0\n"]
  5782. target_skip_0 --> target_phi_0
  5783. target_phi_0["Block target_phi_0:\n br label %bunker_cond_0\n"]
  5784. target_phi_0 --> bunker_cond_0
  5785. 4["Block 4:\n %5 = alloca i32, align 4\n %6 = alloca i32, align 4\n %7 = alloca i32, align 4\n %8 = alloca i32, align 4\n store i32 %2, i32* %6, align 4\n store i32 0, i32* %7, align 4\n store i32 1, i32* %8, align 4\n br label %target_phi_0\n"]
  5786. 4 --> target_phi_0
  5787. bunker_cond_0["Block bunker_cond_0:\n %9 = icmp eq i1 %0, false\n br i1 %9, label %10, label %bunker_skip_0\n"]
  5788. bunker_cond_0 -->|true| 10
  5789. bunker_cond_0 -->|false| bunker_skip_0
  5790. bunker_skip_0["Block bunker_skip_0:\n br label %bunker_phi_0\n"]
  5791. bunker_skip_0 --> bunker_phi_0
  5792. bunker_phi_0["Block bunker_phi_0:\n br label %target_cond_1\n"]
  5793. bunker_phi_0 --> target_cond_1
  5794. 10["Block 10:\n %11 = alloca %struct.DynamicArray*, align 8\n %12 = alloca i32, align 4\n %13 = alloca i32, align 4\n %14 = alloca i32, align 4\n store %struct.DynamicArray* %1, %struct.Dynam...\n %15 = load %struct.DynamicArray*, %struct.Dyn...\n %16 = icmp ne %struct.DynamicArray* %15, null\n br i1 %16, label %17, label %22\n"]
  5795. 10 -->|true| 17
  5796. 10 -->|false| 22
  5797. 17["Block 17:\n %18 = load %struct.DynamicArray*, %struct.Dyn...\n %19 = getelementptr inbounds %struct.DynamicA...\n %20 = load i32*, i32** %19, align 8\n %21 = icmp ne i32* %20, null\n br i1 %21, label %24, label %22\n"]
  5798. 17 -->|true| 24
  5799. 17 -->|false| 22
  5800. 22["Block 22:\n %23 = call i32 @fused_setErrorMessage(i1 fals...\n br label %111\n"]
  5801. 22 --> 111
  5802. 24["Block 24:\n %25 = load %struct.DynamicArray*, %struct.Dyn...\n %26 = getelementptr inbounds %struct.DynamicA...\n %27 = load i32, i32* %26, align 8\n %28 = icmp sle i32 %27, 1\n br i1 %28, label %29, label %30\n"]
  5803. 24 -->|true| 29
  5804. 24 -->|false| 30
  5805. 29["Block 29:\n br label %111\n"]
  5806. 29 --> 111
  5807. 30["Block 30:\n store i32 0, i32* %12, align 4\n %31 = load %struct.DynamicArray*, %struct.Dyn...\n %32 = getelementptr inbounds %struct.DynamicA...\n %33 = load i32*, i32** %32, align 8\n %34 = load %struct.DynamicArray*, %struct.Dyn...\n %35 = getelementptr inbounds %struct.DynamicA...\n %36 = load i32, i32* %35, align 8\n %37 = sub nsw i32 %36, 1\n %38 = call i32 @fused_quickSort(i1 false, i32...\n %39 = load i32, i32* %12, align 4\n %40 = icmp ne i32 %39, 0\n br i1 %40, label %41, label %42\n"]
  5808. 30 -->|true| 41
  5809. 30 -->|false| 42
  5810. 41["Block 41:\n br label %111\n"]
  5811. 41 --> 111
  5812. 42["Block 42:\n store i32 1, i32* %13, align 4\n store i32 1, i32* %14, align 4\n br label %43\n"]
  5813. 42 --> 43
  5814. 43["Block 43:\n %44 = load i32, i32* %14, align 4\n %45 = load %struct.DynamicArray*, %struct.Dyn...\n %46 = getelementptr inbounds %struct.DynamicA...\n %47 = load i32, i32* %46, align 8\n %48 = icmp slt i32 %44, %47\n br i1 %48, label %49, label %86\n"]
  5815. 43 -->|true| 49
  5816. 43 -->|false| 86
  5817. 49["Block 49:\n %50 = load %struct.DynamicArray*, %struct.Dyn...\n %51 = getelementptr inbounds %struct.DynamicA...\n %52 = load i32*, i32** %51, align 8\n %53 = load i32, i32* %14, align 4\n %54 = sext i32 %53 to i64\n %55 = getelementptr inbounds i32, i32* %52, i...\n %56 = load i32, i32* %55, align 4\n %57 = load %struct.DynamicArray*, %struct.Dyn...\n %58 = getelementptr inbounds %struct.DynamicA...\n %59 = load i32*, i32** %58, align 8\n %60 = load i32, i32* %14, align 4\n %61 = sub nsw i32 %60, 1\n %62 = sext i32 %61 to i64\n %63 = getelementptr inbounds i32, i32* %59, i...\n %64 = load i32, i32* %63, align 4\n %65 = icmp ne i32 %56, %64\n br i1 %65, label %66, label %82\n"]
  5818. 49 -->|true| 66
  5819. 49 -->|false| 82
  5820. 66["Block 66:\n %67 = load %struct.DynamicArray*, %struct.Dyn...\n %68 = getelementptr inbounds %struct.DynamicA...\n %69 = load i32*, i32** %68, align 8\n %70 = load i32, i32* %14, align 4\n %71 = sext i32 %70 to i64\n %72 = getelementptr inbounds i32, i32* %69, i...\n %73 = load i32, i32* %72, align 4\n %74 = load %struct.DynamicArray*, %struct.Dyn...\n %75 = getelementptr inbounds %struct.DynamicA...\n %76 = load i32*, i32** %75, align 8\n %77 = load i32, i32* %13, align 4\n %78 = sext i32 %77 to i64\n %79 = getelementptr inbounds i32, i32* %76, i...\n store i32 %73, i32* %79, align 4\n %80 = load i32, i32* %13, align 4\n %81 = add nsw i32 %80, 1\n store i32 %81, i32* %13, align 4\n br label %82\n"]
  5821. 66 --> 82
  5822. 82["Block 82:\n br label %83\n"]
  5823. 82 --> 83
  5824. 83["Block 83:\n %84 = load i32, i32* %14, align 4\n %85 = add nsw i32 %84, 1\n store i32 %85, i32* %14, align 4\n br label %43\n"]
  5825. 83 --> 43
  5826. 86["Block 86:\n %87 = load i32, i32* %13, align 4\n %88 = load %struct.DynamicArray*, %struct.Dyn...\n %89 = getelementptr inbounds %struct.DynamicA...\n store i32 %87, i32* %89, align 8\n %90 = load %struct.DynamicArray*, %struct.Dyn...\n %91 = getelementptr inbounds %struct.DynamicA...\n store i32 1, i32* %91, align 8\n br label %bunker_phi_0\n"]
  5827. 86 --> bunker_phi_0
  5828. target_cond_1["Block target_cond_1:\n %92 = icmp eq i1 %0, true\n br i1 %92, label %93, label %target_skip_1\n"]
  5829. target_cond_1 -->|true| 93
  5830. target_cond_1 -->|false| target_skip_1
  5831. target_skip_1["Block target_skip_1:\n br label %target_phi_1\n"]
  5832. target_skip_1 --> target_phi_1
  5833. target_phi_1["Block target_phi_1:\n br label %bunker_cond_1\n"]
  5834. target_phi_1 --> bunker_cond_1
  5835. 93["Block 93:\n %94 = load i32, i32* %8, align 4\n %95 = icmp slt i32 %94, 5\n br i1 %95, label %96, label %101\n"]
  5836. 93 -->|true| 96
  5837. 93 -->|false| 101
  5838. 96["Block 96:\n %97 = load i32, i32* %7, align 4\n %98 = add nsw i32 %97, 1\n store i32 %98, i32* %7, align 4\n %99 = load i32, i32* %6, align 4\n %100 = icmp sgt i32 %99, 2\n br i1 %100, label %103, label %104\n"]
  5839. 96 -->|true| 103
  5840. 96 -->|false| 104
  5841. 101["Block 101:\n %102 = load i32, i32* %7, align 4\n store i32 %102, i32* %5, align 4\n br label %105\n"]
  5842. 101 --> 105
  5843. 103["Block 103:\n store i32 23, i32* %5, align 4\n br label %105\n"]
  5844. 103 --> 105
  5845. 104["Block 104:\n br label %107\n"]
  5846. 104 --> 107
  5847. 105["Block 105:\n %106 = load i32, i32* %5, align 4\n ret i32 <badref>\n"]
  5848. 107["Block 107:\n %108 = load i32, i32* %8, align 4\n %109 = add nsw i32 %108, 1\n store i32 %109, i32* %8, align 4\n br label %target_phi_1\n"]
  5849. 107 --> target_phi_1
  5850. bunker_cond_1["Block bunker_cond_1:\n %110 = icmp eq i1 %0, false\n br i1 %110, label %111, label %bunker_skip_1\n"]
  5851. bunker_cond_1 -->|true| 111
  5852. bunker_cond_1 -->|false| bunker_skip_1
  5853. bunker_skip_1["Block bunker_skip_1:\n br label %bunker_phi_1\n"]
  5854. bunker_skip_1 --> bunker_phi_1
  5855. bunker_phi_1["Block bunker_phi_1:\n ret i32 0\n"]
  5856. 111["Block 111:\n ret i32 0\n"]
  5857. classDef critical fill:#f96,stroke:#333,stroke-width:4px
  5858. ```
  5859. [INFO][performCodeFusion] Completed function fusion: fused_removeDuplicates
  5860. [INFO][performCodeFusion] Code fusion completed, processed 7 function pairs
  5861. Instruction does not dominate all uses!
  5862. %8 = alloca i32, align 4
  5863. %261 = load i32, i32* %8, align 4
  5864. Instruction does not dominate all uses!
  5865. %8 = alloca i32, align 4
  5866. %264 = load i32, i32* %8, align 4
  5867. Instruction does not dominate all uses!
  5868. %9 = alloca i32, align 4
  5869. %266 = load i32, i32* %9, align 4
  5870. Instruction does not dominate all uses!
  5871. %9 = alloca i32, align 4
  5872. store i32 %267, i32* %9, align 4
  5873. Instruction does not dominate all uses!
  5874. %8 = alloca i32, align 4
  5875. %268 = load i32, i32* %8, align 4
  5876. Instruction does not dominate all uses!
  5877. %8 = alloca i32, align 4
  5878. store i32 %269, i32* %8, align 4
  5879. Instruction does not dominate all uses!
  5880. %9 = alloca i32, align 4
  5881. %271 = load i32, i32* %9, align 4
  5882. in function fused_quickSort
  5883. LLVM ERROR: Broken function found, compilation aborted!