module_fusion_text.ll 148 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599
  1. ; ModuleID = 'output/module_fusion.bc'
  2. source_filename = "llvm-link"
  3. target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
  4. target triple = "x86_64-pc-linux-gnu"
  5. %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] }
  6. %struct._IO_marker = type opaque
  7. %struct._IO_codecvt = type opaque
  8. %struct._IO_wide_data = type opaque
  9. %struct.DynamicArray = type { i32*, i32, i32, i32, i32 }
  10. %struct.Matrix = type { i32**, i32, i32, i32, double }
  11. %struct.Node = type { i32, %struct.Node*, %struct.Node*, i32, i32 }
  12. %struct.Point = type { i32, i32, [256 x i8], double }
  13. %struct.Circle = type { %struct.Point, double, i32, [256 x i8] }
  14. %fused_return_projectA_main_memoizedFib = type { i32, i32 }
  15. %fused_return_createDynamicArray_processMatrix = type { i32, %struct.DynamicArray* }
  16. @globalCounter = dso_local global i32 0, align 4
  17. @globalErrorMessage = dso_local global i8* null, align 8
  18. @recursionDepth = dso_local global i32 0, align 4
  19. @.str = private unnamed_addr constant [9 x i8] c"No error\00", align 1
  20. @stderr = external dso_local global %struct._IO_FILE*, align 8
  21. @.str.1 = private unnamed_addr constant [55 x i8] c"Critical: Failed to allocate memory for error message\0A\00", align 1
  22. @.str.2 = private unnamed_addr constant [33 x i8] c"Maximum recursion depth exceeded\00", align 1
  23. @.str.3 = private unnamed_addr constant [29 x i8] c"Factorial of negative number\00", align 1
  24. @.str.4 = private unnamed_addr constant [36 x i8] c"Input too large, potential overflow\00", align 1
  25. @.str.5 = private unnamed_addr constant [31 x i8] c"Factorial calculation overflow\00", align 1
  26. @.str.6 = private unnamed_addr constant [25 x i8] c"Invalid initial capacity\00", align 1
  27. @.str.7 = private unnamed_addr constant [46 x i8] c"Initial capacity exceeds maximum allowed size\00", align 1
  28. @.str.8 = private unnamed_addr constant [49 x i8] c"Memory allocation failed for DynamicArray struct\00", align 1
  29. @.str.9 = private unnamed_addr constant [35 x i8] c"Memory allocation failed for array\00", align 1
  30. @.str.10 = private unnamed_addr constant [19 x i8] c"Null array pointer\00", align 1
  31. @.str.11 = private unnamed_addr constant [25 x i8] c"Array size limit reached\00", align 1
  32. @.str.12 = private unnamed_addr constant [27 x i8] c"Memory reallocation failed\00", align 1
  33. @.str.13 = private unnamed_addr constant [46 x i8] c"Maximum recursion depth exceeded in quickSort\00", align 1
  34. @.str.14 = private unnamed_addr constant [32 x i8] c"Null array pointer in quickSort\00", align 1
  35. @.str.15 = private unnamed_addr constant [39 x i8] c"Array index out of bounds in quickSort\00", align 1
  36. @.str.16 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too small\00", align 1
  37. @.str.17 = private unnamed_addr constant [46 x i8] c"Matrix dimensions exceed maximum allowed size\00", align 1
  38. @.str.18 = private unnamed_addr constant [43 x i8] c"Memory allocation failed for matrix struct\00", align 1
  39. @.str.19 = private unnamed_addr constant [41 x i8] c"Memory allocation failed for matrix rows\00", align 1
  40. @.str.20 = private unnamed_addr constant [44 x i8] c"Memory allocation failed for matrix columns\00", align 1
  41. @.str.21 = private unnamed_addr constant [20 x i8] c"Null matrix pointer\00", align 1
  42. @.str.22 = private unnamed_addr constant [20 x i8] c"Invalid matrix data\00", align 1
  43. @.str.23 = private unnamed_addr constant [45 x i8] c"Invalid matrix dimensions for multiplication\00", align 1
  44. @.str.24 = private unnamed_addr constant [42 x i8] c"Integer overflow in matrix multiplication\00", align 1
  45. @.str.25 = private unnamed_addr constant [38 x i8] c"Memory allocation failed for new node\00", align 1
  46. @insertNode.maxDepth = internal global i32 0, align 4
  47. @.str.26 = private unnamed_addr constant [34 x i8] c"List exceeds maximum allowed size\00", align 1
  48. @calculationResult = internal global i32 0, align 4
  49. @.str.27 = private unnamed_addr constant [30 x i8] c"Final calculation result: %d\0A\00", align 1
  50. @.str.28 = private unnamed_addr constant [11 x i8] c"Error: %s\0A\00", align 1
  51. @.str.29 = private unnamed_addr constant [29 x i8] c"Error during array push: %s\0A\00", align 1
  52. @.str.30 = private unnamed_addr constant [33 x i8] c"Error during list insertion: %s\0A\00", align 1
  53. @.str.31 = private unnamed_addr constant [43 x i8] c"Circular reference detected in linked list\00", align 1
  54. @.str.32 = private unnamed_addr constant [22 x i8] c"Invalid point weights\00", align 1
  55. @.str.33 = private unnamed_addr constant [31 x i8] c"Coordinates out of valid range\00", align 1
  56. @.str.34 = private unnamed_addr constant [30 x i8] c"Distance calculation overflow\00", align 1
  57. @.str.35 = private unnamed_addr constant [36 x i8] c"Invalid distance calculation result\00", align 1
  58. @.str.36 = private unnamed_addr constant [15 x i8] c"Invalid circle\00", align 1
  59. @.str.37 = private unnamed_addr constant [22 x i8] c"Invalid circle radius\00", align 1
  60. @.str.38 = private unnamed_addr constant [24 x i8] c"Circle radius too large\00", align 1
  61. @.str.39 = private unnamed_addr constant [45 x i8] c"Circle center coordinates out of valid range\00", align 1
  62. @.str.40 = private unnamed_addr constant [26 x i8] c"Area calculation overflow\00", align 1
  63. @.str.41 = private unnamed_addr constant [9 x i8] c"standard\00", align 1
  64. @.str.42 = private unnamed_addr constant [9 x i8] c"weighted\00", align 1
  65. @.str.43 = private unnamed_addr constant [35 x i8] c"Invalid weight for weighted circle\00", align 1
  66. @.str.44 = private unnamed_addr constant [20 x i8] c"Unknown circle type\00", align 1
  67. @.str.45 = private unnamed_addr constant [17 x i8] c"Null matrix data\00", align 1
  68. @.str.46 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too large\00", align 1
  69. @.str.47 = private unnamed_addr constant [27 x i8] c"Invalid matrix row pointer\00", align 1
  70. @.str.48 = private unnamed_addr constant [32 x i8] c"Inconsistent square matrix flag\00", align 1
  71. @.str.49 = private unnamed_addr constant [14 x i8] c"Invalid array\00", align 1
  72. @.str.50 = private unnamed_addr constant [21 x i8] c"Invalid points array\00", align 1
  73. @.str.51 = private unnamed_addr constant [16 x i8] c"Too many points\00", align 1
  74. @.str.52 = private unnamed_addr constant [39 x i8] c"Failed to allocate memory for centroid\00", align 1
  75. @.str.53 = private unnamed_addr constant [21 x i8] c"Invalid point weight\00", align 1
  76. @.str.54 = private unnamed_addr constant [30 x i8] c"Centroid calculation overflow\00", align 1
  77. @.str.55 = private unnamed_addr constant [21 x i8] c"Total weight is zero\00", align 1
  78. @.str.56 = private unnamed_addr constant [9 x i8] c"Centroid\00", align 1
  79. @cache = internal global [100 x i32] zeroinitializer, align 16
  80. @__const.projectB_main.str = private unnamed_addr constant [14 x i8] c"Hello, World!\00", align 1
  81. @__const.projectB_main.arr = private unnamed_addr constant [8 x i32] [i32 10, i32 22, i32 9, i32 33, i32 21, i32 50, i32 41, i32 60], align 16
  82. @__const.projectB_main.matrix = private unnamed_addr constant <{ <{ 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] }>] }> <{ <{ i32, i32, i32, [97 x i32] }> <{ i32 1, i32 2, i32 3, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 4, i32 5, i32 6, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 7, i32 8, i32 9, [97 x i32] zeroinitializer }>, [97 x <{ i32, i32, i32, [97 x i32] }>] zeroinitializer }>, align 16
  83. ; Function Attrs: noinline nounwind optnone uwtable
  84. define dso_local i8* @getErrorMessage() #0 !project_source !2 {
  85. %1 = load i8*, i8** @globalErrorMessage, align 8
  86. %2 = icmp ne i8* %1, null
  87. br i1 %2, label %3, label %5
  88. 3: ; preds = %0
  89. %4 = load i8*, i8** @globalErrorMessage, align 8
  90. br label %6
  91. 5: ; preds = %0
  92. br label %6
  93. 6: ; preds = %5, %3
  94. %7 = phi i8* [ %4, %3 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), %5 ]
  95. ret i8* %7
  96. }
  97. ; Function Attrs: nounwind
  98. declare dso_local void @free(i8*) #1
  99. ; Function Attrs: nounwind
  100. declare dso_local noalias i8* @strdup(i8*) #1
  101. declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #2
  102. ; Function Attrs: noinline nounwind optnone uwtable
  103. define dso_local i32 @factorial(i32 %0) #0 !project_source !2 {
  104. %2 = alloca i32, align 4
  105. %3 = alloca i32, align 4
  106. %4 = alloca i32, align 4
  107. %5 = alloca i32, align 4
  108. store i32 %0, i32* %3, align 4
  109. %6 = load i32, i32* @recursionDepth, align 4
  110. %7 = add nsw i32 %6, 1
  111. store i32 %7, i32* @recursionDepth, align 4
  112. %8 = icmp sgt i32 %7, 1000
  113. br i1 %8, label %9, label %13
  114. 9: ; preds = %1
  115. %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0))
  116. %11 = load i32, i32* @recursionDepth, align 4
  117. %12 = add nsw i32 %11, -1
  118. store i32 %12, i32* @recursionDepth, align 4
  119. store i32 -1, i32* %2, align 4
  120. br label %57
  121. 13: ; preds = %1
  122. %14 = load i32, i32* %3, align 4
  123. %15 = icmp slt i32 %14, 0
  124. br i1 %15, label %16, label %20
  125. 16: ; preds = %13
  126. %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
  127. %18 = load i32, i32* @recursionDepth, align 4
  128. %19 = add nsw i32 %18, -1
  129. store i32 %19, i32* @recursionDepth, align 4
  130. store i32 -1, i32* %2, align 4
  131. br label %57
  132. 20: ; preds = %13
  133. %21 = load i32, i32* %3, align 4
  134. %22 = icmp sgt i32 %21, 20
  135. br i1 %22, label %23, label %27
  136. 23: ; preds = %20
  137. %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0))
  138. %25 = load i32, i32* @recursionDepth, align 4
  139. %26 = add nsw i32 %25, -1
  140. store i32 %26, i32* @recursionDepth, align 4
  141. store i32 -1, i32* %2, align 4
  142. br label %57
  143. 27: ; preds = %20
  144. %28 = load i32, i32* %3, align 4
  145. %29 = icmp sle i32 %28, 1
  146. br i1 %29, label %30, label %31
  147. 30: ; preds = %27
  148. store i32 1, i32* %4, align 4
  149. br label %53
  150. 31: ; preds = %27
  151. %32 = load i32, i32* %3, align 4
  152. %33 = sub nsw i32 %32, 1
  153. %34 = call i32 @factorial(i32 %33)
  154. store i32 %34, i32* %5, align 4
  155. %35 = load i32, i32* %5, align 4
  156. %36 = icmp eq i32 %35, -1
  157. br i1 %36, label %37, label %40
  158. 37: ; preds = %31
  159. %38 = load i32, i32* @recursionDepth, align 4
  160. %39 = add nsw i32 %38, -1
  161. store i32 %39, i32* @recursionDepth, align 4
  162. store i32 -1, i32* %2, align 4
  163. br label %57
  164. 40: ; preds = %31
  165. %41 = load i32, i32* %5, align 4
  166. %42 = load i32, i32* %3, align 4
  167. %43 = sdiv i32 2147483647, %42
  168. %44 = icmp sgt i32 %41, %43
  169. br i1 %44, label %45, label %49
  170. 45: ; preds = %40
  171. %46 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
  172. %47 = load i32, i32* @recursionDepth, align 4
  173. %48 = add nsw i32 %47, -1
  174. store i32 %48, i32* @recursionDepth, align 4
  175. store i32 -1, i32* %2, align 4
  176. br label %57
  177. 49: ; preds = %40
  178. %50 = load i32, i32* %3, align 4
  179. %51 = load i32, i32* %5, align 4
  180. %52 = mul nsw i32 %50, %51
  181. store i32 %52, i32* %4, align 4
  182. br label %53
  183. 53: ; preds = %49, %30
  184. %54 = load i32, i32* @recursionDepth, align 4
  185. %55 = add nsw i32 %54, -1
  186. store i32 %55, i32* @recursionDepth, align 4
  187. %56 = load i32, i32* %4, align 4
  188. store i32 %56, i32* %2, align 4
  189. br label %57
  190. 57: ; preds = %53, %45, %37, %23, %16, %9
  191. %58 = load i32, i32* %2, align 4
  192. ret i32 %58
  193. }
  194. ; Function Attrs: nounwind
  195. declare dso_local noalias i8* @malloc(i64) #1
  196. ; Function Attrs: noinline nounwind optnone uwtable
  197. define dso_local void @pushBack(%struct.DynamicArray* %0, i32 %1) #0 !project_source !2 {
  198. %3 = alloca %struct.DynamicArray*, align 8
  199. %4 = alloca i32, align 4
  200. %5 = alloca i32, align 4
  201. %6 = alloca i32*, align 8
  202. store %struct.DynamicArray* %0, %struct.DynamicArray** %3, align 8
  203. store i32 %1, i32* %4, align 4
  204. %7 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  205. %8 = icmp ne %struct.DynamicArray* %7, null
  206. br i1 %8, label %11, label %9
  207. 9: ; preds = %2
  208. %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
  209. br label %94
  210. 11: ; preds = %2
  211. %12 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  212. %13 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %12, i32 0, i32 1
  213. %14 = load i32, i32* %13, align 8
  214. %15 = icmp sge i32 %14, 1000
  215. br i1 %15, label %16, label %18
  216. 16: ; preds = %11
  217. %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
  218. br label %94
  219. 18: ; preds = %11
  220. %19 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  221. %20 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %19, i32 0, i32 1
  222. %21 = load i32, i32* %20, align 8
  223. %22 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  224. %23 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %22, i32 0, i32 2
  225. %24 = load i32, i32* %23, align 4
  226. %25 = icmp sge i32 %21, %24
  227. br i1 %25, label %26, label %55
  228. 26: ; preds = %18
  229. %27 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  230. %28 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %27, i32 0, i32 2
  231. %29 = load i32, i32* %28, align 4
  232. %30 = mul nsw i32 %29, 2
  233. store i32 %30, i32* %5, align 4
  234. %31 = load i32, i32* %5, align 4
  235. %32 = icmp sgt i32 %31, 1000
  236. br i1 %32, label %33, label %34
  237. 33: ; preds = %26
  238. store i32 1000, i32* %5, align 4
  239. br label %34
  240. 34: ; preds = %33, %26
  241. %35 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  242. %36 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %35, i32 0, i32 0
  243. %37 = load i32*, i32** %36, align 8
  244. %38 = bitcast i32* %37 to i8*
  245. %39 = load i32, i32* %5, align 4
  246. %40 = sext i32 %39 to i64
  247. %41 = mul i64 4, %40
  248. %42 = call i8* @realloc(i8* %38, i64 %41) #7
  249. %43 = bitcast i8* %42 to i32*
  250. store i32* %43, i32** %6, align 8
  251. %44 = load i32*, i32** %6, align 8
  252. %45 = icmp ne i32* %44, null
  253. br i1 %45, label %48, label %46
  254. 46: ; preds = %34
  255. %47 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
  256. br label %94
  257. 48: ; preds = %34
  258. %49 = load i32*, i32** %6, align 8
  259. %50 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  260. %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 0
  261. store i32* %49, i32** %51, align 8
  262. %52 = load i32, i32* %5, align 4
  263. %53 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  264. %54 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %53, i32 0, i32 2
  265. store i32 %52, i32* %54, align 4
  266. br label %55
  267. 55: ; preds = %48, %18
  268. %56 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  269. %57 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %56, i32 0, i32 3
  270. %58 = load i32, i32* %57, align 8
  271. %59 = icmp ne i32 %58, 0
  272. br i1 %59, label %60, label %81
  273. 60: ; preds = %55
  274. %61 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  275. %62 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %61, i32 0, i32 1
  276. %63 = load i32, i32* %62, align 8
  277. %64 = icmp sgt i32 %63, 0
  278. br i1 %64, label %65, label %81
  279. 65: ; preds = %60
  280. %66 = load i32, i32* %4, align 4
  281. %67 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  282. %68 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %67, i32 0, i32 0
  283. %69 = load i32*, i32** %68, align 8
  284. %70 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  285. %71 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %70, i32 0, i32 1
  286. %72 = load i32, i32* %71, align 8
  287. %73 = sub nsw i32 %72, 1
  288. %74 = sext i32 %73 to i64
  289. %75 = getelementptr inbounds i32, i32* %69, i64 %74
  290. %76 = load i32, i32* %75, align 4
  291. %77 = icmp slt i32 %66, %76
  292. br i1 %77, label %78, label %81
  293. 78: ; preds = %65
  294. %79 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  295. %80 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %79, i32 0, i32 3
  296. store i32 0, i32* %80, align 8
  297. br label %81
  298. 81: ; preds = %78, %65, %60, %55
  299. %82 = load i32, i32* %4, align 4
  300. %83 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  301. %84 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %83, i32 0, i32 0
  302. %85 = load i32*, i32** %84, align 8
  303. %86 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  304. %87 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %86, i32 0, i32 1
  305. %88 = load i32, i32* %87, align 8
  306. %89 = add nsw i32 %88, 1
  307. store i32 %89, i32* %87, align 8
  308. %90 = sext i32 %88 to i64
  309. %91 = getelementptr inbounds i32, i32* %85, i64 %90
  310. store i32 %82, i32* %91, align 4
  311. %92 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
  312. %93 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %92, i32 0, i32 4
  313. store i32 1, i32* %93, align 4
  314. br label %94
  315. 94: ; preds = %81, %46, %16, %9
  316. ret void
  317. }
  318. ; Function Attrs: nounwind
  319. declare dso_local i8* @realloc(i8*, i64) #1
  320. ; Function Attrs: nounwind
  321. declare dso_local noalias i8* @calloc(i64, i64) #1
  322. ; Function Attrs: noinline nounwind optnone uwtable
  323. define dso_local %struct.Matrix* @multiplyMatrices(%struct.Matrix* %0, %struct.Matrix* %1) #0 !project_source !2 {
  324. %3 = alloca %struct.Matrix*, align 8
  325. %4 = alloca %struct.Matrix*, align 8
  326. %5 = alloca %struct.Matrix*, align 8
  327. %6 = alloca %struct.Matrix*, align 8
  328. %7 = alloca i64, align 8
  329. %8 = alloca i32, align 4
  330. %9 = alloca i32, align 4
  331. %10 = alloca i64, align 8
  332. %11 = alloca i32, align 4
  333. %12 = alloca i64, align 8
  334. %13 = alloca i32, align 4
  335. store %struct.Matrix* %0, %struct.Matrix** %4, align 8
  336. store %struct.Matrix* %1, %struct.Matrix** %5, align 8
  337. %14 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  338. %15 = icmp ne %struct.Matrix* %14, null
  339. br i1 %15, label %16, label %19
  340. 16: ; preds = %2
  341. %17 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  342. %18 = icmp ne %struct.Matrix* %17, null
  343. br i1 %18, label %21, label %19
  344. 19: ; preds = %16, %2
  345. %20 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  346. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  347. br label %214
  348. 21: ; preds = %16
  349. %22 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  350. %23 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %22, i32 0, i32 0
  351. %24 = load i32**, i32*** %23, align 8
  352. %25 = icmp ne i32** %24, null
  353. br i1 %25, label %26, label %31
  354. 26: ; preds = %21
  355. %27 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  356. %28 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %27, i32 0, i32 0
  357. %29 = load i32**, i32*** %28, align 8
  358. %30 = icmp ne i32** %29, null
  359. br i1 %30, label %33, label %31
  360. 31: ; preds = %26, %21
  361. %32 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0))
  362. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  363. br label %214
  364. 33: ; preds = %26
  365. %34 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  366. %35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %34, i32 0, i32 2
  367. %36 = load i32, i32* %35, align 4
  368. %37 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  369. %38 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %37, i32 0, i32 1
  370. %39 = load i32, i32* %38, align 8
  371. %40 = icmp ne i32 %36, %39
  372. br i1 %40, label %41, label %43
  373. 41: ; preds = %33
  374. %42 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
  375. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  376. br label %214
  377. 43: ; preds = %33
  378. %44 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  379. %45 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %44, i32 0, i32 2
  380. %46 = load i32, i32* %45, align 4
  381. %47 = icmp sgt i32 %46, 100
  382. br i1 %47, label %53, label %48
  383. 48: ; preds = %43
  384. %49 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  385. %50 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %49, i32 0, i32 1
  386. %51 = load i32, i32* %50, align 8
  387. %52 = icmp sgt i32 %51, 100
  388. br i1 %52, label %53, label %55
  389. 53: ; preds = %48, %43
  390. %54 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  391. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  392. br label %214
  393. 55: ; preds = %48
  394. %56 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  395. %57 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %56, i32 0, i32 1
  396. %58 = load i32, i32* %57, align 8
  397. %59 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  398. %60 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %59, i32 0, i32 2
  399. %61 = load i32, i32* %60, align 4
  400. %62 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 %58, i32 %61, i8* null)
  401. store %struct.Matrix* %62, %struct.Matrix** %6, align 8
  402. %63 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  403. %64 = icmp ne %struct.Matrix* %63, null
  404. br i1 %64, label %66, label %65
  405. 65: ; preds = %55
  406. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  407. br label %214
  408. 66: ; preds = %55
  409. store i64 0, i64* %7, align 8
  410. store i32 0, i32* %8, align 4
  411. br label %67
  412. 67: ; preds = %199, %66
  413. %68 = load i32, i32* %8, align 4
  414. %69 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  415. %70 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %69, i32 0, i32 1
  416. %71 = load i32, i32* %70, align 8
  417. %72 = icmp slt i32 %68, %71
  418. br i1 %72, label %73, label %202
  419. 73: ; preds = %67
  420. store i32 0, i32* %9, align 4
  421. br label %74
  422. 74: ; preds = %195, %73
  423. %75 = load i32, i32* %9, align 4
  424. %76 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  425. %77 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %76, i32 0, i32 2
  426. %78 = load i32, i32* %77, align 4
  427. %79 = icmp slt i32 %75, %78
  428. br i1 %79, label %80, label %198
  429. 80: ; preds = %74
  430. store i64 0, i64* %10, align 8
  431. store i32 0, i32* %11, align 4
  432. br label %81
  433. 81: ; preds = %149, %80
  434. %82 = load i32, i32* %11, align 4
  435. %83 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  436. %84 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %83, i32 0, i32 2
  437. %85 = load i32, i32* %84, align 4
  438. %86 = icmp slt i32 %82, %85
  439. br i1 %86, label %87, label %152
  440. 87: ; preds = %81
  441. %88 = load %struct.Matrix*, %struct.Matrix** %4, align 8
  442. %89 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %88, i32 0, i32 0
  443. %90 = load i32**, i32*** %89, align 8
  444. %91 = load i32, i32* %8, align 4
  445. %92 = sext i32 %91 to i64
  446. %93 = getelementptr inbounds i32*, i32** %90, i64 %92
  447. %94 = load i32*, i32** %93, align 8
  448. %95 = load i32, i32* %11, align 4
  449. %96 = sext i32 %95 to i64
  450. %97 = getelementptr inbounds i32, i32* %94, i64 %96
  451. %98 = load i32, i32* %97, align 4
  452. %99 = sext i32 %98 to i64
  453. %100 = load %struct.Matrix*, %struct.Matrix** %5, align 8
  454. %101 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %100, i32 0, i32 0
  455. %102 = load i32**, i32*** %101, align 8
  456. %103 = load i32, i32* %11, align 4
  457. %104 = sext i32 %103 to i64
  458. %105 = getelementptr inbounds i32*, i32** %102, i64 %104
  459. %106 = load i32*, i32** %105, align 8
  460. %107 = load i32, i32* %9, align 4
  461. %108 = sext i32 %107 to i64
  462. %109 = getelementptr inbounds i32, i32* %106, i64 %108
  463. %110 = load i32, i32* %109, align 4
  464. %111 = sext i32 %110 to i64
  465. %112 = mul nsw i64 %99, %111
  466. store i64 %112, i64* %12, align 8
  467. %113 = load i64, i64* %12, align 8
  468. %114 = load i64, i64* %10, align 8
  469. %115 = add nsw i64 %114, %113
  470. store i64 %115, i64* %10, align 8
  471. %116 = load i64, i64* %10, align 8
  472. %117 = icmp sgt i64 %116, 2147483647
  473. br i1 %117, label %121, label %118
  474. 118: ; preds = %87
  475. %119 = load i64, i64* %10, align 8
  476. %120 = icmp slt i64 %119, -2147483648
  477. br i1 %120, label %121, label %148
  478. 121: ; preds = %118, %87
  479. %122 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0))
  480. store i32 0, i32* %13, align 4
  481. br label %123
  482. 123: ; preds = %138, %121
  483. %124 = load i32, i32* %13, align 4
  484. %125 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  485. %126 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %125, i32 0, i32 1
  486. %127 = load i32, i32* %126, align 8
  487. %128 = icmp slt i32 %124, %127
  488. br i1 %128, label %129, label %141
  489. 129: ; preds = %123
  490. %130 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  491. %131 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %130, i32 0, i32 0
  492. %132 = load i32**, i32*** %131, align 8
  493. %133 = load i32, i32* %13, align 4
  494. %134 = sext i32 %133 to i64
  495. %135 = getelementptr inbounds i32*, i32** %132, i64 %134
  496. %136 = load i32*, i32** %135, align 8
  497. %137 = bitcast i32* %136 to i8*
  498. call void @free(i8* %137) #7
  499. br label %138
  500. 138: ; preds = %129
  501. %139 = load i32, i32* %13, align 4
  502. %140 = add nsw i32 %139, 1
  503. store i32 %140, i32* %13, align 4
  504. br label %123
  505. 141: ; preds = %123
  506. %142 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  507. %143 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %142, i32 0, i32 0
  508. %144 = load i32**, i32*** %143, align 8
  509. %145 = bitcast i32** %144 to i8*
  510. call void @free(i8* %145) #7
  511. %146 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  512. %147 = bitcast %struct.Matrix* %146 to i8*
  513. call void @free(i8* %147) #7
  514. store %struct.Matrix* null, %struct.Matrix** %3, align 8
  515. br label %214
  516. 148: ; preds = %118
  517. br label %149
  518. 149: ; preds = %148
  519. %150 = load i32, i32* %11, align 4
  520. %151 = add nsw i32 %150, 1
  521. store i32 %151, i32* %11, align 4
  522. br label %81
  523. 152: ; preds = %81
  524. %153 = load i64, i64* %10, align 8
  525. %154 = trunc i64 %153 to i32
  526. %155 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  527. %156 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %155, i32 0, i32 0
  528. %157 = load i32**, i32*** %156, align 8
  529. %158 = load i32, i32* %8, align 4
  530. %159 = sext i32 %158 to i64
  531. %160 = getelementptr inbounds i32*, i32** %157, i64 %159
  532. %161 = load i32*, i32** %160, align 8
  533. %162 = load i32, i32* %9, align 4
  534. %163 = sext i32 %162 to i64
  535. %164 = getelementptr inbounds i32, i32* %161, i64 %163
  536. store i32 %154, i32* %164, align 4
  537. %165 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  538. %166 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %165, i32 0, i32 0
  539. %167 = load i32**, i32*** %166, align 8
  540. %168 = load i32, i32* %8, align 4
  541. %169 = sext i32 %168 to i64
  542. %170 = getelementptr inbounds i32*, i32** %167, i64 %169
  543. %171 = load i32*, i32** %170, align 8
  544. %172 = load i32, i32* %9, align 4
  545. %173 = sext i32 %172 to i64
  546. %174 = getelementptr inbounds i32, i32* %171, i64 %173
  547. %175 = load i32, i32* %174, align 4
  548. %176 = call i32 @abs(i32 %175) #8
  549. %177 = sext i32 %176 to i64
  550. %178 = load i64, i64* %7, align 8
  551. %179 = icmp sgt i64 %177, %178
  552. br i1 %179, label %180, label %194
  553. 180: ; preds = %152
  554. %181 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  555. %182 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %181, i32 0, i32 0
  556. %183 = load i32**, i32*** %182, align 8
  557. %184 = load i32, i32* %8, align 4
  558. %185 = sext i32 %184 to i64
  559. %186 = getelementptr inbounds i32*, i32** %183, i64 %185
  560. %187 = load i32*, i32** %186, align 8
  561. %188 = load i32, i32* %9, align 4
  562. %189 = sext i32 %188 to i64
  563. %190 = getelementptr inbounds i32, i32* %187, i64 %189
  564. %191 = load i32, i32* %190, align 4
  565. %192 = call i32 @abs(i32 %191) #8
  566. %193 = sext i32 %192 to i64
  567. store i64 %193, i64* %7, align 8
  568. br label %194
  569. 194: ; preds = %180, %152
  570. br label %195
  571. 195: ; preds = %194
  572. %196 = load i32, i32* %9, align 4
  573. %197 = add nsw i32 %196, 1
  574. store i32 %197, i32* %9, align 4
  575. br label %74
  576. 198: ; preds = %74
  577. br label %199
  578. 199: ; preds = %198
  579. %200 = load i32, i32* %8, align 4
  580. %201 = add nsw i32 %200, 1
  581. store i32 %201, i32* %8, align 4
  582. br label %67
  583. 202: ; preds = %67
  584. %203 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  585. %204 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %203, i32 0, i32 1
  586. %205 = load i32, i32* %204, align 8
  587. %206 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  588. %207 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %206, i32 0, i32 2
  589. %208 = load i32, i32* %207, align 4
  590. %209 = icmp eq i32 %205, %208
  591. %210 = zext i1 %209 to i32
  592. %211 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  593. %212 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %211, i32 0, i32 3
  594. store i32 %210, i32* %212, align 8
  595. %213 = load %struct.Matrix*, %struct.Matrix** %6, align 8
  596. store %struct.Matrix* %213, %struct.Matrix** %3, align 8
  597. br label %214
  598. 214: ; preds = %202, %141, %65, %53, %41, %31, %19
  599. %215 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  600. ret %struct.Matrix* %215
  601. }
  602. ; Function Attrs: nounwind readnone
  603. declare dso_local i32 @abs(i32) #3
  604. ; Function Attrs: noinline nounwind optnone uwtable
  605. define dso_local %struct.Node* @insertNode(%struct.Node* %0, i32 %1) #0 !project_source !2 {
  606. %3 = alloca %struct.Node*, align 8
  607. %4 = alloca %struct.Node*, align 8
  608. %5 = alloca i32, align 4
  609. %6 = alloca %struct.Node*, align 8
  610. %7 = alloca %struct.Node*, align 8
  611. %8 = alloca %struct.Node*, align 8
  612. %9 = alloca i32, align 4
  613. store %struct.Node* %0, %struct.Node** %4, align 8
  614. store i32 %1, i32* %5, align 4
  615. %10 = call noalias i8* @malloc(i64 32) #7
  616. %11 = bitcast i8* %10 to %struct.Node*
  617. store %struct.Node* %11, %struct.Node** %6, align 8
  618. %12 = load %struct.Node*, %struct.Node** %6, align 8
  619. %13 = icmp ne %struct.Node* %12, null
  620. br i1 %13, label %17, label %14
  621. 14: ; preds = %2
  622. %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
  623. %16 = load %struct.Node*, %struct.Node** %4, align 8
  624. store %struct.Node* %16, %struct.Node** %3, align 8
  625. br label %94
  626. 17: ; preds = %2
  627. %18 = load i32, i32* %5, align 4
  628. %19 = load %struct.Node*, %struct.Node** %6, align 8
  629. %20 = getelementptr inbounds %struct.Node, %struct.Node* %19, i32 0, i32 0
  630. store i32 %18, i32* %20, align 8
  631. %21 = load %struct.Node*, %struct.Node** %6, align 8
  632. %22 = getelementptr inbounds %struct.Node, %struct.Node* %21, i32 0, i32 1
  633. store %struct.Node* null, %struct.Node** %22, align 8
  634. %23 = load %struct.Node*, %struct.Node** %6, align 8
  635. %24 = getelementptr inbounds %struct.Node, %struct.Node* %23, i32 0, i32 2
  636. store %struct.Node* null, %struct.Node** %24, align 8
  637. %25 = load %struct.Node*, %struct.Node** %6, align 8
  638. %26 = getelementptr inbounds %struct.Node, %struct.Node* %25, i32 0, i32 3
  639. store i32 0, i32* %26, align 8
  640. %27 = load %struct.Node*, %struct.Node** %4, align 8
  641. %28 = icmp ne %struct.Node* %27, null
  642. br i1 %28, label %33, label %29
  643. 29: ; preds = %17
  644. %30 = load %struct.Node*, %struct.Node** %6, align 8
  645. %31 = getelementptr inbounds %struct.Node, %struct.Node* %30, i32 0, i32 4
  646. store i32 0, i32* %31, align 4
  647. store i32 0, i32* @insertNode.maxDepth, align 4
  648. %32 = load %struct.Node*, %struct.Node** %6, align 8
  649. store %struct.Node* %32, %struct.Node** %3, align 8
  650. br label %94
  651. 33: ; preds = %17
  652. %34 = load %struct.Node*, %struct.Node** %4, align 8
  653. store %struct.Node* %34, %struct.Node** %7, align 8
  654. store %struct.Node* null, %struct.Node** %8, align 8
  655. store i32 0, i32* %9, align 4
  656. br label %35
  657. 35: ; preds = %60, %33
  658. %36 = load %struct.Node*, %struct.Node** %7, align 8
  659. %37 = icmp ne %struct.Node* %36, null
  660. br i1 %37, label %38, label %44
  661. 38: ; preds = %35
  662. %39 = load %struct.Node*, %struct.Node** %7, align 8
  663. %40 = getelementptr inbounds %struct.Node, %struct.Node* %39, i32 0, i32 0
  664. %41 = load i32, i32* %40, align 8
  665. %42 = load i32, i32* %5, align 4
  666. %43 = icmp slt i32 %41, %42
  667. br label %44
  668. 44: ; preds = %38, %35
  669. %45 = phi i1 [ false, %35 ], [ %43, %38 ]
  670. br i1 %45, label %46, label %61
  671. 46: ; preds = %44
  672. %47 = load %struct.Node*, %struct.Node** %7, align 8
  673. store %struct.Node* %47, %struct.Node** %8, align 8
  674. %48 = load %struct.Node*, %struct.Node** %7, align 8
  675. %49 = getelementptr inbounds %struct.Node, %struct.Node* %48, i32 0, i32 1
  676. %50 = load %struct.Node*, %struct.Node** %49, align 8
  677. store %struct.Node* %50, %struct.Node** %7, align 8
  678. %51 = load i32, i32* %9, align 4
  679. %52 = add nsw i32 %51, 1
  680. store i32 %52, i32* %9, align 4
  681. %53 = load i32, i32* %9, align 4
  682. %54 = icmp sgt i32 %53, 1000
  683. br i1 %54, label %55, label %60
  684. 55: ; preds = %46
  685. %56 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0))
  686. %57 = load %struct.Node*, %struct.Node** %6, align 8
  687. %58 = bitcast %struct.Node* %57 to i8*
  688. call void @free(i8* %58) #7
  689. %59 = load %struct.Node*, %struct.Node** %4, align 8
  690. store %struct.Node* %59, %struct.Node** %3, align 8
  691. br label %94
  692. 60: ; preds = %46
  693. br label %35
  694. 61: ; preds = %44
  695. %62 = load i32, i32* %9, align 4
  696. %63 = load i32, i32* @insertNode.maxDepth, align 4
  697. %64 = icmp sgt i32 %62, %63
  698. br i1 %64, label %65, label %67
  699. 65: ; preds = %61
  700. %66 = load i32, i32* %9, align 4
  701. store i32 %66, i32* @insertNode.maxDepth, align 4
  702. br label %67
  703. 67: ; preds = %65, %61
  704. %68 = load i32, i32* %9, align 4
  705. %69 = load %struct.Node*, %struct.Node** %6, align 8
  706. %70 = getelementptr inbounds %struct.Node, %struct.Node* %69, i32 0, i32 4
  707. store i32 %68, i32* %70, align 4
  708. %71 = load %struct.Node*, %struct.Node** %7, align 8
  709. %72 = load %struct.Node*, %struct.Node** %6, align 8
  710. %73 = getelementptr inbounds %struct.Node, %struct.Node* %72, i32 0, i32 1
  711. store %struct.Node* %71, %struct.Node** %73, align 8
  712. %74 = load %struct.Node*, %struct.Node** %8, align 8
  713. %75 = icmp ne %struct.Node* %74, null
  714. br i1 %75, label %76, label %83
  715. 76: ; preds = %67
  716. %77 = load %struct.Node*, %struct.Node** %6, align 8
  717. %78 = load %struct.Node*, %struct.Node** %8, align 8
  718. %79 = getelementptr inbounds %struct.Node, %struct.Node* %78, i32 0, i32 1
  719. store %struct.Node* %77, %struct.Node** %79, align 8
  720. %80 = load %struct.Node*, %struct.Node** %8, align 8
  721. %81 = load %struct.Node*, %struct.Node** %6, align 8
  722. %82 = getelementptr inbounds %struct.Node, %struct.Node* %81, i32 0, i32 2
  723. store %struct.Node* %80, %struct.Node** %82, align 8
  724. br label %85
  725. 83: ; preds = %67
  726. %84 = load %struct.Node*, %struct.Node** %6, align 8
  727. store %struct.Node* %84, %struct.Node** %3, align 8
  728. br label %94
  729. 85: ; preds = %76
  730. %86 = load %struct.Node*, %struct.Node** %7, align 8
  731. %87 = icmp ne %struct.Node* %86, null
  732. br i1 %87, label %88, label %92
  733. 88: ; preds = %85
  734. %89 = load %struct.Node*, %struct.Node** %6, align 8
  735. %90 = load %struct.Node*, %struct.Node** %7, align 8
  736. %91 = getelementptr inbounds %struct.Node, %struct.Node* %90, i32 0, i32 2
  737. store %struct.Node* %89, %struct.Node** %91, align 8
  738. br label %92
  739. 92: ; preds = %88, %85
  740. %93 = load %struct.Node*, %struct.Node** %4, align 8
  741. store %struct.Node* %93, %struct.Node** %3, align 8
  742. br label %94
  743. 94: ; preds = %92, %83, %55, %29, %14
  744. %95 = load %struct.Node*, %struct.Node** %3, align 8
  745. ret %struct.Node* %95
  746. }
  747. declare dso_local i32 @printf(i8*, ...) #2
  748. ; Function Attrs: nounwind
  749. declare dso_local i64 @time(i64*) #1
  750. ; Function Attrs: nounwind
  751. declare dso_local void @srand(i32) #1
  752. ; Function Attrs: nounwind
  753. declare dso_local i32 @rand() #1
  754. ; Function Attrs: noinline nounwind optnone uwtable
  755. define dso_local double @calculateDistance(%struct.Point* byval(%struct.Point) align 8 %0, %struct.Point* byval(%struct.Point) align 8 %1, i32* %2) #0 !project_source !2 {
  756. %4 = alloca double, align 8
  757. %5 = alloca i32*, align 8
  758. %6 = alloca double, align 8
  759. %7 = alloca double, align 8
  760. %8 = alloca double, align 8
  761. store i32* %2, i32** %5, align 8
  762. %9 = load i32*, i32** %5, align 8
  763. store i32 0, i32* %9, align 4
  764. %10 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3
  765. %11 = load double, double* %10, align 8
  766. %12 = fcmp ole double %11, 0.000000e+00
  767. br i1 %12, label %17, label %13
  768. 13: ; preds = %3
  769. %14 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
  770. %15 = load double, double* %14, align 8
  771. %16 = fcmp ole double %15, 0.000000e+00
  772. br i1 %16, label %17, label %20
  773. 17: ; preds = %13, %3
  774. %18 = load i32*, i32** %5, align 8
  775. store i32 1, i32* %18, align 4
  776. %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0))
  777. store double -1.000000e+00, double* %4, align 8
  778. br label %105
  779. 20: ; preds = %13
  780. %21 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0
  781. %22 = load i32, i32* %21, align 8
  782. %23 = call i32 @abs(i32 %22) #8
  783. %24 = icmp sgt i32 %23, 1000
  784. br i1 %24, label %40, label %25
  785. 25: ; preds = %20
  786. %26 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1
  787. %27 = load i32, i32* %26, align 4
  788. %28 = call i32 @abs(i32 %27) #8
  789. %29 = icmp sgt i32 %28, 1000
  790. br i1 %29, label %40, label %30
  791. 30: ; preds = %25
  792. %31 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0
  793. %32 = load i32, i32* %31, align 8
  794. %33 = call i32 @abs(i32 %32) #8
  795. %34 = icmp sgt i32 %33, 1000
  796. br i1 %34, label %40, label %35
  797. 35: ; preds = %30
  798. %36 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1
  799. %37 = load i32, i32* %36, align 4
  800. %38 = call i32 @abs(i32 %37) #8
  801. %39 = icmp sgt i32 %38, 1000
  802. br i1 %39, label %40, label %43
  803. 40: ; preds = %35, %30, %25, %20
  804. %41 = load i32*, i32** %5, align 8
  805. store i32 3, i32* %41, align 4
  806. %42 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0))
  807. store double -1.000000e+00, double* %4, align 8
  808. br label %105
  809. 43: ; preds = %35
  810. %44 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0
  811. %45 = load i32, i32* %44, align 8
  812. %46 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0
  813. %47 = load i32, i32* %46, align 8
  814. %48 = sub nsw i32 %45, %47
  815. %49 = sitofp i32 %48 to double
  816. %50 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
  817. %51 = load double, double* %50, align 8
  818. %52 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3
  819. %53 = load double, double* %52, align 8
  820. %54 = fdiv double %51, %53
  821. %55 = call double @sqrt(double %54) #7
  822. %56 = fmul double %49, %55
  823. store double %56, double* %6, align 8
  824. %57 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1
  825. %58 = load i32, i32* %57, align 4
  826. %59 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1
  827. %60 = load i32, i32* %59, align 4
  828. %61 = sub nsw i32 %58, %60
  829. %62 = sitofp i32 %61 to double
  830. %63 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
  831. %64 = load double, double* %63, align 8
  832. %65 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3
  833. %66 = load double, double* %65, align 8
  834. %67 = fdiv double %64, %66
  835. %68 = call double @sqrt(double %67) #7
  836. %69 = fmul double %62, %68
  837. store double %69, double* %7, align 8
  838. %70 = load double, double* %6, align 8
  839. %71 = call double @llvm.fabs.f64(double %70)
  840. %72 = fcmp ogt double %71, 1.000000e+03
  841. br i1 %72, label %77, label %73
  842. 73: ; preds = %43
  843. %74 = load double, double* %7, align 8
  844. %75 = call double @llvm.fabs.f64(double %74)
  845. %76 = fcmp ogt double %75, 1.000000e+03
  846. br i1 %76, label %77, label %80
  847. 77: ; preds = %73, %43
  848. %78 = load i32*, i32** %5, align 8
  849. store i32 5, i32* %78, align 4
  850. %79 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0))
  851. store double -1.000000e+00, double* %4, align 8
  852. br label %105
  853. 80: ; preds = %73
  854. %81 = load double, double* %6, align 8
  855. %82 = load double, double* %6, align 8
  856. %83 = fmul double %81, %82
  857. %84 = load double, double* %7, align 8
  858. %85 = load double, double* %7, align 8
  859. %86 = fmul double %84, %85
  860. %87 = fadd double %83, %86
  861. %88 = call double @sqrt(double %87) #7
  862. store double %88, double* %8, align 8
  863. %89 = load double, double* %8, align 8
  864. %90 = fcmp uno double %89, %89
  865. br i1 %90, label %100, label %91
  866. 91: ; preds = %80
  867. %92 = load double, double* %8, align 8
  868. %93 = call double @llvm.fabs.f64(double %92) #9
  869. %94 = fcmp oeq double %93, 0x7FF0000000000000
  870. %95 = bitcast double %92 to i64
  871. %96 = icmp slt i64 %95, 0
  872. %97 = select i1 %96, i32 -1, i32 1
  873. %98 = select i1 %94, i32 %97, i32 0
  874. %99 = icmp ne i32 %98, 0
  875. br i1 %99, label %100, label %103
  876. 100: ; preds = %91, %80
  877. %101 = load i32*, i32** %5, align 8
  878. store i32 8, i32* %101, align 4
  879. %102 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0))
  880. store double -1.000000e+00, double* %4, align 8
  881. br label %105
  882. 103: ; preds = %91
  883. %104 = load double, double* %8, align 8
  884. store double %104, double* %4, align 8
  885. br label %105
  886. 105: ; preds = %103, %100, %77, %40, %17
  887. %106 = load double, double* %4, align 8
  888. ret double %106
  889. }
  890. ; Function Attrs: nounwind
  891. declare dso_local double @sqrt(double) #1
  892. ; Function Attrs: nounwind readnone speculatable willreturn
  893. declare double @llvm.fabs.f64(double) #4
  894. ; Function Attrs: noinline nounwind optnone uwtable
  895. define dso_local double @calculateCircleArea(%struct.Circle* byval(%struct.Circle) align 8 %0, i32* %1) #0 !project_source !2 {
  896. %3 = alloca double, align 8
  897. %4 = alloca i32*, align 8
  898. %5 = alloca double, align 8
  899. store i32* %1, i32** %4, align 8
  900. %6 = load i32*, i32** %4, align 8
  901. store i32 0, i32* %6, align 4
  902. %7 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 2
  903. %8 = load i32, i32* %7, align 8
  904. %9 = icmp ne i32 %8, 0
  905. br i1 %9, label %13, label %10
  906. 10: ; preds = %2
  907. %11 = load i32*, i32** %4, align 8
  908. store i32 1, i32* %11, align 4
  909. %12 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
  910. store double -1.000000e+00, double* %3, align 8
  911. br label %92
  912. 13: ; preds = %2
  913. %14 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
  914. %15 = load double, double* %14, align 8
  915. %16 = fcmp ole double %15, 0.000000e+00
  916. br i1 %16, label %17, label %20
  917. 17: ; preds = %13
  918. %18 = load i32*, i32** %4, align 8
  919. store i32 1, i32* %18, align 4
  920. %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
  921. store double -1.000000e+00, double* %3, align 8
  922. br label %92
  923. 20: ; preds = %13
  924. %21 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
  925. %22 = load double, double* %21, align 8
  926. %23 = fcmp ogt double %22, 1.000000e+03
  927. br i1 %23, label %24, label %27
  928. 24: ; preds = %20
  929. %25 = load i32*, i32** %4, align 8
  930. store i32 3, i32* %25, align 4
  931. %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0))
  932. store double -1.000000e+00, double* %3, align 8
  933. br label %92
  934. 27: ; preds = %20
  935. %28 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
  936. %29 = getelementptr inbounds %struct.Point, %struct.Point* %28, i32 0, i32 0
  937. %30 = load i32, i32* %29, align 8
  938. %31 = call i32 @abs(i32 %30) #8
  939. %32 = icmp sgt i32 %31, 1000
  940. br i1 %32, label %39, label %33
  941. 33: ; preds = %27
  942. %34 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
  943. %35 = getelementptr inbounds %struct.Point, %struct.Point* %34, i32 0, i32 1
  944. %36 = load i32, i32* %35, align 4
  945. %37 = call i32 @abs(i32 %36) #8
  946. %38 = icmp sgt i32 %37, 1000
  947. br i1 %38, label %39, label %42
  948. 39: ; preds = %33, %27
  949. %40 = load i32*, i32** %4, align 8
  950. store i32 3, i32* %40, align 4
  951. %41 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
  952. store double -1.000000e+00, double* %3, align 8
  953. br label %92
  954. 42: ; preds = %33
  955. %43 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
  956. %44 = load double, double* %43, align 8
  957. %45 = fmul double 3.141590e+00, %44
  958. %46 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
  959. %47 = load double, double* %46, align 8
  960. %48 = fmul double %45, %47
  961. store double %48, double* %5, align 8
  962. %49 = load double, double* %5, align 8
  963. %50 = fcmp uno double %49, %49
  964. br i1 %50, label %60, label %51
  965. 51: ; preds = %42
  966. %52 = load double, double* %5, align 8
  967. %53 = call double @llvm.fabs.f64(double %52) #9
  968. %54 = fcmp oeq double %53, 0x7FF0000000000000
  969. %55 = bitcast double %52 to i64
  970. %56 = icmp slt i64 %55, 0
  971. %57 = select i1 %56, i32 -1, i32 1
  972. %58 = select i1 %54, i32 %57, i32 0
  973. %59 = icmp ne i32 %58, 0
  974. br i1 %59, label %60, label %63
  975. 60: ; preds = %51, %42
  976. %61 = load i32*, i32** %4, align 8
  977. store i32 5, i32* %61, align 4
  978. %62 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
  979. store double -1.000000e+00, double* %3, align 8
  980. br label %92
  981. 63: ; preds = %51
  982. %64 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3
  983. %65 = getelementptr inbounds [256 x i8], [256 x i8]* %64, i64 0, i64 0
  984. %66 = call i32 @strcmp(i8* %65, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.41, i64 0, i64 0)) #10
  985. %67 = icmp eq i32 %66, 0
  986. br i1 %67, label %68, label %70
  987. 68: ; preds = %63
  988. %69 = load double, double* %5, align 8
  989. store double %69, double* %3, align 8
  990. br label %92
  991. 70: ; preds = %63
  992. %71 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3
  993. %72 = getelementptr inbounds [256 x i8], [256 x i8]* %71, i64 0, i64 0
  994. %73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0)) #10
  995. %74 = icmp eq i32 %73, 0
  996. br i1 %74, label %75, label %89
  997. 75: ; preds = %70
  998. %76 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
  999. %77 = getelementptr inbounds %struct.Point, %struct.Point* %76, i32 0, i32 3
  1000. %78 = load double, double* %77, align 8
  1001. %79 = fcmp ole double %78, 0.000000e+00
  1002. br i1 %79, label %80, label %83
  1003. 80: ; preds = %75
  1004. %81 = load i32*, i32** %4, align 8
  1005. store i32 1, i32* %81, align 4
  1006. %82 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
  1007. store double -1.000000e+00, double* %3, align 8
  1008. br label %92
  1009. 83: ; preds = %75
  1010. %84 = load double, double* %5, align 8
  1011. %85 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
  1012. %86 = getelementptr inbounds %struct.Point, %struct.Point* %85, i32 0, i32 3
  1013. %87 = load double, double* %86, align 8
  1014. %88 = fmul double %84, %87
  1015. store double %88, double* %3, align 8
  1016. br label %92
  1017. 89: ; preds = %70
  1018. %90 = load i32*, i32** %4, align 8
  1019. store i32 1, i32* %90, align 4
  1020. %91 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0))
  1021. store double -1.000000e+00, double* %3, align 8
  1022. br label %92
  1023. 92: ; preds = %89, %83, %80, %68, %60, %39, %24, %17, %10
  1024. %93 = load double, double* %3, align 8
  1025. ret double %93
  1026. }
  1027. ; Function Attrs: nounwind readonly
  1028. declare dso_local i32 @strcmp(i8*, i8*) #5
  1029. ; Function Attrs: noinline nounwind optnone uwtable
  1030. define dso_local i32 @validateMatrix(%struct.Matrix* %0) #0 !project_source !2 {
  1031. %2 = alloca i32, align 4
  1032. %3 = alloca %struct.Matrix*, align 8
  1033. %4 = alloca i32, align 4
  1034. store %struct.Matrix* %0, %struct.Matrix** %3, align 8
  1035. %5 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1036. %6 = icmp ne %struct.Matrix* %5, null
  1037. br i1 %6, label %9, label %7
  1038. 7: ; preds = %1
  1039. %8 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
  1040. store i32 7, i32* %2, align 4
  1041. br label %78
  1042. 9: ; preds = %1
  1043. %10 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1044. %11 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %10, i32 0, i32 0
  1045. %12 = load i32**, i32*** %11, align 8
  1046. %13 = icmp ne i32** %12, null
  1047. br i1 %13, label %16, label %14
  1048. 14: ; preds = %9
  1049. %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
  1050. store i32 7, i32* %2, align 4
  1051. br label %78
  1052. 16: ; preds = %9
  1053. %17 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1054. %18 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %17, i32 0, i32 1
  1055. %19 = load i32, i32* %18, align 8
  1056. %20 = icmp slt i32 %19, 1
  1057. br i1 %20, label %26, label %21
  1058. 21: ; preds = %16
  1059. %22 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1060. %23 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %22, i32 0, i32 2
  1061. %24 = load i32, i32* %23, align 4
  1062. %25 = icmp slt i32 %24, 1
  1063. br i1 %25, label %26, label %28
  1064. 26: ; preds = %21, %16
  1065. %27 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  1066. store i32 1, i32* %2, align 4
  1067. br label %78
  1068. 28: ; preds = %21
  1069. %29 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1070. %30 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %29, i32 0, i32 1
  1071. %31 = load i32, i32* %30, align 8
  1072. %32 = icmp sgt i32 %31, 100
  1073. br i1 %32, label %38, label %33
  1074. 33: ; preds = %28
  1075. %34 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1076. %35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %34, i32 0, i32 2
  1077. %36 = load i32, i32* %35, align 4
  1078. %37 = icmp sgt i32 %36, 100
  1079. br i1 %37, label %38, label %40
  1080. 38: ; preds = %33, %28
  1081. %39 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0))
  1082. store i32 3, i32* %2, align 4
  1083. br label %78
  1084. 40: ; preds = %33
  1085. store i32 0, i32* %4, align 4
  1086. br label %41
  1087. 41: ; preds = %59, %40
  1088. %42 = load i32, i32* %4, align 4
  1089. %43 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1090. %44 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %43, i32 0, i32 1
  1091. %45 = load i32, i32* %44, align 8
  1092. %46 = icmp slt i32 %42, %45
  1093. br i1 %46, label %47, label %62
  1094. 47: ; preds = %41
  1095. %48 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1096. %49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %48, i32 0, i32 0
  1097. %50 = load i32**, i32*** %49, align 8
  1098. %51 = load i32, i32* %4, align 4
  1099. %52 = sext i32 %51 to i64
  1100. %53 = getelementptr inbounds i32*, i32** %50, i64 %52
  1101. %54 = load i32*, i32** %53, align 8
  1102. %55 = icmp ne i32* %54, null
  1103. br i1 %55, label %58, label %56
  1104. 56: ; preds = %47
  1105. %57 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0))
  1106. store i32 7, i32* %2, align 4
  1107. br label %78
  1108. 58: ; preds = %47
  1109. br label %59
  1110. 59: ; preds = %58
  1111. %60 = load i32, i32* %4, align 4
  1112. %61 = add nsw i32 %60, 1
  1113. store i32 %61, i32* %4, align 4
  1114. br label %41
  1115. 62: ; preds = %41
  1116. %63 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1117. %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 1
  1118. %65 = load i32, i32* %64, align 8
  1119. %66 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1120. %67 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %66, i32 0, i32 2
  1121. %68 = load i32, i32* %67, align 4
  1122. %69 = icmp eq i32 %65, %68
  1123. %70 = zext i1 %69 to i32
  1124. %71 = load %struct.Matrix*, %struct.Matrix** %3, align 8
  1125. %72 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %71, i32 0, i32 3
  1126. %73 = load i32, i32* %72, align 8
  1127. %74 = icmp ne i32 %70, %73
  1128. br i1 %74, label %75, label %77
  1129. 75: ; preds = %62
  1130. %76 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0))
  1131. store i32 1, i32* %2, align 4
  1132. br label %78
  1133. 77: ; preds = %62
  1134. store i32 0, i32* %2, align 4
  1135. br label %78
  1136. 78: ; preds = %77, %75, %56, %38, %26, %14, %7
  1137. %79 = load i32, i32* %2, align 4
  1138. ret i32 %79
  1139. }
  1140. ; Function Attrs: noinline nounwind optnone uwtable
  1141. define dso_local %struct.Point* @findCentroid(%struct.Point* %0, i32 %1, i32* %2) #0 !project_source !2 {
  1142. %4 = alloca %struct.Point*, align 8
  1143. %5 = alloca %struct.Point*, align 8
  1144. %6 = alloca i32, align 4
  1145. %7 = alloca i32*, align 8
  1146. %8 = alloca %struct.Point*, align 8
  1147. %9 = alloca double, align 8
  1148. %10 = alloca double, align 8
  1149. %11 = alloca double, align 8
  1150. %12 = alloca i32, align 4
  1151. store %struct.Point* %0, %struct.Point** %5, align 8
  1152. store i32 %1, i32* %6, align 4
  1153. store i32* %2, i32** %7, align 8
  1154. %13 = load i32*, i32** %7, align 8
  1155. store i32 0, i32* %13, align 4
  1156. %14 = load %struct.Point*, %struct.Point** %5, align 8
  1157. %15 = icmp ne %struct.Point* %14, null
  1158. br i1 %15, label %16, label %19
  1159. 16: ; preds = %3
  1160. %17 = load i32, i32* %6, align 4
  1161. %18 = icmp sle i32 %17, 0
  1162. br i1 %18, label %19, label %22
  1163. 19: ; preds = %16, %3
  1164. %20 = load i32*, i32** %7, align 8
  1165. store i32 1, i32* %20, align 4
  1166. %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0))
  1167. store %struct.Point* null, %struct.Point** %4, align 8
  1168. br label %171
  1169. 22: ; preds = %16
  1170. %23 = load i32, i32* %6, align 4
  1171. %24 = icmp sgt i32 %23, 1000
  1172. br i1 %24, label %25, label %28
  1173. 25: ; preds = %22
  1174. %26 = load i32*, i32** %7, align 8
  1175. store i32 3, i32* %26, align 4
  1176. %27 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
  1177. store %struct.Point* null, %struct.Point** %4, align 8
  1178. br label %171
  1179. 28: ; preds = %22
  1180. %29 = call noalias i8* @malloc(i64 272) #7
  1181. %30 = bitcast i8* %29 to %struct.Point*
  1182. store %struct.Point* %30, %struct.Point** %8, align 8
  1183. %31 = load %struct.Point*, %struct.Point** %8, align 8
  1184. %32 = icmp ne %struct.Point* %31, null
  1185. br i1 %32, label %36, label %33
  1186. 33: ; preds = %28
  1187. %34 = load i32*, i32** %7, align 8
  1188. store i32 2, i32* %34, align 4
  1189. %35 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0))
  1190. store %struct.Point* null, %struct.Point** %4, align 8
  1191. br label %171
  1192. 36: ; preds = %28
  1193. store double 0.000000e+00, double* %9, align 8
  1194. store double 0.000000e+00, double* %10, align 8
  1195. store double 0.000000e+00, double* %11, align 8
  1196. store i32 0, i32* %12, align 4
  1197. br label %37
  1198. 37: ; preds = %136, %36
  1199. %38 = load i32, i32* %12, align 4
  1200. %39 = load i32, i32* %6, align 4
  1201. %40 = icmp slt i32 %38, %39
  1202. br i1 %40, label %41, label %139
  1203. 41: ; preds = %37
  1204. %42 = load %struct.Point*, %struct.Point** %5, align 8
  1205. %43 = load i32, i32* %12, align 4
  1206. %44 = sext i32 %43 to i64
  1207. %45 = getelementptr inbounds %struct.Point, %struct.Point* %42, i64 %44
  1208. %46 = getelementptr inbounds %struct.Point, %struct.Point* %45, i32 0, i32 3
  1209. %47 = load double, double* %46, align 8
  1210. %48 = fcmp ole double %47, 0.000000e+00
  1211. br i1 %48, label %49, label %54
  1212. 49: ; preds = %41
  1213. %50 = load i32*, i32** %7, align 8
  1214. store i32 1, i32* %50, align 4
  1215. %51 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0))
  1216. %52 = load %struct.Point*, %struct.Point** %8, align 8
  1217. %53 = bitcast %struct.Point* %52 to i8*
  1218. call void @free(i8* %53) #7
  1219. store %struct.Point* null, %struct.Point** %4, align 8
  1220. br label %171
  1221. 54: ; preds = %41
  1222. %55 = load %struct.Point*, %struct.Point** %5, align 8
  1223. %56 = load i32, i32* %12, align 4
  1224. %57 = sext i32 %56 to i64
  1225. %58 = getelementptr inbounds %struct.Point, %struct.Point* %55, i64 %57
  1226. %59 = getelementptr inbounds %struct.Point, %struct.Point* %58, i32 0, i32 3
  1227. %60 = load double, double* %59, align 8
  1228. %61 = load double, double* %9, align 8
  1229. %62 = fadd double %61, %60
  1230. store double %62, double* %9, align 8
  1231. %63 = load %struct.Point*, %struct.Point** %5, align 8
  1232. %64 = load i32, i32* %12, align 4
  1233. %65 = sext i32 %64 to i64
  1234. %66 = getelementptr inbounds %struct.Point, %struct.Point* %63, i64 %65
  1235. %67 = getelementptr inbounds %struct.Point, %struct.Point* %66, i32 0, i32 0
  1236. %68 = load i32, i32* %67, align 8
  1237. %69 = sitofp i32 %68 to double
  1238. %70 = load %struct.Point*, %struct.Point** %5, align 8
  1239. %71 = load i32, i32* %12, align 4
  1240. %72 = sext i32 %71 to i64
  1241. %73 = getelementptr inbounds %struct.Point, %struct.Point* %70, i64 %72
  1242. %74 = getelementptr inbounds %struct.Point, %struct.Point* %73, i32 0, i32 3
  1243. %75 = load double, double* %74, align 8
  1244. %76 = fmul double %69, %75
  1245. %77 = load double, double* %10, align 8
  1246. %78 = fadd double %77, %76
  1247. store double %78, double* %10, align 8
  1248. %79 = load %struct.Point*, %struct.Point** %5, align 8
  1249. %80 = load i32, i32* %12, align 4
  1250. %81 = sext i32 %80 to i64
  1251. %82 = getelementptr inbounds %struct.Point, %struct.Point* %79, i64 %81
  1252. %83 = getelementptr inbounds %struct.Point, %struct.Point* %82, i32 0, i32 1
  1253. %84 = load i32, i32* %83, align 4
  1254. %85 = sitofp i32 %84 to double
  1255. %86 = load %struct.Point*, %struct.Point** %5, align 8
  1256. %87 = load i32, i32* %12, align 4
  1257. %88 = sext i32 %87 to i64
  1258. %89 = getelementptr inbounds %struct.Point, %struct.Point* %86, i64 %88
  1259. %90 = getelementptr inbounds %struct.Point, %struct.Point* %89, i32 0, i32 3
  1260. %91 = load double, double* %90, align 8
  1261. %92 = fmul double %85, %91
  1262. %93 = load double, double* %11, align 8
  1263. %94 = fadd double %93, %92
  1264. store double %94, double* %11, align 8
  1265. %95 = load double, double* %9, align 8
  1266. %96 = fcmp uno double %95, %95
  1267. br i1 %96, label %130, label %97
  1268. 97: ; preds = %54
  1269. %98 = load double, double* %10, align 8
  1270. %99 = fcmp uno double %98, %98
  1271. br i1 %99, label %130, label %100
  1272. 100: ; preds = %97
  1273. %101 = load double, double* %11, align 8
  1274. %102 = fcmp uno double %101, %101
  1275. br i1 %102, label %130, label %103
  1276. 103: ; preds = %100
  1277. %104 = load double, double* %9, align 8
  1278. %105 = call double @llvm.fabs.f64(double %104) #9
  1279. %106 = fcmp oeq double %105, 0x7FF0000000000000
  1280. %107 = bitcast double %104 to i64
  1281. %108 = icmp slt i64 %107, 0
  1282. %109 = select i1 %108, i32 -1, i32 1
  1283. %110 = select i1 %106, i32 %109, i32 0
  1284. %111 = icmp ne i32 %110, 0
  1285. br i1 %111, label %130, label %112
  1286. 112: ; preds = %103
  1287. %113 = load double, double* %10, align 8
  1288. %114 = call double @llvm.fabs.f64(double %113) #9
  1289. %115 = fcmp oeq double %114, 0x7FF0000000000000
  1290. %116 = bitcast double %113 to i64
  1291. %117 = icmp slt i64 %116, 0
  1292. %118 = select i1 %117, i32 -1, i32 1
  1293. %119 = select i1 %115, i32 %118, i32 0
  1294. %120 = icmp ne i32 %119, 0
  1295. br i1 %120, label %130, label %121
  1296. 121: ; preds = %112
  1297. %122 = load double, double* %11, align 8
  1298. %123 = call double @llvm.fabs.f64(double %122) #9
  1299. %124 = fcmp oeq double %123, 0x7FF0000000000000
  1300. %125 = bitcast double %122 to i64
  1301. %126 = icmp slt i64 %125, 0
  1302. %127 = select i1 %126, i32 -1, i32 1
  1303. %128 = select i1 %124, i32 %127, i32 0
  1304. %129 = icmp ne i32 %128, 0
  1305. br i1 %129, label %130, label %135
  1306. 130: ; preds = %121, %112, %103, %100, %97, %54
  1307. %131 = load i32*, i32** %7, align 8
  1308. store i32 5, i32* %131, align 4
  1309. %132 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0))
  1310. %133 = load %struct.Point*, %struct.Point** %8, align 8
  1311. %134 = bitcast %struct.Point* %133 to i8*
  1312. call void @free(i8* %134) #7
  1313. store %struct.Point* null, %struct.Point** %4, align 8
  1314. br label %171
  1315. 135: ; preds = %121
  1316. br label %136
  1317. 136: ; preds = %135
  1318. %137 = load i32, i32* %12, align 4
  1319. %138 = add nsw i32 %137, 1
  1320. store i32 %138, i32* %12, align 4
  1321. br label %37
  1322. 139: ; preds = %37
  1323. %140 = load double, double* %9, align 8
  1324. %141 = fcmp oeq double %140, 0.000000e+00
  1325. br i1 %141, label %142, label %147
  1326. 142: ; preds = %139
  1327. %143 = load i32*, i32** %7, align 8
  1328. store i32 1, i32* %143, align 4
  1329. %144 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0))
  1330. %145 = load %struct.Point*, %struct.Point** %8, align 8
  1331. %146 = bitcast %struct.Point* %145 to i8*
  1332. call void @free(i8* %146) #7
  1333. store %struct.Point* null, %struct.Point** %4, align 8
  1334. br label %171
  1335. 147: ; preds = %139
  1336. %148 = load double, double* %10, align 8
  1337. %149 = load double, double* %9, align 8
  1338. %150 = fdiv double %148, %149
  1339. %151 = fptosi double %150 to i32
  1340. %152 = load %struct.Point*, %struct.Point** %8, align 8
  1341. %153 = getelementptr inbounds %struct.Point, %struct.Point* %152, i32 0, i32 0
  1342. store i32 %151, i32* %153, align 8
  1343. %154 = load double, double* %11, align 8
  1344. %155 = load double, double* %9, align 8
  1345. %156 = fdiv double %154, %155
  1346. %157 = fptosi double %156 to i32
  1347. %158 = load %struct.Point*, %struct.Point** %8, align 8
  1348. %159 = getelementptr inbounds %struct.Point, %struct.Point* %158, i32 0, i32 1
  1349. store i32 %157, i32* %159, align 4
  1350. %160 = load double, double* %9, align 8
  1351. %161 = load i32, i32* %6, align 4
  1352. %162 = sitofp i32 %161 to double
  1353. %163 = fdiv double %160, %162
  1354. %164 = load %struct.Point*, %struct.Point** %8, align 8
  1355. %165 = getelementptr inbounds %struct.Point, %struct.Point* %164, i32 0, i32 3
  1356. store double %163, double* %165, align 8
  1357. %166 = load %struct.Point*, %struct.Point** %8, align 8
  1358. %167 = getelementptr inbounds %struct.Point, %struct.Point* %166, i32 0, i32 2
  1359. %168 = getelementptr inbounds [256 x i8], [256 x i8]* %167, i64 0, i64 0
  1360. %169 = call i8* @strcpy(i8* %168, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0)) #7
  1361. %170 = load %struct.Point*, %struct.Point** %8, align 8
  1362. store %struct.Point* %170, %struct.Point** %4, align 8
  1363. br label %171
  1364. 171: ; preds = %147, %142, %130, %49, %33, %25, %19
  1365. %172 = load %struct.Point*, %struct.Point** %4, align 8
  1366. ret %struct.Point* %172
  1367. }
  1368. ; Function Attrs: nounwind
  1369. declare dso_local i8* @strcpy(i8*, i8*) #1
  1370. ; Function Attrs: nounwind readonly
  1371. declare dso_local i64 @strlen(i8*) #5
  1372. ; Function Attrs: argmemonly nounwind willreturn
  1373. declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #6
  1374. ; Function Attrs: argmemonly nounwind willreturn
  1375. declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #6
  1376. define i32 @fused_quickSort(i1 %0, i32* %1, i32 %2, i32 %3, i32* %4, i32 %5) {
  1377. entry:
  1378. br label %6
  1379. 6: ; preds = %entry
  1380. %7 = alloca i32, align 4
  1381. %8 = alloca i32, align 4
  1382. store i32 %5, i32* %7, align 4
  1383. store i32 0, i32* %8, align 4
  1384. br label %9
  1385. 9: ; preds = %6
  1386. %10 = alloca i32*, align 8
  1387. %11 = alloca i32, align 4
  1388. %12 = alloca i32, align 4
  1389. %13 = alloca i32*, align 8
  1390. %14 = alloca i32, align 4
  1391. %15 = alloca i32, align 4
  1392. %16 = alloca i32, align 4
  1393. %17 = alloca i32, align 4
  1394. %18 = alloca i32, align 4
  1395. %19 = alloca i32, align 4
  1396. store i32* %1, i32** %10, align 8
  1397. store i32 %2, i32* %11, align 4
  1398. store i32 %3, i32* %12, align 4
  1399. store i32* %4, i32** %13, align 8
  1400. %20 = load i32, i32* @recursionDepth, align 4
  1401. %21 = add nsw i32 %20, 1
  1402. store i32 %21, i32* @recursionDepth, align 4
  1403. %22 = icmp sgt i32 %21, 1000
  1404. br i1 %22, label %23, label %28
  1405. 23: ; preds = %9
  1406. %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0))
  1407. %25 = load i32*, i32** %13, align 8
  1408. store i32 1, i32* %25, align 4
  1409. %26 = load i32, i32* @recursionDepth, align 4
  1410. %27 = add nsw i32 %26, -1
  1411. store i32 %27, i32* @recursionDepth, align 4
  1412. br label %269
  1413. 28: ; preds = %9
  1414. %29 = load i32*, i32** %10, align 8
  1415. %30 = icmp ne i32* %29, null
  1416. br i1 %30, label %36, label %31
  1417. 31: ; preds = %28
  1418. %32 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0))
  1419. %33 = load i32*, i32** %13, align 8
  1420. store i32 1, i32* %33, align 4
  1421. %34 = load i32, i32* @recursionDepth, align 4
  1422. %35 = add nsw i32 %34, -1
  1423. store i32 %35, i32* @recursionDepth, align 4
  1424. br label %269
  1425. 36: ; preds = %28
  1426. %37 = load i32, i32* %11, align 4
  1427. %38 = icmp slt i32 %37, 0
  1428. br i1 %38, label %48, label %39
  1429. 39: ; preds = %36
  1430. %40 = load i32, i32* %12, align 4
  1431. %41 = icmp slt i32 %40, 0
  1432. br i1 %41, label %48, label %42
  1433. 42: ; preds = %39
  1434. %43 = load i32, i32* %11, align 4
  1435. %44 = icmp sge i32 %43, 1000
  1436. br i1 %44, label %48, label %45
  1437. 45: ; preds = %42
  1438. %46 = load i32, i32* %12, align 4
  1439. %47 = icmp sge i32 %46, 1000
  1440. br i1 %47, label %48, label %53
  1441. 48: ; preds = %45, %42, %39, %36
  1442. %49 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0))
  1443. %50 = load i32*, i32** %13, align 8
  1444. store i32 1, i32* %50, align 4
  1445. %51 = load i32, i32* @recursionDepth, align 4
  1446. %52 = add nsw i32 %51, -1
  1447. store i32 %52, i32* @recursionDepth, align 4
  1448. br label %269
  1449. 53: ; preds = %45
  1450. %54 = load i32, i32* %11, align 4
  1451. %55 = load i32, i32* %12, align 4
  1452. %56 = icmp slt i32 %54, %55
  1453. br i1 %56, label %57, label %254
  1454. 57: ; preds = %53
  1455. %58 = load i32, i32* %11, align 4
  1456. %59 = load i32, i32* %12, align 4
  1457. %60 = load i32, i32* %11, align 4
  1458. %61 = sub nsw i32 %59, %60
  1459. %62 = sdiv i32 %61, 2
  1460. %63 = add nsw i32 %58, %62
  1461. store i32 %63, i32* %14, align 4
  1462. %64 = load i32*, i32** %10, align 8
  1463. %65 = load i32, i32* %11, align 4
  1464. %66 = sext i32 %65 to i64
  1465. %67 = getelementptr inbounds i32, i32* %64, i64 %66
  1466. %68 = load i32, i32* %67, align 4
  1467. %69 = load i32*, i32** %10, align 8
  1468. %70 = load i32, i32* %14, align 4
  1469. %71 = sext i32 %70 to i64
  1470. %72 = getelementptr inbounds i32, i32* %69, i64 %71
  1471. %73 = load i32, i32* %72, align 4
  1472. %74 = icmp sle i32 %68, %73
  1473. br i1 %74, label %75, label %107
  1474. 75: ; preds = %57
  1475. %76 = load i32*, i32** %10, align 8
  1476. %77 = load i32, i32* %14, align 4
  1477. %78 = sext i32 %77 to i64
  1478. %79 = getelementptr inbounds i32, i32* %76, i64 %78
  1479. %80 = load i32, i32* %79, align 4
  1480. %81 = load i32*, i32** %10, align 8
  1481. %82 = load i32, i32* %12, align 4
  1482. %83 = sext i32 %82 to i64
  1483. %84 = getelementptr inbounds i32, i32* %81, i64 %83
  1484. %85 = load i32, i32* %84, align 4
  1485. %86 = icmp sle i32 %80, %85
  1486. br i1 %86, label %87, label %89
  1487. 87: ; preds = %75
  1488. %88 = load i32, i32* %14, align 4
  1489. store i32 %88, i32* %15, align 4
  1490. br label %106
  1491. 89: ; preds = %75
  1492. %90 = load i32*, i32** %10, align 8
  1493. %91 = load i32, i32* %11, align 4
  1494. %92 = sext i32 %91 to i64
  1495. %93 = getelementptr inbounds i32, i32* %90, i64 %92
  1496. %94 = load i32, i32* %93, align 4
  1497. %95 = load i32*, i32** %10, align 8
  1498. %96 = load i32, i32* %12, align 4
  1499. %97 = sext i32 %96 to i64
  1500. %98 = getelementptr inbounds i32, i32* %95, i64 %97
  1501. %99 = load i32, i32* %98, align 4
  1502. %100 = icmp sle i32 %94, %99
  1503. br i1 %100, label %101, label %103
  1504. 101: ; preds = %89
  1505. %102 = load i32, i32* %12, align 4
  1506. store i32 %102, i32* %15, align 4
  1507. br label %105
  1508. 103: ; preds = %89
  1509. %104 = load i32, i32* %11, align 4
  1510. store i32 %104, i32* %15, align 4
  1511. br label %105
  1512. 105: ; preds = %103, %101
  1513. br label %106
  1514. 106: ; preds = %105, %87
  1515. br label %139
  1516. 107: ; preds = %57
  1517. %108 = load i32*, i32** %10, align 8
  1518. %109 = load i32, i32* %11, align 4
  1519. %110 = sext i32 %109 to i64
  1520. %111 = getelementptr inbounds i32, i32* %108, i64 %110
  1521. %112 = load i32, i32* %111, align 4
  1522. %113 = load i32*, i32** %10, align 8
  1523. %114 = load i32, i32* %12, align 4
  1524. %115 = sext i32 %114 to i64
  1525. %116 = getelementptr inbounds i32, i32* %113, i64 %115
  1526. %117 = load i32, i32* %116, align 4
  1527. %118 = icmp sle i32 %112, %117
  1528. br i1 %118, label %119, label %121
  1529. 119: ; preds = %107
  1530. %120 = load i32, i32* %11, align 4
  1531. store i32 %120, i32* %15, align 4
  1532. br label %138
  1533. 121: ; preds = %107
  1534. %122 = load i32*, i32** %10, align 8
  1535. %123 = load i32, i32* %14, align 4
  1536. %124 = sext i32 %123 to i64
  1537. %125 = getelementptr inbounds i32, i32* %122, i64 %124
  1538. %126 = load i32, i32* %125, align 4
  1539. %127 = load i32*, i32** %10, align 8
  1540. %128 = load i32, i32* %12, align 4
  1541. %129 = sext i32 %128 to i64
  1542. %130 = getelementptr inbounds i32, i32* %127, i64 %129
  1543. %131 = load i32, i32* %130, align 4
  1544. %132 = icmp sle i32 %126, %131
  1545. br i1 %132, label %133, label %135
  1546. 133: ; preds = %121
  1547. %134 = load i32, i32* %12, align 4
  1548. store i32 %134, i32* %15, align 4
  1549. br label %137
  1550. 135: ; preds = %121
  1551. %136 = load i32, i32* %14, align 4
  1552. store i32 %136, i32* %15, align 4
  1553. br label %137
  1554. 137: ; preds = %135, %133
  1555. br label %138
  1556. 138: ; preds = %137, %119
  1557. br label %139
  1558. 139: ; preds = %138, %106
  1559. %140 = load i32*, i32** %10, align 8
  1560. %141 = load i32, i32* %12, align 4
  1561. %142 = sext i32 %141 to i64
  1562. %143 = getelementptr inbounds i32, i32* %140, i64 %142
  1563. %144 = load i32, i32* %143, align 4
  1564. store i32 %144, i32* %16, align 4
  1565. %145 = load i32*, i32** %10, align 8
  1566. %146 = load i32, i32* %15, align 4
  1567. %147 = sext i32 %146 to i64
  1568. %148 = getelementptr inbounds i32, i32* %145, i64 %147
  1569. %149 = load i32, i32* %148, align 4
  1570. %150 = load i32*, i32** %10, align 8
  1571. %151 = load i32, i32* %12, align 4
  1572. %152 = sext i32 %151 to i64
  1573. %153 = getelementptr inbounds i32, i32* %150, i64 %152
  1574. store i32 %149, i32* %153, align 4
  1575. %154 = load i32, i32* %16, align 4
  1576. %155 = load i32*, i32** %10, align 8
  1577. %156 = load i32, i32* %15, align 4
  1578. %157 = sext i32 %156 to i64
  1579. %158 = getelementptr inbounds i32, i32* %155, i64 %157
  1580. store i32 %154, i32* %158, align 4
  1581. %159 = load i32*, i32** %10, align 8
  1582. %160 = load i32, i32* %12, align 4
  1583. %161 = sext i32 %160 to i64
  1584. %162 = getelementptr inbounds i32, i32* %159, i64 %161
  1585. %163 = load i32, i32* %162, align 4
  1586. store i32 %163, i32* %17, align 4
  1587. %164 = load i32, i32* %11, align 4
  1588. %165 = sub nsw i32 %164, 1
  1589. store i32 %165, i32* %18, align 4
  1590. %166 = load i32, i32* %11, align 4
  1591. store i32 %166, i32* %19, align 4
  1592. br label %167
  1593. 167: ; preds = %204, %139
  1594. %168 = load i32, i32* %19, align 4
  1595. %169 = load i32, i32* %12, align 4
  1596. %170 = icmp slt i32 %168, %169
  1597. br i1 %170, label %171, label %207
  1598. 171: ; preds = %167
  1599. %172 = load i32*, i32** %10, align 8
  1600. %173 = load i32, i32* %19, align 4
  1601. %174 = sext i32 %173 to i64
  1602. %175 = getelementptr inbounds i32, i32* %172, i64 %174
  1603. %176 = load i32, i32* %175, align 4
  1604. %177 = load i32, i32* %17, align 4
  1605. %178 = icmp sle i32 %176, %177
  1606. br i1 %178, label %179, label %203
  1607. 179: ; preds = %171
  1608. %180 = load i32, i32* %18, align 4
  1609. %181 = add nsw i32 %180, 1
  1610. store i32 %181, i32* %18, align 4
  1611. %182 = load i32*, i32** %10, align 8
  1612. %183 = load i32, i32* %18, align 4
  1613. %184 = sext i32 %183 to i64
  1614. %185 = getelementptr inbounds i32, i32* %182, i64 %184
  1615. %186 = load i32, i32* %185, align 4
  1616. store i32 %186, i32* %16, align 4
  1617. %187 = load i32*, i32** %10, align 8
  1618. %188 = load i32, i32* %19, align 4
  1619. %189 = sext i32 %188 to i64
  1620. %190 = getelementptr inbounds i32, i32* %187, i64 %189
  1621. %191 = load i32, i32* %190, align 4
  1622. %192 = load i32*, i32** %10, align 8
  1623. %193 = load i32, i32* %18, align 4
  1624. %194 = sext i32 %193 to i64
  1625. %195 = getelementptr inbounds i32, i32* %192, i64 %194
  1626. store i32 %191, i32* %195, align 4
  1627. %196 = load i32, i32* %16, align 4
  1628. %197 = load i32*, i32** %10, align 8
  1629. %198 = load i32, i32* %19, align 4
  1630. %199 = sext i32 %198 to i64
  1631. %200 = getelementptr inbounds i32, i32* %197, i64 %199
  1632. store i32 %196, i32* %200, align 4
  1633. %201 = load i32, i32* @globalCounter, align 4
  1634. %202 = add nsw i32 %201, 1
  1635. store i32 %202, i32* @globalCounter, align 4
  1636. br label %203
  1637. 203: ; preds = %179, %171
  1638. br label %204
  1639. 204: ; preds = %203
  1640. %205 = load i32, i32* %19, align 4
  1641. %206 = add nsw i32 %205, 1
  1642. store i32 %206, i32* %19, align 4
  1643. br label %167
  1644. 207: ; preds = %167
  1645. %208 = load i32*, i32** %10, align 8
  1646. %209 = load i32, i32* %18, align 4
  1647. %210 = add nsw i32 %209, 1
  1648. %211 = sext i32 %210 to i64
  1649. %212 = getelementptr inbounds i32, i32* %208, i64 %211
  1650. %213 = load i32, i32* %212, align 4
  1651. store i32 %213, i32* %16, align 4
  1652. %214 = load i32*, i32** %10, align 8
  1653. %215 = load i32, i32* %12, align 4
  1654. %216 = sext i32 %215 to i64
  1655. %217 = getelementptr inbounds i32, i32* %214, i64 %216
  1656. %218 = load i32, i32* %217, align 4
  1657. %219 = load i32*, i32** %10, align 8
  1658. %220 = load i32, i32* %18, align 4
  1659. %221 = add nsw i32 %220, 1
  1660. %222 = sext i32 %221 to i64
  1661. %223 = getelementptr inbounds i32, i32* %219, i64 %222
  1662. store i32 %218, i32* %223, align 4
  1663. %224 = load i32, i32* %16, align 4
  1664. %225 = load i32*, i32** %10, align 8
  1665. %226 = load i32, i32* %12, align 4
  1666. %227 = sext i32 %226 to i64
  1667. %228 = getelementptr inbounds i32, i32* %225, i64 %227
  1668. store i32 %224, i32* %228, align 4
  1669. %229 = load i32*, i32** %10, align 8
  1670. %230 = load i32, i32* %11, align 4
  1671. %231 = load i32, i32* %18, align 4
  1672. %232 = load i32*, i32** %13, align 8
  1673. %233 = call i32 @fused_quickSort(i1 false, i32* %229, i32 %230, i32 %231, i32* %232, i32 0)
  1674. %234 = load i32*, i32** %13, align 8
  1675. %235 = load i32, i32* %234, align 4
  1676. %236 = icmp ne i32 %235, 0
  1677. br i1 %236, label %237, label %240
  1678. 237: ; preds = %207
  1679. %238 = load i32, i32* @recursionDepth, align 4
  1680. %239 = add nsw i32 %238, -1
  1681. store i32 %239, i32* @recursionDepth, align 4
  1682. br label %269
  1683. 240: ; preds = %207
  1684. %241 = load i32*, i32** %10, align 8
  1685. %242 = load i32, i32* %18, align 4
  1686. %243 = add nsw i32 %242, 2
  1687. %244 = load i32, i32* %12, align 4
  1688. %245 = load i32*, i32** %13, align 8
  1689. %246 = call i32 @fused_quickSort(i1 false, i32* %241, i32 %243, i32 %244, i32* %245, i32 0)
  1690. %247 = load i32*, i32** %13, align 8
  1691. %248 = load i32, i32* %247, align 4
  1692. %249 = icmp ne i32 %248, 0
  1693. br i1 %249, label %250, label %253
  1694. 250: ; preds = %240
  1695. %251 = load i32, i32* @recursionDepth, align 4
  1696. %252 = add nsw i32 %251, -1
  1697. store i32 %252, i32* @recursionDepth, align 4
  1698. br label %269
  1699. 253: ; preds = %240
  1700. br label %254
  1701. 254: ; preds = %253, %53
  1702. %255 = load i32, i32* @recursionDepth, align 4
  1703. %256 = add nsw i32 %255, -1
  1704. store i32 %256, i32* @recursionDepth, align 4
  1705. br label %257
  1706. 257: ; preds = %254, %260
  1707. %258 = load i32, i32* %7, align 4
  1708. %259 = icmp ne i32 %258, 0
  1709. br i1 %259, label %260, label %267
  1710. 260: ; preds = %257
  1711. %261 = load i32, i32* %7, align 4
  1712. %262 = and i32 %261, 1
  1713. %263 = load i32, i32* %8, align 4
  1714. %264 = add nsw i32 %263, %262
  1715. store i32 %264, i32* %8, align 4
  1716. %265 = load i32, i32* %7, align 4
  1717. %266 = ashr i32 %265, 1
  1718. store i32 %266, i32* %7, align 4
  1719. br label %257
  1720. 267: ; preds = %257
  1721. %268 = load i32, i32* %8, align 4
  1722. ret i32 %268
  1723. 269: ; preds = %250, %237, %48, %31, %23
  1724. ret i32 0
  1725. }
  1726. define i32 @fused_performSimpleCalculations(i1 %0, i32* %1, i32 %2) {
  1727. entry:
  1728. br label %3
  1729. 3: ; preds = %entry
  1730. %4 = alloca i32*, align 8
  1731. %5 = alloca i32, align 4
  1732. %6 = alloca [100 x i32], align 16
  1733. %7 = alloca i32, align 4
  1734. %8 = alloca i32, align 4
  1735. %9 = alloca i32, align 4
  1736. %10 = alloca i32, align 4
  1737. %11 = alloca i32, align 4
  1738. store i32* %1, i32** %4, align 8
  1739. store i32 %2, i32* %5, align 4
  1740. store i32 0, i32* %7, align 4
  1741. br label %12
  1742. 12: ; preds = %3
  1743. %13 = alloca i32, align 4
  1744. store i32 100, i32* %13, align 4
  1745. %14 = load i32, i32* %13, align 4
  1746. %15 = icmp sgt i32 %14, 50
  1747. br i1 %15, label %16, label %21
  1748. 16: ; preds = %12
  1749. %17 = load i32, i32* %13, align 4
  1750. %18 = mul nsw i32 %17, 2
  1751. %19 = load i32, i32* @calculationResult, align 4
  1752. %20 = add nsw i32 %19, %18
  1753. store i32 %20, i32* @calculationResult, align 4
  1754. br label %38
  1755. 21: ; preds = %12
  1756. %22 = load i32, i32* %13, align 4
  1757. %23 = sdiv i32 %22, 2
  1758. %24 = load i32, i32* @calculationResult, align 4
  1759. %25 = add nsw i32 %24, %23
  1760. store i32 %25, i32* @calculationResult, align 4
  1761. br label %26
  1762. 26: ; preds = %21
  1763. %27 = load i32, i32* %7, align 4
  1764. %28 = load i32, i32* %5, align 4
  1765. %29 = icmp slt i32 %27, %28
  1766. br i1 %29, label %30, label %34
  1767. 30: ; preds = %26
  1768. %31 = load i32, i32* %7, align 4
  1769. %32 = sext i32 %31 to i64
  1770. %33 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %32
  1771. store i32 1, i32* %33, align 4
  1772. br label %35
  1773. 34: ; preds = %26
  1774. store i32 1, i32* %8, align 4
  1775. br label %48
  1776. 35: ; preds = %30
  1777. %36 = load i32, i32* %7, align 4
  1778. %37 = add nsw i32 %36, 1
  1779. store i32 %37, i32* %7, align 4
  1780. br label %38
  1781. 38: ; preds = %16, %35
  1782. %39 = load i32, i32* %13, align 4
  1783. %40 = srem i32 %39, 3
  1784. %41 = icmp eq i32 %40, 0
  1785. br i1 %41, label %42, label %45
  1786. 42: ; preds = %38
  1787. %43 = load i32, i32* @calculationResult, align 4
  1788. %44 = mul nsw i32 %43, 3
  1789. store i32 %44, i32* @calculationResult, align 4
  1790. br label %98
  1791. 45: ; preds = %38
  1792. %46 = load i32, i32* @calculationResult, align 4
  1793. %47 = add nsw i32 %46, 3
  1794. store i32 %47, i32* @calculationResult, align 4
  1795. br label %48
  1796. 48: ; preds = %45, %83, %34
  1797. %49 = load i32, i32* %8, align 4
  1798. %50 = load i32, i32* %5, align 4
  1799. %51 = icmp slt i32 %49, %50
  1800. br i1 %51, label %52, label %53
  1801. 52: ; preds = %48
  1802. store i32 0, i32* %9, align 4
  1803. br label %54
  1804. 53: ; preds = %48
  1805. store i32 0, i32* %10, align 4
  1806. store i32 0, i32* %11, align 4
  1807. br label %110
  1808. 54: ; preds = %52
  1809. %55 = load i32, i32* %9, align 4
  1810. %56 = load i32, i32* %8, align 4
  1811. %57 = icmp slt i32 %55, %56
  1812. br i1 %57, label %58, label %70
  1813. 58: ; preds = %54
  1814. %59 = load i32*, i32** %4, align 8
  1815. %60 = load i32, i32* %8, align 4
  1816. %61 = sext i32 %60 to i64
  1817. %62 = getelementptr inbounds i32, i32* %59, i64 %61
  1818. %63 = load i32, i32* %62, align 4
  1819. %64 = load i32*, i32** %4, align 8
  1820. %65 = load i32, i32* %9, align 4
  1821. %66 = sext i32 %65 to i64
  1822. %67 = getelementptr inbounds i32, i32* %64, i64 %66
  1823. %68 = load i32, i32* %67, align 4
  1824. %69 = icmp sgt i32 %63, %68
  1825. br i1 %69, label %71, label %82
  1826. 70: ; preds = %54
  1827. br label %83
  1828. 71: ; preds = %58
  1829. %72 = load i32, i32* %8, align 4
  1830. %73 = sext i32 %72 to i64
  1831. %74 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %73
  1832. %75 = load i32, i32* %74, align 4
  1833. %76 = load i32, i32* %9, align 4
  1834. %77 = sext i32 %76 to i64
  1835. %78 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %77
  1836. %79 = load i32, i32* %78, align 4
  1837. %80 = add nsw i32 %79, 1
  1838. %81 = icmp slt i32 %75, %80
  1839. br i1 %81, label %86, label %82
  1840. 82: ; preds = %86, %71, %58
  1841. br label %95
  1842. 83: ; preds = %70
  1843. %84 = load i32, i32* %8, align 4
  1844. %85 = add nsw i32 %84, 1
  1845. store i32 %85, i32* %8, align 4
  1846. br label %48
  1847. 86: ; preds = %71
  1848. %87 = load i32, i32* %9, align 4
  1849. %88 = sext i32 %87 to i64
  1850. %89 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %88
  1851. %90 = load i32, i32* %89, align 4
  1852. %91 = add nsw i32 %90, 1
  1853. %92 = load i32, i32* %8, align 4
  1854. %93 = sext i32 %92 to i64
  1855. %94 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %93
  1856. store i32 %91, i32* %94, align 4
  1857. br label %82
  1858. 95: ; preds = %82
  1859. %96 = load i32, i32* %9, align 4
  1860. %97 = add nsw i32 %96, 1
  1861. store i32 %97, i32* %9, align 4
  1862. br label %98
  1863. 98: ; preds = %42, %95
  1864. %99 = load i32, i32* @calculationResult, align 4
  1865. %100 = icmp sge i32 %99, 150
  1866. br i1 %100, label %101, label %107
  1867. 101: ; preds = %98
  1868. %102 = load i32, i32* @calculationResult, align 4
  1869. %103 = icmp sle i32 %102, 300
  1870. br i1 %103, label %104, label %107
  1871. 104: ; preds = %101
  1872. %105 = load i32, i32* @calculationResult, align 4
  1873. %106 = sub nsw i32 %105, 50
  1874. store i32 %106, i32* @calculationResult, align 4
  1875. br label %132
  1876. 107: ; preds = %101, %98
  1877. %108 = load i32, i32* @calculationResult, align 4
  1878. %109 = add nsw i32 %108, 50
  1879. store i32 %109, i32* @calculationResult, align 4
  1880. br label %110
  1881. 110: ; preds = %107, %53
  1882. %111 = load i32, i32* %11, align 4
  1883. %112 = load i32, i32* %5, align 4
  1884. %113 = icmp slt i32 %111, %112
  1885. br i1 %113, label %114, label %121
  1886. 114: ; preds = %110
  1887. %115 = load i32, i32* %10, align 4
  1888. %116 = load i32, i32* %11, align 4
  1889. %117 = sext i32 %116 to i64
  1890. %118 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %117
  1891. %119 = load i32, i32* %118, align 4
  1892. %120 = icmp slt i32 %115, %119
  1893. br i1 %120, label %123, label %128
  1894. 121: ; preds = %110
  1895. %122 = load i32, i32* %10, align 4
  1896. ret i32 %122
  1897. 123: ; preds = %114
  1898. %124 = load i32, i32* %11, align 4
  1899. %125 = sext i32 %124 to i64
  1900. %126 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %125
  1901. %127 = load i32, i32* %126, align 4
  1902. store i32 %127, i32* %10, align 4
  1903. br label %128
  1904. 128: ; preds = %123, %114
  1905. br label %129
  1906. 129: ; preds = %128
  1907. %130 = load i32, i32* %11, align 4
  1908. %131 = add nsw i32 %130, 1
  1909. store i32 %131, i32* %11, align 4
  1910. br label %132
  1911. 132: ; preds = %104, %129
  1912. %133 = load i32, i32* @calculationResult, align 4
  1913. %134 = srem i32 %133, 2
  1914. %135 = icmp eq i32 %134, 0
  1915. br i1 %135, label %136, label %139
  1916. 136: ; preds = %132
  1917. %137 = load i32, i32* @calculationResult, align 4
  1918. %138 = sdiv i32 %137, 2
  1919. store i32 %138, i32* @calculationResult, align 4
  1920. br label %142
  1921. 139: ; preds = %132
  1922. %140 = load i32, i32* @calculationResult, align 4
  1923. %141 = mul nsw i32 %140, 2
  1924. store i32 %141, i32* @calculationResult, align 4
  1925. br label %142
  1926. 142: ; preds = %139, %136
  1927. %143 = load i32, i32* @calculationResult, align 4
  1928. %144 = srem i32 %143, 10
  1929. %145 = icmp slt i32 %144, 5
  1930. br i1 %145, label %146, label %149
  1931. 146: ; preds = %142
  1932. %147 = load i32, i32* @calculationResult, align 4
  1933. %148 = add nsw i32 %147, 5
  1934. store i32 %148, i32* @calculationResult, align 4
  1935. br label %152
  1936. 149: ; preds = %142
  1937. %150 = load i32, i32* @calculationResult, align 4
  1938. %151 = sub nsw i32 %150, 5
  1939. store i32 %151, i32* @calculationResult, align 4
  1940. br label %152
  1941. 152: ; preds = %149, %146
  1942. %153 = load i32, i32* @calculationResult, align 4
  1943. %154 = icmp sgt i32 %153, 1000
  1944. br i1 %154, label %155, label %156
  1945. 155: ; preds = %152
  1946. store i32 1000, i32* @calculationResult, align 4
  1947. br label %159
  1948. 156: ; preds = %152
  1949. %157 = load i32, i32* @calculationResult, align 4
  1950. %158 = add nsw i32 %157, 10
  1951. store i32 %158, i32* @calculationResult, align 4
  1952. br label %159
  1953. 159: ; preds = %156, %155
  1954. %160 = load i32, i32* @calculationResult, align 4
  1955. %161 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.27, i64 0, i64 0), i32 %160)
  1956. ret i32 0
  1957. }
  1958. define %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 %0, i32 %1) {
  1959. entry:
  1960. br label %2
  1961. 2: ; preds = %entry
  1962. %3 = alloca i32, align 4
  1963. %4 = alloca i32, align 4
  1964. store i32 %1, i32* %4, align 4
  1965. %5 = load i32, i32* %4, align 4
  1966. %6 = sext i32 %5 to i64
  1967. %7 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %6
  1968. %8 = load i32, i32* %7, align 4
  1969. %9 = icmp ne i32 %8, -1
  1970. br i1 %9, label %10, label %15
  1971. 10: ; preds = %2
  1972. %11 = load i32, i32* %4, align 4
  1973. %12 = sext i32 %11 to i64
  1974. %13 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %12
  1975. %14 = load i32, i32* %13, align 4
  1976. store i32 %14, i32* %3, align 4
  1977. br label %18
  1978. 15: ; preds = %2
  1979. %16 = load i32, i32* %4, align 4
  1980. %17 = icmp sle i32 %16, 1
  1981. br i1 %17, label %20, label %22
  1982. 18: ; preds = %20, %10
  1983. %19 = load i32, i32* %3, align 4
  1984. %struct.target = insertvalue %fused_return_projectA_main_memoizedFib zeroinitializer, i32 %19, 0
  1985. %struct.bunker1 = insertvalue %fused_return_projectA_main_memoizedFib %struct.target, i32 0, 1
  1986. ret %fused_return_projectA_main_memoizedFib %struct.bunker1
  1987. 20: ; preds = %15
  1988. %21 = load i32, i32* %4, align 4
  1989. store i32 %21, i32* %3, align 4
  1990. br label %18
  1991. 22: ; preds = %15
  1992. %23 = load i32, i32* %4, align 4
  1993. %24 = sub nsw i32 %23, 1
  1994. %25 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %24)
  1995. %extracted_target_return2 = extractvalue %fused_return_projectA_main_memoizedFib %25, 0
  1996. %26 = load i32, i32* %4, align 4
  1997. %27 = sub nsw i32 %26, 2
  1998. %28 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %27)
  1999. %extracted_target_return = extractvalue %fused_return_projectA_main_memoizedFib %28, 0
  2000. %29 = add nsw i32 %extracted_target_return2, %extracted_target_return
  2001. %30 = load i32, i32* %4, align 4
  2002. %31 = sext i32 %30 to i64
  2003. %32 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %31
  2004. store i32 %29, i32* %32, align 4
  2005. %33 = load i32, i32* %4, align 4
  2006. %34 = sext i32 %33 to i64
  2007. %35 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %34
  2008. %36 = load i32, i32* %35, align 4
  2009. store i32 %36, i32* %3, align 4
  2010. br label %37
  2011. 37: ; preds = %22
  2012. %38 = alloca i32, align 4
  2013. %39 = alloca %struct.DynamicArray*, align 8
  2014. %40 = alloca i32, align 4
  2015. %41 = alloca %struct.Matrix*, align 8
  2016. %42 = alloca %struct.Matrix*, align 8
  2017. %43 = alloca i32, align 4
  2018. %44 = alloca i32, align 4
  2019. %45 = alloca %struct.Matrix*, align 8
  2020. %46 = alloca i32, align 4
  2021. %47 = alloca %struct.Node*, align 8
  2022. %48 = alloca i32, align 4
  2023. %49 = alloca i32, align 4
  2024. %50 = alloca %struct.Node*, align 8
  2025. %51 = alloca %struct.Node*, align 8
  2026. %52 = alloca i32, align 4
  2027. %53 = alloca %struct.Node*, align 8
  2028. %54 = alloca i32, align 4
  2029. %55 = alloca i32, align 4
  2030. %56 = alloca %struct.Node*, align 8
  2031. %57 = call i64 @time(i64* null) #7
  2032. %58 = trunc i64 %57 to i32
  2033. call void @srand(i32 %58) #7
  2034. %59 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 false, i32 10, [100 x i32]* null, i32 0)
  2035. %extracted_bunker_return = extractvalue %fused_return_createDynamicArray_processMatrix %59, 1
  2036. store %struct.DynamicArray* %extracted_bunker_return, %struct.DynamicArray** %39, align 8
  2037. %60 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2038. %61 = icmp ne %struct.DynamicArray* %60, null
  2039. br i1 %61, label %65, label %62
  2040. 62: ; preds = %37
  2041. %63 = call i8* @getErrorMessage()
  2042. %64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %63)
  2043. store i32 -1, i32* %38, align 4
  2044. br label %361
  2045. 65: ; preds = %37
  2046. store i32 0, i32* %40, align 4
  2047. br label %66
  2048. 66: ; preds = %79, %65
  2049. %67 = load i32, i32* %40, align 4
  2050. %68 = icmp slt i32 %67, 15
  2051. br i1 %68, label %69, label %82
  2052. 69: ; preds = %66
  2053. %70 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2054. %71 = call i32 @rand() #7
  2055. %72 = srem i32 %71, 100
  2056. call void @pushBack(%struct.DynamicArray* %70, i32 %72)
  2057. %73 = load i8*, i8** @globalErrorMessage, align 8
  2058. %74 = icmp ne i8* %73, null
  2059. br i1 %74, label %75, label %78
  2060. 75: ; preds = %69
  2061. %76 = call i8* @getErrorMessage()
  2062. %77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), i8* %76)
  2063. br label %82
  2064. 78: ; preds = %69
  2065. br label %79
  2066. 79: ; preds = %78
  2067. %80 = load i32, i32* %40, align 4
  2068. %81 = add nsw i32 %80, 1
  2069. store i32 %81, i32* %40, align 4
  2070. br label %66
  2071. 82: ; preds = %75, %66
  2072. %83 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  2073. store %struct.Matrix* %83, %struct.Matrix** %41, align 8
  2074. %84 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null)
  2075. store %struct.Matrix* %84, %struct.Matrix** %42, align 8
  2076. %85 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2077. %86 = icmp ne %struct.Matrix* %85, null
  2078. br i1 %86, label %87, label %90
  2079. 87: ; preds = %82
  2080. %88 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2081. %89 = icmp ne %struct.Matrix* %88, null
  2082. br i1 %89, label %111, label %90
  2083. 90: ; preds = %87, %82
  2084. %91 = call i8* @getErrorMessage()
  2085. %92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %91)
  2086. %93 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2087. %94 = icmp ne %struct.Matrix* %93, null
  2088. br i1 %94, label %95, label %98
  2089. 95: ; preds = %90
  2090. %96 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2091. %97 = bitcast %struct.Matrix* %96 to i8*
  2092. call void @free(i8* %97) #7
  2093. br label %98
  2094. 98: ; preds = %95, %90
  2095. %99 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2096. %100 = icmp ne %struct.Matrix* %99, null
  2097. br i1 %100, label %101, label %104
  2098. 101: ; preds = %98
  2099. %102 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2100. %103 = bitcast %struct.Matrix* %102 to i8*
  2101. call void @free(i8* %103) #7
  2102. br label %104
  2103. 104: ; preds = %101, %98
  2104. %105 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2105. %106 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %105, i32 0, i32 0
  2106. %107 = load i32*, i32** %106, align 8
  2107. %108 = bitcast i32* %107 to i8*
  2108. call void @free(i8* %108) #7
  2109. %109 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2110. %110 = bitcast %struct.DynamicArray* %109 to i8*
  2111. call void @free(i8* %110) #7
  2112. store i32 -1, i32* %38, align 4
  2113. br label %361
  2114. 111: ; preds = %87
  2115. store i32 0, i32* %43, align 4
  2116. br label %112
  2117. 112: ; preds = %148, %111
  2118. %113 = load i32, i32* %43, align 4
  2119. %114 = icmp slt i32 %113, 3
  2120. br i1 %114, label %115, label %151
  2121. 115: ; preds = %112
  2122. store i32 0, i32* %44, align 4
  2123. br label %116
  2124. 116: ; preds = %144, %115
  2125. %117 = load i32, i32* %44, align 4
  2126. %118 = icmp slt i32 %117, 3
  2127. br i1 %118, label %119, label %147
  2128. 119: ; preds = %116
  2129. %120 = call i32 @rand() #7
  2130. %121 = srem i32 %120, 10
  2131. %122 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2132. %123 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %122, i32 0, i32 0
  2133. %124 = load i32**, i32*** %123, align 8
  2134. %125 = load i32, i32* %43, align 4
  2135. %126 = sext i32 %125 to i64
  2136. %127 = getelementptr inbounds i32*, i32** %124, i64 %126
  2137. %128 = load i32*, i32** %127, align 8
  2138. %129 = load i32, i32* %44, align 4
  2139. %130 = sext i32 %129 to i64
  2140. %131 = getelementptr inbounds i32, i32* %128, i64 %130
  2141. store i32 %121, i32* %131, align 4
  2142. %132 = call i32 @rand() #7
  2143. %133 = srem i32 %132, 10
  2144. %134 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2145. %135 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %134, i32 0, i32 0
  2146. %136 = load i32**, i32*** %135, align 8
  2147. %137 = load i32, i32* %43, align 4
  2148. %138 = sext i32 %137 to i64
  2149. %139 = getelementptr inbounds i32*, i32** %136, i64 %138
  2150. %140 = load i32*, i32** %139, align 8
  2151. %141 = load i32, i32* %44, align 4
  2152. %142 = sext i32 %141 to i64
  2153. %143 = getelementptr inbounds i32, i32* %140, i64 %142
  2154. store i32 %133, i32* %143, align 4
  2155. br label %144
  2156. 144: ; preds = %119
  2157. %145 = load i32, i32* %44, align 4
  2158. %146 = add nsw i32 %145, 1
  2159. store i32 %146, i32* %44, align 4
  2160. br label %116
  2161. 147: ; preds = %116
  2162. br label %148
  2163. 148: ; preds = %147
  2164. %149 = load i32, i32* %43, align 4
  2165. %150 = add nsw i32 %149, 1
  2166. store i32 %150, i32* %43, align 4
  2167. br label %112
  2168. 151: ; preds = %112
  2169. %152 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2170. %153 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2171. %154 = call %struct.Matrix* @multiplyMatrices(%struct.Matrix* %152, %struct.Matrix* %153)
  2172. store %struct.Matrix* %154, %struct.Matrix** %45, align 8
  2173. %155 = load %struct.Matrix*, %struct.Matrix** %45, align 8
  2174. %156 = icmp ne %struct.Matrix* %155, null
  2175. br i1 %156, label %205, label %157
  2176. 157: ; preds = %151
  2177. %158 = call i8* @getErrorMessage()
  2178. %159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %158)
  2179. store i32 0, i32* %46, align 4
  2180. br label %160
  2181. 160: ; preds = %183, %157
  2182. %161 = load i32, i32* %46, align 4
  2183. %162 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2184. %163 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %162, i32 0, i32 1
  2185. %164 = load i32, i32* %163, align 8
  2186. %165 = icmp slt i32 %161, %164
  2187. br i1 %165, label %166, label %186
  2188. 166: ; preds = %160
  2189. %167 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2190. %168 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %167, i32 0, i32 0
  2191. %169 = load i32**, i32*** %168, align 8
  2192. %170 = load i32, i32* %46, align 4
  2193. %171 = sext i32 %170 to i64
  2194. %172 = getelementptr inbounds i32*, i32** %169, i64 %171
  2195. %173 = load i32*, i32** %172, align 8
  2196. %174 = bitcast i32* %173 to i8*
  2197. call void @free(i8* %174) #7
  2198. %175 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2199. %176 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %175, i32 0, i32 0
  2200. %177 = load i32**, i32*** %176, align 8
  2201. %178 = load i32, i32* %46, align 4
  2202. %179 = sext i32 %178 to i64
  2203. %180 = getelementptr inbounds i32*, i32** %177, i64 %179
  2204. %181 = load i32*, i32** %180, align 8
  2205. %182 = bitcast i32* %181 to i8*
  2206. call void @free(i8* %182) #7
  2207. br label %183
  2208. 183: ; preds = %166
  2209. %184 = load i32, i32* %46, align 4
  2210. %185 = add nsw i32 %184, 1
  2211. store i32 %185, i32* %46, align 4
  2212. br label %160
  2213. 186: ; preds = %160
  2214. %187 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2215. %188 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %187, i32 0, i32 0
  2216. %189 = load i32**, i32*** %188, align 8
  2217. %190 = bitcast i32** %189 to i8*
  2218. call void @free(i8* %190) #7
  2219. %191 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2220. %192 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %191, i32 0, i32 0
  2221. %193 = load i32**, i32*** %192, align 8
  2222. %194 = bitcast i32** %193 to i8*
  2223. call void @free(i8* %194) #7
  2224. %195 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2225. %196 = bitcast %struct.Matrix* %195 to i8*
  2226. call void @free(i8* %196) #7
  2227. %197 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2228. %198 = bitcast %struct.Matrix* %197 to i8*
  2229. call void @free(i8* %198) #7
  2230. %199 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2231. %200 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %199, i32 0, i32 0
  2232. %201 = load i32*, i32** %200, align 8
  2233. %202 = bitcast i32* %201 to i8*
  2234. call void @free(i8* %202) #7
  2235. %203 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2236. %204 = bitcast %struct.DynamicArray* %203 to i8*
  2237. call void @free(i8* %204) #7
  2238. store i32 -1, i32* %38, align 4
  2239. br label %361
  2240. 205: ; preds = %151
  2241. store %struct.Node* null, %struct.Node** %47, align 8
  2242. store i32 0, i32* %48, align 4
  2243. br label %206
  2244. 206: ; preds = %220, %205
  2245. %207 = load i32, i32* %48, align 4
  2246. %208 = icmp slt i32 %207, 5
  2247. br i1 %208, label %209, label %223
  2248. 209: ; preds = %206
  2249. %210 = load %struct.Node*, %struct.Node** %47, align 8
  2250. %211 = call i32 @rand() #7
  2251. %212 = srem i32 %211, 50
  2252. %213 = call %struct.Node* @insertNode(%struct.Node* %210, i32 %212)
  2253. store %struct.Node* %213, %struct.Node** %47, align 8
  2254. %214 = load i8*, i8** @globalErrorMessage, align 8
  2255. %215 = icmp ne i8* %214, null
  2256. br i1 %215, label %216, label %219
  2257. 216: ; preds = %209
  2258. %217 = call i8* @getErrorMessage()
  2259. %218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0), i8* %217)
  2260. br label %223
  2261. 219: ; preds = %209
  2262. br label %220
  2263. 220: ; preds = %219
  2264. %221 = load i32, i32* %48, align 4
  2265. %222 = add nsw i32 %221, 1
  2266. store i32 %222, i32* %48, align 4
  2267. br label %206
  2268. 223: ; preds = %216, %206
  2269. %224 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2270. %225 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %224, i32 0, i32 0
  2271. %226 = load i32*, i32** %225, align 8
  2272. %227 = bitcast i32* %226 to i8*
  2273. call void @free(i8* %227) #7
  2274. %228 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8
  2275. %229 = bitcast %struct.DynamicArray* %228 to i8*
  2276. call void @free(i8* %229) #7
  2277. store i32 0, i32* %49, align 4
  2278. br label %230
  2279. 230: ; preds = %261, %223
  2280. %231 = load i32, i32* %49, align 4
  2281. %232 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2282. %233 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %232, i32 0, i32 1
  2283. %234 = load i32, i32* %233, align 8
  2284. %235 = icmp slt i32 %231, %234
  2285. br i1 %235, label %236, label %264
  2286. 236: ; preds = %230
  2287. %237 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2288. %238 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %237, i32 0, i32 0
  2289. %239 = load i32**, i32*** %238, align 8
  2290. %240 = load i32, i32* %49, align 4
  2291. %241 = sext i32 %240 to i64
  2292. %242 = getelementptr inbounds i32*, i32** %239, i64 %241
  2293. %243 = load i32*, i32** %242, align 8
  2294. %244 = bitcast i32* %243 to i8*
  2295. call void @free(i8* %244) #7
  2296. %245 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2297. %246 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %245, i32 0, i32 0
  2298. %247 = load i32**, i32*** %246, align 8
  2299. %248 = load i32, i32* %49, align 4
  2300. %249 = sext i32 %248 to i64
  2301. %250 = getelementptr inbounds i32*, i32** %247, i64 %249
  2302. %251 = load i32*, i32** %250, align 8
  2303. %252 = bitcast i32* %251 to i8*
  2304. call void @free(i8* %252) #7
  2305. %253 = load %struct.Matrix*, %struct.Matrix** %45, align 8
  2306. %254 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %253, i32 0, i32 0
  2307. %255 = load i32**, i32*** %254, align 8
  2308. %256 = load i32, i32* %49, align 4
  2309. %257 = sext i32 %256 to i64
  2310. %258 = getelementptr inbounds i32*, i32** %255, i64 %257
  2311. %259 = load i32*, i32** %258, align 8
  2312. %260 = bitcast i32* %259 to i8*
  2313. call void @free(i8* %260) #7
  2314. br label %261
  2315. 261: ; preds = %236
  2316. %262 = load i32, i32* %49, align 4
  2317. %263 = add nsw i32 %262, 1
  2318. store i32 %263, i32* %49, align 4
  2319. br label %230
  2320. 264: ; preds = %230
  2321. %265 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2322. %266 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %265, i32 0, i32 0
  2323. %267 = load i32**, i32*** %266, align 8
  2324. %268 = bitcast i32** %267 to i8*
  2325. call void @free(i8* %268) #7
  2326. %269 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2327. %270 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %269, i32 0, i32 0
  2328. %271 = load i32**, i32*** %270, align 8
  2329. %272 = bitcast i32** %271 to i8*
  2330. call void @free(i8* %272) #7
  2331. %273 = load %struct.Matrix*, %struct.Matrix** %45, align 8
  2332. %274 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %273, i32 0, i32 0
  2333. %275 = load i32**, i32*** %274, align 8
  2334. %276 = bitcast i32** %275 to i8*
  2335. call void @free(i8* %276) #7
  2336. %277 = load %struct.Matrix*, %struct.Matrix** %41, align 8
  2337. %278 = bitcast %struct.Matrix* %277 to i8*
  2338. call void @free(i8* %278) #7
  2339. %279 = load %struct.Matrix*, %struct.Matrix** %42, align 8
  2340. %280 = bitcast %struct.Matrix* %279 to i8*
  2341. call void @free(i8* %280) #7
  2342. %281 = load %struct.Matrix*, %struct.Matrix** %45, align 8
  2343. %282 = bitcast %struct.Matrix* %281 to i8*
  2344. call void @free(i8* %282) #7
  2345. %283 = load %struct.Node*, %struct.Node** %47, align 8
  2346. %284 = icmp ne %struct.Node* %283, null
  2347. br i1 %284, label %285, label %354
  2348. 285: ; preds = %264
  2349. %286 = load %struct.Node*, %struct.Node** %47, align 8
  2350. store %struct.Node* %286, %struct.Node** %50, align 8
  2351. %287 = load %struct.Node*, %struct.Node** %47, align 8
  2352. store %struct.Node* %287, %struct.Node** %51, align 8
  2353. store i32 0, i32* %52, align 4
  2354. br label %288
  2355. 288: ; preds = %311, %285
  2356. %289 = load %struct.Node*, %struct.Node** %51, align 8
  2357. %290 = icmp ne %struct.Node* %289, null
  2358. br i1 %290, label %291, label %296
  2359. 291: ; preds = %288
  2360. %292 = load %struct.Node*, %struct.Node** %51, align 8
  2361. %293 = getelementptr inbounds %struct.Node, %struct.Node* %292, i32 0, i32 1
  2362. %294 = load %struct.Node*, %struct.Node** %293, align 8
  2363. %295 = icmp ne %struct.Node* %294, null
  2364. br label %296
  2365. 296: ; preds = %291, %288
  2366. %297 = phi i1 [ false, %288 ], [ %295, %291 ]
  2367. br i1 %297, label %298, label %312
  2368. 298: ; preds = %296
  2369. %299 = load %struct.Node*, %struct.Node** %50, align 8
  2370. %300 = getelementptr inbounds %struct.Node, %struct.Node* %299, i32 0, i32 1
  2371. %301 = load %struct.Node*, %struct.Node** %300, align 8
  2372. store %struct.Node* %301, %struct.Node** %50, align 8
  2373. %302 = load %struct.Node*, %struct.Node** %51, align 8
  2374. %303 = getelementptr inbounds %struct.Node, %struct.Node* %302, i32 0, i32 1
  2375. %304 = load %struct.Node*, %struct.Node** %303, align 8
  2376. %305 = getelementptr inbounds %struct.Node, %struct.Node* %304, i32 0, i32 1
  2377. %306 = load %struct.Node*, %struct.Node** %305, align 8
  2378. store %struct.Node* %306, %struct.Node** %51, align 8
  2379. %307 = load %struct.Node*, %struct.Node** %50, align 8
  2380. %308 = load %struct.Node*, %struct.Node** %51, align 8
  2381. %309 = icmp eq %struct.Node* %307, %308
  2382. br i1 %309, label %310, label %311
  2383. 310: ; preds = %298
  2384. store i32 1, i32* %52, align 4
  2385. br label %312
  2386. 311: ; preds = %298
  2387. br label %288
  2388. 312: ; preds = %296, %310
  2389. %313 = load i32, i32* %52, align 4
  2390. %314 = icmp ne i32 %313, 0
  2391. br i1 %314, label %315, label %342
  2392. 315: ; preds = %312
  2393. %316 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0))
  2394. %317 = load %struct.Node*, %struct.Node** %47, align 8
  2395. store %struct.Node* %317, %struct.Node** %53, align 8
  2396. store i32 1000, i32* %54, align 4
  2397. store i32 0, i32* %55, align 4
  2398. br label %318
  2399. 318: ; preds = %333, %315
  2400. %319 = load %struct.Node*, %struct.Node** %53, align 8
  2401. %320 = icmp ne %struct.Node* %319, null
  2402. br i1 %320, label %321, label %325
  2403. 321: ; preds = %318
  2404. %322 = load i32, i32* %55, align 4
  2405. %323 = load i32, i32* %54, align 4
  2406. %324 = icmp slt i32 %322, %323
  2407. br label %325
  2408. 325: ; preds = %321, %318
  2409. %326 = phi i1 [ false, %318 ], [ %324, %321 ]
  2410. br i1 %326, label %327, label %341
  2411. 327: ; preds = %325
  2412. %328 = load %struct.Node*, %struct.Node** %53, align 8
  2413. %329 = getelementptr inbounds %struct.Node, %struct.Node* %328, i32 0, i32 3
  2414. %330 = load i32, i32* %329, align 8
  2415. %331 = icmp ne i32 %330, 0
  2416. br i1 %331, label %332, label %333
  2417. 332: ; preds = %327
  2418. br label %341
  2419. 333: ; preds = %327
  2420. %334 = load %struct.Node*, %struct.Node** %53, align 8
  2421. %335 = getelementptr inbounds %struct.Node, %struct.Node* %334, i32 0, i32 3
  2422. store i32 1, i32* %335, align 8
  2423. %336 = load %struct.Node*, %struct.Node** %53, align 8
  2424. %337 = getelementptr inbounds %struct.Node, %struct.Node* %336, i32 0, i32 1
  2425. %338 = load %struct.Node*, %struct.Node** %337, align 8
  2426. store %struct.Node* %338, %struct.Node** %53, align 8
  2427. %339 = load i32, i32* %55, align 4
  2428. %340 = add nsw i32 %339, 1
  2429. store i32 %340, i32* %55, align 4
  2430. br label %318
  2431. 341: ; preds = %332, %325
  2432. br label %342
  2433. 342: ; preds = %341, %312
  2434. br label %343
  2435. 343: ; preds = %346, %342
  2436. %344 = load %struct.Node*, %struct.Node** %47, align 8
  2437. %345 = icmp ne %struct.Node* %344, null
  2438. br i1 %345, label %346, label %353
  2439. 346: ; preds = %343
  2440. %347 = load %struct.Node*, %struct.Node** %47, align 8
  2441. store %struct.Node* %347, %struct.Node** %56, align 8
  2442. %348 = load %struct.Node*, %struct.Node** %47, align 8
  2443. %349 = getelementptr inbounds %struct.Node, %struct.Node* %348, i32 0, i32 1
  2444. %350 = load %struct.Node*, %struct.Node** %349, align 8
  2445. store %struct.Node* %350, %struct.Node** %47, align 8
  2446. %351 = load %struct.Node*, %struct.Node** %56, align 8
  2447. %352 = bitcast %struct.Node* %351 to i8*
  2448. call void @free(i8* %352) #7
  2449. br label %343
  2450. 353: ; preds = %343
  2451. br label %354
  2452. 354: ; preds = %353, %264
  2453. %355 = load i8*, i8** @globalErrorMessage, align 8
  2454. %356 = icmp ne i8* %355, null
  2455. br i1 %356, label %357, label %359
  2456. 357: ; preds = %354
  2457. %358 = load i8*, i8** @globalErrorMessage, align 8
  2458. call void @free(i8* %358) #7
  2459. br label %359
  2460. 359: ; preds = %357, %354
  2461. %360 = call i32 @fused_performSimpleCalculations(i1 false, i32* null, i32 0)
  2462. store i32 0, i32* %38, align 4
  2463. br label %361
  2464. 361: ; preds = %359, %186, %104, %62
  2465. %362 = load i32, i32* %38, align 4
  2466. %struct.bunker = insertvalue %fused_return_projectA_main_memoizedFib { i32 0, i32 undef }, i32 %362, 1
  2467. ret %fused_return_projectA_main_memoizedFib %struct.bunker
  2468. }
  2469. define %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 %0, i32 %1, [100 x i32]* %2, i32 %3) {
  2470. entry:
  2471. br label %4
  2472. 4: ; preds = %entry
  2473. %5 = alloca [100 x i32]*, align 8
  2474. %6 = alloca i32, align 4
  2475. %7 = alloca i32, align 4
  2476. %8 = alloca i32, align 4
  2477. %9 = alloca i32, align 4
  2478. store [100 x i32]* %2, [100 x i32]** %5, align 8
  2479. store i32 %3, i32* %6, align 4
  2480. store i32 0, i32* %7, align 4
  2481. store i32 0, i32* %8, align 4
  2482. br label %10
  2483. 10: ; preds = %4
  2484. %11 = alloca %struct.DynamicArray*, align 8
  2485. %12 = alloca i32, align 4
  2486. %13 = alloca %struct.DynamicArray*, align 8
  2487. store i32 %1, i32* %12, align 4
  2488. %14 = load i32, i32* %12, align 4
  2489. %15 = icmp sle i32 %14, 0
  2490. br i1 %15, label %16, label %18
  2491. 16: ; preds = %10
  2492. %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
  2493. store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8
  2494. br label %131
  2495. 18: ; preds = %10
  2496. %19 = load i32, i32* %12, align 4
  2497. %20 = icmp sgt i32 %19, 1000
  2498. br i1 %20, label %21, label %23
  2499. 21: ; preds = %18
  2500. %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
  2501. store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8
  2502. br label %131
  2503. 23: ; preds = %18
  2504. %24 = call noalias i8* @malloc(i64 24) #7
  2505. %25 = bitcast i8* %24 to %struct.DynamicArray*
  2506. store %struct.DynamicArray* %25, %struct.DynamicArray** %13, align 8
  2507. %26 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2508. %27 = icmp ne %struct.DynamicArray* %26, null
  2509. br i1 %27, label %30, label %28
  2510. 28: ; preds = %23
  2511. %29 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0))
  2512. store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8
  2513. br label %131
  2514. 30: ; preds = %23
  2515. %31 = load i32, i32* %12, align 4
  2516. %32 = sext i32 %31 to i64
  2517. %33 = mul i64 4, %32
  2518. %34 = call noalias i8* @malloc(i64 %33) #7
  2519. %35 = bitcast i8* %34 to i32*
  2520. %36 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2521. %37 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %36, i32 0, i32 0
  2522. store i32* %35, i32** %37, align 8
  2523. %38 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2524. %39 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %38, i32 0, i32 0
  2525. %40 = load i32*, i32** %39, align 8
  2526. %41 = icmp ne i32* %40, null
  2527. br i1 %41, label %46, label %42
  2528. 42: ; preds = %30
  2529. %43 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2530. %44 = bitcast %struct.DynamicArray* %43 to i8*
  2531. call void @free(i8* %44) #7
  2532. %45 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0))
  2533. store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8
  2534. br label %131
  2535. 46: ; preds = %30
  2536. %47 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2537. %48 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %47, i32 0, i32 1
  2538. store i32 0, i32* %48, align 8
  2539. %49 = load i32, i32* %12, align 4
  2540. %50 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2541. %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 2
  2542. store i32 %49, i32* %51, align 4
  2543. %52 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2544. %53 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %52, i32 0, i32 3
  2545. store i32 1, i32* %53, align 8
  2546. %54 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2547. %55 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %54, i32 0, i32 4
  2548. store i32 0, i32* %55, align 4
  2549. %56 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8
  2550. store %struct.DynamicArray* %56, %struct.DynamicArray** %11, align 8
  2551. br label %57
  2552. 57: ; preds = %46, %88
  2553. %58 = load i32, i32* %8, align 4
  2554. %59 = load i32, i32* %6, align 4
  2555. %60 = icmp slt i32 %58, %59
  2556. br i1 %60, label %61, label %62
  2557. 61: ; preds = %57
  2558. store i32 0, i32* %9, align 4
  2559. br label %64
  2560. 62: ; preds = %57
  2561. %63 = load i32, i32* %7, align 4
  2562. %struct.target = insertvalue %fused_return_createDynamicArray_processMatrix zeroinitializer, i32 %63, 0
  2563. %struct.bunker1 = insertvalue %fused_return_createDynamicArray_processMatrix %struct.target, %struct.DynamicArray* null, 1
  2564. ret %fused_return_createDynamicArray_processMatrix %struct.bunker1
  2565. 64: ; preds = %61
  2566. %65 = load i32, i32* %9, align 4
  2567. %66 = load i32, i32* %6, align 4
  2568. %67 = icmp slt i32 %65, %66
  2569. br i1 %67, label %68, label %72
  2570. 68: ; preds = %64
  2571. %69 = load i32, i32* %8, align 4
  2572. %70 = load i32, i32* %9, align 4
  2573. %71 = icmp eq i32 %69, %70
  2574. br i1 %71, label %73, label %84
  2575. 72: ; preds = %64
  2576. br label %88
  2577. 73: ; preds = %68
  2578. %74 = load [100 x i32]*, [100 x i32]** %5, align 8
  2579. %75 = load i32, i32* %8, align 4
  2580. %76 = sext i32 %75 to i64
  2581. %77 = getelementptr inbounds [100 x i32], [100 x i32]* %74, i64 %76
  2582. %78 = load i32, i32* %9, align 4
  2583. %79 = sext i32 %78 to i64
  2584. %80 = getelementptr inbounds [100 x i32], [100 x i32]* %77, i64 0, i64 %79
  2585. %81 = load i32, i32* %80, align 4
  2586. %82 = srem i32 %81, 2
  2587. %83 = icmp eq i32 %82, 0
  2588. br i1 %83, label %91, label %102
  2589. 84: ; preds = %68
  2590. %85 = load i32, i32* %8, align 4
  2591. %86 = load i32, i32* %9, align 4
  2592. %87 = icmp slt i32 %85, %86
  2593. br i1 %87, label %113, label %125
  2594. 88: ; preds = %72
  2595. %89 = load i32, i32* %8, align 4
  2596. %90 = add nsw i32 %89, 1
  2597. store i32 %90, i32* %8, align 4
  2598. br label %57
  2599. 91: ; preds = %73
  2600. %92 = load [100 x i32]*, [100 x i32]** %5, align 8
  2601. %93 = load i32, i32* %8, align 4
  2602. %94 = sext i32 %93 to i64
  2603. %95 = getelementptr inbounds [100 x i32], [100 x i32]* %92, i64 %94
  2604. %96 = load i32, i32* %9, align 4
  2605. %97 = sext i32 %96 to i64
  2606. %98 = getelementptr inbounds [100 x i32], [100 x i32]* %95, i64 0, i64 %97
  2607. %99 = load i32, i32* %98, align 4
  2608. %100 = load i32, i32* %7, align 4
  2609. %101 = add nsw i32 %100, %99
  2610. store i32 %101, i32* %7, align 4
  2611. br label %126
  2612. 102: ; preds = %73
  2613. %103 = load [100 x i32]*, [100 x i32]** %5, align 8
  2614. %104 = load i32, i32* %8, align 4
  2615. %105 = sext i32 %104 to i64
  2616. %106 = getelementptr inbounds [100 x i32], [100 x i32]* %103, i64 %105
  2617. %107 = load i32, i32* %9, align 4
  2618. %108 = sext i32 %107 to i64
  2619. %109 = getelementptr inbounds [100 x i32], [100 x i32]* %106, i64 0, i64 %108
  2620. %110 = load i32, i32* %109, align 4
  2621. %111 = load i32, i32* %7, align 4
  2622. %112 = sub nsw i32 %111, %110
  2623. store i32 %112, i32* %7, align 4
  2624. br label %126
  2625. 113: ; preds = %84
  2626. %114 = load [100 x i32]*, [100 x i32]** %5, align 8
  2627. %115 = load i32, i32* %8, align 4
  2628. %116 = sext i32 %115 to i64
  2629. %117 = getelementptr inbounds [100 x i32], [100 x i32]* %114, i64 %116
  2630. %118 = load i32, i32* %9, align 4
  2631. %119 = sext i32 %118 to i64
  2632. %120 = getelementptr inbounds [100 x i32], [100 x i32]* %117, i64 0, i64 %119
  2633. %121 = load i32, i32* %120, align 4
  2634. %122 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %121)
  2635. %123 = load i32, i32* %7, align 4
  2636. %124 = add nsw i32 %123, %122
  2637. store i32 %124, i32* %7, align 4
  2638. br label %125
  2639. 125: ; preds = %113, %84
  2640. br label %127
  2641. 126: ; preds = %102, %91
  2642. br label %127
  2643. 127: ; preds = %126, %125
  2644. br label %128
  2645. 128: ; preds = %127
  2646. %129 = load i32, i32* %9, align 4
  2647. %130 = add nsw i32 %129, 1
  2648. store i32 %130, i32* %9, align 4
  2649. br label %131
  2650. 131: ; preds = %42, %28, %16, %21, %128
  2651. %132 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8
  2652. %struct.bunker = insertvalue %fused_return_createDynamicArray_processMatrix { i32 0, %struct.DynamicArray* undef }, %struct.DynamicArray* %132, 1
  2653. ret %fused_return_createDynamicArray_processMatrix %struct.bunker
  2654. }
  2655. define i32 @fused_setErrorMessage(i1 %0, i8* %1) {
  2656. entry:
  2657. br label %2
  2658. 2: ; preds = %entry
  2659. %3 = alloca [14 x i8], align 1
  2660. %4 = alloca [8 x i32], align 16
  2661. %5 = alloca i32, align 4
  2662. %6 = alloca i32, align 4
  2663. %7 = alloca [100 x [100 x i32]], align 16
  2664. %8 = alloca i32, align 4
  2665. %9 = alloca i32, align 4
  2666. %10 = alloca i32, align 4
  2667. %11 = call i32 @fused_removeDuplicates(i1 true, %struct.DynamicArray* null, i32 5)
  2668. call void @llvm.memset.p0i8.i64(i8* align 16 bitcast ([100 x i32]* @cache to i8*), i8 -1, i64 400, i1 false)
  2669. %12 = bitcast [14 x i8]* %3 to i8*
  2670. call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %12, i8* align 1 getelementptr inbounds ([14 x i8], [14 x i8]* @__const.projectB_main.str, i32 0, i32 0), i64 14, i1 false)
  2671. %13 = getelementptr inbounds [14 x i8], [14 x i8]* %3, i64 0, i64 0
  2672. %14 = call %struct.Matrix* @fused_createMatrix(i1 true, i32 0, i32 0, i8* %13)
  2673. %15 = bitcast [8 x i32]* %4 to i8*
  2674. 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)
  2675. store i32 8, i32* %5, align 4
  2676. %16 = getelementptr inbounds [8 x i32], [8 x i32]* %4, i64 0, i64 0
  2677. %17 = load i32, i32* %5, align 4
  2678. %18 = call i32 @fused_performSimpleCalculations(i1 true, i32* %16, i32 %17)
  2679. store i32 %18, i32* %6, align 4
  2680. %19 = bitcast [100 x [100 x i32]]* %7 to i8*
  2681. 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)
  2682. %20 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %7, i64 0, i64 0
  2683. %21 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 true, i32 0, [100 x i32]* %20, i32 3)
  2684. %extracted_target_return2target_ = extractvalue %fused_return_createDynamicArray_processMatrix %21, 0
  2685. store i32 %extracted_target_return2target_, i32* %8, align 4
  2686. store i32 0, i32* %9, align 4
  2687. br label %22
  2688. 22: ; preds = %2
  2689. %23 = alloca i8*, align 8
  2690. store i8* %1, i8** %23, align 8
  2691. %24 = load i8*, i8** @globalErrorMessage, align 8
  2692. %25 = icmp ne i8* %24, null
  2693. br i1 %25, label %26, label %36
  2694. 26: ; preds = %22
  2695. %27 = load i8*, i8** @globalErrorMessage, align 8
  2696. call void @free(i8* %27) #7
  2697. br label %28
  2698. 28: ; preds = %26
  2699. %29 = load i32, i32* %9, align 4
  2700. %30 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %29)
  2701. %extracted_target_return1target_ = extractvalue %fused_return_projectA_main_memoizedFib %30, 0
  2702. %31 = load i32, i32* %9, align 4
  2703. %32 = add nsw i32 %31, 1
  2704. store i32 %32, i32* %9, align 4
  2705. br label %33
  2706. 33: ; preds = %28
  2707. %34 = load i32, i32* %9, align 4
  2708. %35 = icmp slt i32 %34, 10
  2709. br label %36
  2710. 36: ; preds = %22, %33
  2711. %37 = load i8*, i8** %23, align 8
  2712. %38 = icmp ne i8* %37, null
  2713. br i1 %38, label %39, label %48
  2714. 39: ; preds = %36
  2715. %40 = load i8*, i8** %23, align 8
  2716. %41 = call noalias i8* @strdup(i8* %40) #7
  2717. store i8* %41, i8** @globalErrorMessage, align 8
  2718. %42 = load i8*, i8** @globalErrorMessage, align 8
  2719. %43 = icmp eq i8* %42, null
  2720. br i1 %43, label %44, label %47
  2721. 44: ; preds = %39
  2722. %45 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8
  2723. %46 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %45, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0))
  2724. br label %47
  2725. 47: ; preds = %44, %39
  2726. br label %71
  2727. 48: ; preds = %36
  2728. store i8* null, i8** @globalErrorMessage, align 8
  2729. br label %49
  2730. 49: ; preds = %48
  2731. %50 = load i32, i32* %6, align 4
  2732. %51 = icmp sgt i32 %50, 5
  2733. br i1 %51, label %52, label %55
  2734. 52: ; preds = %49
  2735. %53 = load i32, i32* %8, align 4
  2736. %54 = icmp sgt i32 %53, 0
  2737. br i1 %54, label %62, label %65
  2738. 55: ; preds = %49
  2739. %56 = getelementptr inbounds [14 x i8], [14 x i8]* %3, i64 0, i64 0
  2740. %57 = call i64 @strlen(i8* %56) #10
  2741. %58 = load i32, i32* %8, align 4
  2742. %59 = sext i32 %58 to i64
  2743. %60 = add i64 %57, %59
  2744. %61 = trunc i64 %60 to i32
  2745. store i32 %61, i32* %10, align 4
  2746. br label %68
  2747. 62: ; preds = %52
  2748. %63 = load i32, i32* %6, align 4
  2749. %64 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %63)
  2750. %extracted_target_returntarget_ = extractvalue %fused_return_projectA_main_memoizedFib %64, 0
  2751. store i32 %extracted_target_returntarget_, i32* %10, align 4
  2752. br label %70
  2753. 65: ; preds = %52
  2754. %66 = load i32, i32* %8, align 4
  2755. %67 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %66)
  2756. store i32 %67, i32* %10, align 4
  2757. br label %70
  2758. 68: ; preds = %55
  2759. %69 = load i32, i32* %10, align 4
  2760. ret i32 %69
  2761. 70: ; preds = %65, %62
  2762. br label %71
  2763. 71: ; preds = %47, %70
  2764. ret i32 0
  2765. }
  2766. define %struct.Matrix* @fused_createMatrix(i1 %0, i32 %1, i32 %2, i8* %3) {
  2767. entry:
  2768. br label %4
  2769. 4: ; preds = %entry
  2770. %5 = alloca i8*, align 8
  2771. %6 = alloca i32, align 4
  2772. %7 = alloca i32, align 4
  2773. %8 = alloca i8, align 1
  2774. store i8* %3, i8** %5, align 8
  2775. %9 = load i8*, i8** %5, align 8
  2776. %10 = call i64 @strlen(i8* %9) #10
  2777. %11 = trunc i64 %10 to i32
  2778. store i32 %11, i32* %6, align 4
  2779. store i32 0, i32* %7, align 4
  2780. br label %12
  2781. 12: ; preds = %4
  2782. %13 = alloca %struct.Matrix*, align 8
  2783. %14 = alloca i32, align 4
  2784. %15 = alloca i32, align 4
  2785. %16 = alloca %struct.Matrix*, align 8
  2786. %17 = alloca i32, align 4
  2787. %18 = alloca i32, align 4
  2788. store i32 %1, i32* %14, align 4
  2789. store i32 %2, i32* %15, align 4
  2790. %19 = load i32, i32* %14, align 4
  2791. %20 = icmp slt i32 %19, 1
  2792. br i1 %20, label %24, label %21
  2793. 21: ; preds = %12
  2794. %22 = load i32, i32* %15, align 4
  2795. %23 = icmp slt i32 %22, 1
  2796. br i1 %23, label %24, label %26
  2797. 24: ; preds = %21, %12
  2798. %25 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
  2799. store %struct.Matrix* null, %struct.Matrix** %13, align 8
  2800. br label %161
  2801. 26: ; preds = %21
  2802. %27 = load i32, i32* %14, align 4
  2803. %28 = icmp sgt i32 %27, 100
  2804. br i1 %28, label %32, label %29
  2805. 29: ; preds = %26
  2806. %30 = load i32, i32* %15, align 4
  2807. %31 = icmp sgt i32 %30, 100
  2808. br i1 %31, label %32, label %34
  2809. 32: ; preds = %29, %26
  2810. %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
  2811. store %struct.Matrix* null, %struct.Matrix** %13, align 8
  2812. br label %161
  2813. 34: ; preds = %29
  2814. %35 = call noalias i8* @malloc(i64 32) #7
  2815. %36 = bitcast i8* %35 to %struct.Matrix*
  2816. store %struct.Matrix* %36, %struct.Matrix** %16, align 8
  2817. %37 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2818. %38 = icmp ne %struct.Matrix* %37, null
  2819. br i1 %38, label %41, label %39
  2820. 39: ; preds = %34
  2821. %40 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0))
  2822. store %struct.Matrix* null, %struct.Matrix** %13, align 8
  2823. br label %161
  2824. 41: ; preds = %34
  2825. %42 = load i32, i32* %14, align 4
  2826. %43 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2827. %44 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %43, i32 0, i32 1
  2828. store i32 %42, i32* %44, align 8
  2829. %45 = load i32, i32* %15, align 4
  2830. %46 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2831. %47 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %46, i32 0, i32 2
  2832. store i32 %45, i32* %47, align 4
  2833. %48 = load i32, i32* %14, align 4
  2834. %49 = load i32, i32* %15, align 4
  2835. %50 = icmp eq i32 %48, %49
  2836. %51 = zext i1 %50 to i32
  2837. %52 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2838. %53 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %52, i32 0, i32 3
  2839. store i32 %51, i32* %53, align 8
  2840. %54 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2841. %55 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %54, i32 0, i32 4
  2842. store double 0.000000e+00, double* %55, align 8
  2843. %56 = load i32, i32* %14, align 4
  2844. %57 = sext i32 %56 to i64
  2845. %58 = mul i64 %57, 8
  2846. %59 = call noalias i8* @malloc(i64 %58) #7
  2847. %60 = bitcast i8* %59 to i32**
  2848. %61 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2849. %62 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %61, i32 0, i32 0
  2850. store i32** %60, i32*** %62, align 8
  2851. %63 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2852. %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 0
  2853. %65 = load i32**, i32*** %64, align 8
  2854. %66 = icmp ne i32** %65, null
  2855. br i1 %66, label %71, label %67
  2856. 67: ; preds = %41
  2857. %68 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2858. %69 = bitcast %struct.Matrix* %68 to i8*
  2859. call void @free(i8* %69) #7
  2860. %70 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0))
  2861. store %struct.Matrix* null, %struct.Matrix** %13, align 8
  2862. br label %161
  2863. 71: ; preds = %41
  2864. store i32 0, i32* %17, align 4
  2865. br label %72
  2866. 72: ; preds = %121, %71
  2867. %73 = load i32, i32* %17, align 4
  2868. %74 = load i32, i32* %14, align 4
  2869. %75 = icmp slt i32 %73, %74
  2870. br i1 %75, label %76, label %124
  2871. 76: ; preds = %72
  2872. %77 = load i32, i32* %15, align 4
  2873. %78 = sext i32 %77 to i64
  2874. %79 = call noalias i8* @calloc(i64 %78, i64 4) #7
  2875. %80 = bitcast i8* %79 to i32*
  2876. %81 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2877. %82 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %81, i32 0, i32 0
  2878. %83 = load i32**, i32*** %82, align 8
  2879. %84 = load i32, i32* %17, align 4
  2880. %85 = sext i32 %84 to i64
  2881. %86 = getelementptr inbounds i32*, i32** %83, i64 %85
  2882. store i32* %80, i32** %86, align 8
  2883. %87 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2884. %88 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %87, i32 0, i32 0
  2885. %89 = load i32**, i32*** %88, align 8
  2886. %90 = load i32, i32* %17, align 4
  2887. %91 = sext i32 %90 to i64
  2888. %92 = getelementptr inbounds i32*, i32** %89, i64 %91
  2889. %93 = load i32*, i32** %92, align 8
  2890. %94 = icmp ne i32* %93, null
  2891. br i1 %94, label %120, label %95
  2892. 95: ; preds = %76
  2893. store i32 0, i32* %18, align 4
  2894. br label %96
  2895. 96: ; preds = %109, %95
  2896. %97 = load i32, i32* %18, align 4
  2897. %98 = load i32, i32* %17, align 4
  2898. %99 = icmp slt i32 %97, %98
  2899. br i1 %99, label %100, label %112
  2900. 100: ; preds = %96
  2901. %101 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2902. %102 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %101, i32 0, i32 0
  2903. %103 = load i32**, i32*** %102, align 8
  2904. %104 = load i32, i32* %18, align 4
  2905. %105 = sext i32 %104 to i64
  2906. %106 = getelementptr inbounds i32*, i32** %103, i64 %105
  2907. %107 = load i32*, i32** %106, align 8
  2908. %108 = bitcast i32* %107 to i8*
  2909. call void @free(i8* %108) #7
  2910. br label %109
  2911. 109: ; preds = %100
  2912. %110 = load i32, i32* %18, align 4
  2913. %111 = add nsw i32 %110, 1
  2914. store i32 %111, i32* %18, align 4
  2915. br label %96
  2916. 112: ; preds = %96
  2917. %113 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2918. %114 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %113, i32 0, i32 0
  2919. %115 = load i32**, i32*** %114, align 8
  2920. %116 = bitcast i32** %115 to i8*
  2921. call void @free(i8* %116) #7
  2922. %117 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2923. %118 = bitcast %struct.Matrix* %117 to i8*
  2924. call void @free(i8* %118) #7
  2925. %119 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0))
  2926. store %struct.Matrix* null, %struct.Matrix** %13, align 8
  2927. br label %161
  2928. 120: ; preds = %76
  2929. br label %121
  2930. 121: ; preds = %120
  2931. %122 = load i32, i32* %17, align 4
  2932. %123 = add nsw i32 %122, 1
  2933. store i32 %123, i32* %17, align 4
  2934. br label %72
  2935. 124: ; preds = %72
  2936. %125 = load %struct.Matrix*, %struct.Matrix** %16, align 8
  2937. store %struct.Matrix* %125, %struct.Matrix** %13, align 8
  2938. br label %126
  2939. 126: ; preds = %124
  2940. %127 = load i32, i32* %7, align 4
  2941. %128 = load i32, i32* %6, align 4
  2942. %129 = sdiv i32 %128, 2
  2943. %130 = icmp slt i32 %127, %129
  2944. br i1 %130, label %131, label %157
  2945. 131: ; preds = %126
  2946. %132 = load i8*, i8** %5, align 8
  2947. %133 = load i32, i32* %7, align 4
  2948. %134 = sext i32 %133 to i64
  2949. %135 = getelementptr inbounds i8, i8* %132, i64 %134
  2950. %136 = load i8, i8* %135, align 1
  2951. store i8 %136, i8* %8, align 1
  2952. %137 = load i8*, i8** %5, align 8
  2953. %138 = load i32, i32* %6, align 4
  2954. %139 = sub nsw i32 %138, 1
  2955. %140 = load i32, i32* %7, align 4
  2956. %141 = sub nsw i32 %139, %140
  2957. %142 = sext i32 %141 to i64
  2958. %143 = getelementptr inbounds i8, i8* %137, i64 %142
  2959. %144 = load i8, i8* %143, align 1
  2960. %145 = load i8*, i8** %5, align 8
  2961. %146 = load i32, i32* %7, align 4
  2962. %147 = sext i32 %146 to i64
  2963. %148 = getelementptr inbounds i8, i8* %145, i64 %147
  2964. store i8 %144, i8* %148, align 1
  2965. %149 = load i8, i8* %8, align 1
  2966. %150 = load i8*, i8** %5, align 8
  2967. %151 = load i32, i32* %6, align 4
  2968. %152 = sub nsw i32 %151, 1
  2969. %153 = load i32, i32* %7, align 4
  2970. %154 = sub nsw i32 %152, %153
  2971. %155 = sext i32 %154 to i64
  2972. %156 = getelementptr inbounds i8, i8* %150, i64 %155
  2973. store i8 %149, i8* %156, align 1
  2974. br label %158
  2975. 157: ; preds = %126
  2976. ret %struct.Matrix* null
  2977. 158: ; preds = %131
  2978. %159 = load i32, i32* %7, align 4
  2979. %160 = add nsw i32 %159, 1
  2980. store i32 %160, i32* %7, align 4
  2981. br label %161
  2982. 161: ; preds = %112, %67, %39, %32, %24, %158
  2983. %162 = load %struct.Matrix*, %struct.Matrix** %13, align 8
  2984. ret %struct.Matrix* %162
  2985. }
  2986. define i32 @fused_removeDuplicates(i1 %0, %struct.DynamicArray* %1, i32 %2) {
  2987. entry:
  2988. br label %3
  2989. 3: ; preds = %entry
  2990. %4 = alloca i32, align 4
  2991. %5 = alloca i32, align 4
  2992. %6 = alloca i32, align 4
  2993. %7 = alloca i32, align 4
  2994. store i32 %2, i32* %5, align 4
  2995. store i32 0, i32* %6, align 4
  2996. store i32 1, i32* %7, align 4
  2997. br label %8
  2998. 8: ; preds = %3
  2999. %9 = alloca %struct.DynamicArray*, align 8
  3000. %10 = alloca i32, align 4
  3001. %11 = alloca i32, align 4
  3002. %12 = alloca i32, align 4
  3003. store %struct.DynamicArray* %1, %struct.DynamicArray** %9, align 8
  3004. %13 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3005. %14 = icmp ne %struct.DynamicArray* %13, null
  3006. br i1 %14, label %15, label %20
  3007. 15: ; preds = %8
  3008. %16 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3009. %17 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %16, i32 0, i32 0
  3010. %18 = load i32*, i32** %17, align 8
  3011. %19 = icmp ne i32* %18, null
  3012. br i1 %19, label %22, label %20
  3013. 20: ; preds = %15, %8
  3014. %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0))
  3015. br label %107
  3016. 22: ; preds = %15
  3017. %23 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3018. %24 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %23, i32 0, i32 1
  3019. %25 = load i32, i32* %24, align 8
  3020. %26 = icmp sle i32 %25, 1
  3021. br i1 %26, label %27, label %28
  3022. 27: ; preds = %22
  3023. br label %107
  3024. 28: ; preds = %22
  3025. store i32 0, i32* %10, align 4
  3026. %29 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3027. %30 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %29, i32 0, i32 0
  3028. %31 = load i32*, i32** %30, align 8
  3029. %32 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3030. %33 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %32, i32 0, i32 1
  3031. %34 = load i32, i32* %33, align 8
  3032. %35 = sub nsw i32 %34, 1
  3033. %36 = call i32 @fused_quickSort(i1 false, i32* %31, i32 0, i32 %35, i32* %10, i32 0)
  3034. %37 = load i32, i32* %10, align 4
  3035. %38 = icmp ne i32 %37, 0
  3036. br i1 %38, label %39, label %40
  3037. 39: ; preds = %28
  3038. br label %107
  3039. 40: ; preds = %28
  3040. store i32 1, i32* %11, align 4
  3041. store i32 1, i32* %12, align 4
  3042. br label %41
  3043. 41: ; preds = %81, %40
  3044. %42 = load i32, i32* %12, align 4
  3045. %43 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3046. %44 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %43, i32 0, i32 1
  3047. %45 = load i32, i32* %44, align 8
  3048. %46 = icmp slt i32 %42, %45
  3049. br i1 %46, label %47, label %84
  3050. 47: ; preds = %41
  3051. %48 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3052. %49 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %48, i32 0, i32 0
  3053. %50 = load i32*, i32** %49, align 8
  3054. %51 = load i32, i32* %12, align 4
  3055. %52 = sext i32 %51 to i64
  3056. %53 = getelementptr inbounds i32, i32* %50, i64 %52
  3057. %54 = load i32, i32* %53, align 4
  3058. %55 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3059. %56 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %55, i32 0, i32 0
  3060. %57 = load i32*, i32** %56, align 8
  3061. %58 = load i32, i32* %12, align 4
  3062. %59 = sub nsw i32 %58, 1
  3063. %60 = sext i32 %59 to i64
  3064. %61 = getelementptr inbounds i32, i32* %57, i64 %60
  3065. %62 = load i32, i32* %61, align 4
  3066. %63 = icmp ne i32 %54, %62
  3067. br i1 %63, label %64, label %80
  3068. 64: ; preds = %47
  3069. %65 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3070. %66 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %65, i32 0, i32 0
  3071. %67 = load i32*, i32** %66, align 8
  3072. %68 = load i32, i32* %12, align 4
  3073. %69 = sext i32 %68 to i64
  3074. %70 = getelementptr inbounds i32, i32* %67, i64 %69
  3075. %71 = load i32, i32* %70, align 4
  3076. %72 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3077. %73 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %72, i32 0, i32 0
  3078. %74 = load i32*, i32** %73, align 8
  3079. %75 = load i32, i32* %11, align 4
  3080. %76 = sext i32 %75 to i64
  3081. %77 = getelementptr inbounds i32, i32* %74, i64 %76
  3082. store i32 %71, i32* %77, align 4
  3083. %78 = load i32, i32* %11, align 4
  3084. %79 = add nsw i32 %78, 1
  3085. store i32 %79, i32* %11, align 4
  3086. br label %80
  3087. 80: ; preds = %64, %47
  3088. br label %81
  3089. 81: ; preds = %80
  3090. %82 = load i32, i32* %12, align 4
  3091. %83 = add nsw i32 %82, 1
  3092. store i32 %83, i32* %12, align 4
  3093. br label %41
  3094. 84: ; preds = %41
  3095. %85 = load i32, i32* %11, align 4
  3096. %86 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3097. %87 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %86, i32 0, i32 1
  3098. store i32 %85, i32* %87, align 8
  3099. %88 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8
  3100. %89 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %88, i32 0, i32 3
  3101. store i32 1, i32* %89, align 8
  3102. br label %90
  3103. 90: ; preds = %84
  3104. %91 = load i32, i32* %7, align 4
  3105. %92 = icmp slt i32 %91, 5
  3106. br i1 %92, label %93, label %98
  3107. 93: ; preds = %90
  3108. %94 = load i32, i32* %6, align 4
  3109. %95 = add nsw i32 %94, 1
  3110. store i32 %95, i32* %6, align 4
  3111. %96 = load i32, i32* %5, align 4
  3112. %97 = icmp sgt i32 %96, 2
  3113. br i1 %97, label %100, label %101
  3114. 98: ; preds = %90
  3115. %99 = load i32, i32* %6, align 4
  3116. store i32 %99, i32* %4, align 4
  3117. br label %102
  3118. 100: ; preds = %93
  3119. store i32 23, i32* %4, align 4
  3120. br label %102
  3121. 101: ; preds = %93
  3122. br label %104
  3123. 102: ; preds = %100, %98
  3124. %103 = load i32, i32* %4, align 4
  3125. ret i32 %103
  3126. 104: ; preds = %101
  3127. %105 = load i32, i32* %7, align 4
  3128. %106 = add nsw i32 %105, 1
  3129. store i32 %106, i32* %7, align 4
  3130. br label %107
  3131. 107: ; preds = %39, %27, %20, %104
  3132. ret i32 0
  3133. }
  3134. attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  3135. attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  3136. attributes #2 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  3137. attributes #3 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  3138. attributes #4 = { nounwind readnone speculatable willreturn }
  3139. attributes #5 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  3140. attributes #6 = { argmemonly nounwind willreturn }
  3141. attributes #7 = { nounwind }
  3142. attributes #8 = { nounwind readnone }
  3143. attributes #9 = { readnone }
  3144. attributes #10 = { nounwind readonly }
  3145. !llvm.ident = !{!0, !0}
  3146. !llvm.module.flags = !{!1}
  3147. !0 = !{!"clang version 10.0.0-4ubuntu1 "}
  3148. !1 = !{i32 1, !"wchar_size", i32 4}
  3149. !2 = !{!"Bunker"}