Pärast kuut kuud arengut esitleti projekti LLVM 12.0 uue versiooni käivitamist GCC (kompilaatorid, optimeerijad ja koodigeneraatorid) ühilduv, mis kompileerib programmid RISC-ga sarnaste virtuaalsete käskude vahepealseks bitikoodiks (mitmetasandilise optimeerimissüsteemiga madala taseme virtuaalne masin).
Selles uues versioonis leiame erinevaid täiustusi ja uudiseid, millest saame esile tuua uue funktsiooni atribuudi "tune-cpu", mis toetab -mtune kui gcc, samuti erinevate platvormide täiustusi.
LLVM 12.0 peamised uued funktsioonid
Selles uues versioonis võime selle leida tugi llvm-build buildi tööriistakomplektile kirjutatud pythonis on lõpetatud, mille asemel on projekt täielikult üle läinud CMake build-süsteemi kasutamisele.
AArch64 arhitektuuri taustaprogramm on parandanud Windowsi platvormi tuge: Windowsi sihtsüsteemidele on ette nähtud korrektne assamblee väljundi genereerimine, optimeeritud on andmete genereerimine kerimiskõnedel (selliste andmete mahtu on vähendatud 60%), seh-direktiivide abil on lõdvestamiseks lisatud andmete loomise võime.
Kuigi PowerPC arhitektuuri taustaprogramm sisaldab uusi optimeerimisi sisse- ja tsükli juurutamiseks, täiustatud tugi Power10 protsessoritele, täiendav tugi MMA-juhistele massiividega manipuleerimiseks ja täiustatud tugi AIX-opsüsteemile.
et x86 lisas tuge AMD Zen 3, Intel Alder Lake ja Intel Sapphire Rapids protsessoritele, samuti juhised HRESET, UINTR ja AVXVNNI protsessoritele. Eemaldatud MPX-laienduste (mälukaitsepikenduste) tugi, et kontrollida, kas kursorid vastavad mälupiirangutele (seda tehnoloogiat ei ole laialdaselt kasutatud ja see on GCC-st eemaldatud ja klõpsatud). Monteerija on lisanud toe eesliidetele {disp32} ja {disp8} ning sufiksidele .d32 ja .d8, et kontrollida operandide ja üleminekute nihke suurust. Mikroarhitektuuri optimeerimise lubamise juhtimiseks lisati uus atribuut "tune-cpu".
Teine silma paistev muudatus on see lisatud on uus režiim "-fsanitize = unsigned-shift-base" allkirjastamata täisarvu ülevoolude tuvastamiseks pärast natuke nihkumist vasakule. Mach-O (macOS) vormingu puhul rakendatakse erandite käsitlemisel tuge arm64, arm ja i386 arhitektuuridele, lingi etapi optimeerimisele (LTO) ja virna lõõgastumiseks.
ka uus funktsiooniatribuut "tune-cpu" on esile tõstetud mis võimaldab omikroarhitektuuri optimeerimisi rakendatakse sõltumata atribuudist "target-cpu" või TargetMachine CPU, mida kasutatakse käskude komplekti valimiseks. Kui atribuuti pole, järgib häälestav protsessor sihtprotsessorit.
Libc ++ rakendab standardi C ++ 20 uusi funktsioone ja hakkas välja töötama C ++ 2b spetsifikatsiooni pluss funktsioone lisas tugi kokkupanekuks, keelates lokaliseerimise toe ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") ja seadmed pseudojuhuslike arvude genereerimiseks.
Kuigi Clang 12 täiustustest on AArch64 arhitektuuri jaoks lisatud uued kompilaatori lipud "-Moutline-atomics" ja "-mno-outline-atomics" selliste aatomiabiliste funktsioonide nagu "__aarch64_cas8_relax" lubamiseks ja keelamiseks. Need käitamisfunktsioonid määravad kindlaks, kas suurte süsteemilaienduste (LSE) tugi on olemas, ja kasutage sünkroonimiseks LL / SC (Load-link / store-conditional) juhiste kasutamiseks lisatud aatomiprotsessori juhiseid või tagasivõtmist.
Seda kursorit töödeldakse nüüd null-ja üleantavate kontrollidega (N). Valikut "-fdelete-null-pointer-check" saab kasutada atribuudi non-null eemaldamiseks, kui nõutakse nullväärtusi.
Linuxis AArch64 ja PowerPC arhitektuuride jaoks on "-fasynchronous -wind-tables" lubatud nimekõnede tabelite loomiseks, nagu GCC-s.
Jaotises "#pragma clang loop vectorize_width" lisati võimalus määrata vektoriseerimise meetodi valimiseks "fikseeritud" (vaikimisi) ja "skaleeritav" suvandid.
Linuxi kohandatud vahemäluserveris (Clang Server) väheneb pikaajalisel töötamisel märkimisväärselt mälu tarbimine (tasuta mälulehekülgede operatsioonisüsteemi tagastamiseks pakutakse perioodilist kõnet malloc_trimile).
Lõpuks kui olete huvitatud sellest rohkem teada saama selle uue versiooni kohta saate Palun vaadake üksikasju järgmises. link