Ngemuva kwezinyanga eziyisithupha zentuthuko kwethulwe uhlobo olusha lwephrojekthi ye-LLVM 12.0 I-GCC-ehambisana (abahlanganisi, ama-optimizer, nama-code generator) ahlanganisa izinhlelo zibe yi-bitcode emaphakathi yemiyalo ebonakalayo efana ne-RISC (umshini obonakalayo osezingeni eliphansi nohlelo lokusebenziseka kwamazinga amaningi).
Kule nguqulo entsha singathola ukuthuthuka okuhlukahlukene nezindaba, esingagqamisa kuyo imfanelo yomsebenzi omusha "tune-cpu" ukusekela -mune njenge-gcc, kanye nokwenza ngcono kuzingxenyekazi ezahlukahlukene.
Izici ezintsha eziyinhloko ze-LLVM 12.0
Kule nguqulo entsha, singakuthola lokho ukusekelwa kwethuluzi lamathuluzi wokwakha i-llvm-build ibhalwe nge-python kunqanyuliwe, esikhundleni sokuthi iphrojekthi isishintshe ngokuphelele ukusebenzisa uhlelo lwe-CMake build.
I-backend yokwakhiwa kwe-AArch64 ithuthukise ukusekelwa kwepulatifomu yeWindows: ukwenziwa okulungile kokukhipha okuhlanganisiwe kunikezwa ngezinhlelo ze-Windows ezihlosiwe, ukwenziwa kwedatha kumakholi we-unwind kulungiselelwe (usayizi wedatha enjalo wehliswe ngama-60%), ikhono lokwenza idatha lingeziwe ekuphumuleni kusetshenziswa iziqondiso ze-seh.
Ngesikhathi I-PowerPC backend backend ifaka ukulungiselelwa okusha kokufakwa kwe-inline ne-loop, ukuthuthuka kokusekelwa kwama-processor we-Power10, ukwesekwa okungeziwe kwemiyalo ye-MMA yokuphatha ukuhlelwa, nokusekelwa okuthuthukisiwe kohlelo lokusebenza lwe-AIX.
para I-x86 ingeze ukusekelwa kwe-AMD Zen 3, i-Intel Alder Lake ne-Intel Sapphire Rapids processors, kanye nemiyalo yabaprosesa be-HRESET, UINTR, ne-AVXVNNI. Kususwe ukwesekwa kwezandiso ze-MPX (izandiso zokuvikela inkumbulo) ukuhlola izikhombisi ngokumelene nemikhawulo yendawo yememori (lobu buchwepheshe abuzange busetshenziswe kabanzi futhi selususiwe ku-GCC naku-clang). Isihlanganisi sengeze ukusekelwa kweziqalo {disp32} kanye ne- {disp8} kanye nezijobelelo .d32 kanye ne- .d8 ukulawula ubukhulu be-offset yama-opharetha nezinguquko. Isichasiso esisha esithi "tune-cpu" sengezwe ukulawula ukunikwa amandla kokulungiswa kwemiklamo emincane.
Olunye ushintsho olugqamile yilolo kungezwe imodi entsha "-fsanitize = unsigned-shift-base" ukuthola ukugcwala kwenombolo okungasayiniwe ngemuva kokushintshela kwesobunxele. Ngefomethi ye-Mach-O (macOS), ukwesekwa kufakwa ekwakhiweni kwe-arm64, ingalo, ne-i386, i-link stage optimization (LTO), kanye ne-stack unwind lapho usingatha okuhlukile.
Futhi kugqanyiswa imfanelo entsha yesici "tune-cpu" lokho kuvumela oUkulungiselelwa kwe-microarchitecture kuyasetshenziswa kungakhathalekile imfanelo ye- "target-cpu" noma kusuka ku-CPU yeTargetMachine ezosetshenziselwa ukukhetha isethi yemiyalo. Uma isibaluli singekho, i-CPU yokulungisa izolandela i-CPU eqondisiwe.
ILibc ++ isebenzisa izici ezintsha ze-C ++ 20 ejwayelekile futhi ngiqale ukuthuthukisa izici zokucaciswa kwe-C ++ 2b, plus kungezwe ukusekelwa kokuhlangana nokukhubazeka kosekelo lwendawo ("-DLIBCXX_ENABLE_LOCALIZATION = KUVALIWE") namadivayisi okukhiqiza izinombolo-mbumbulu ezingahleliwe.
Ngesikhathi kokuthuthuka kweClang 12, kokwakhiwa kwe-AArch64, kufakwe amafulegi amasha wokuhlanganisa "-Moutline-atomics" ne- "-mno-outline-atomics" ukunika amandla nokukhubaza imisebenzi yomsizi we-athomu efana ne- "__aarch64_cas8_relax". Le misebenzi yesikhathi sokusebenza inquma ukuthi ngabe kukhona ukusekelwa kwe-Large System Extensions (LSE) futhi isebenzise imiyalo enikeziwe yokucubungula i-athomu noma ukubuyela emuva ukusebenzisa imiyalo ye-LL / SC (Load-link / store-conditional) yokuvumelanisa.
Isikhombi 'salokhu' manje sesicutshungulwa ngamasheke angasebenzi futhi angathandeki (N). Inketho ye- "-fdelete-null-pointer-checks" ingasetshenziswa ukususa imfanelo engeyona eyize lapho kudingeka amanani we-null.
Ku-Linux yokwakhiwa kwe-AArch64 ne-PowerPC, "-fasynchronous -wind-tables" inikwe amandla ukukhiqiza amatafula wezingcingo, njengakwi-GCC.
Ku- "#pragma clang loop vectorize_width" ikhono lokucacisa izinketho "ezilungisiwe" (ezizenzakalelayo) nezingama "scalable" ukukhetha indlela ye-vectorization ingeziwe.
Kwisiphakeli se-clangd caching (i-Clang Server) ku-Linux, ukusetshenziswa kwememori ngesikhathi sokusebenza kwesikhathi eside kuncishiswe kakhulu (kunikezwa ucingo lwezikhathi ezithile ku-malloc_trim ukubuyisa amakhasi ememori wamahhala ohlelweni lokusebenza).
Okokugcina uma unesifiso sokwazi okwengeziwe ngakho mayelana nale nguqulo entsha, unga Sicela ubheke imininingwane kulokhu okulandelayo. isixhumanisi