Útgáfa af LLVM 13.0 þýðandasvítunni

Eftir sex mánaða þróun var útgáfa LLVM 13.0 verkefnisins kynnt - GCC-samhæfð verkfærasett (þýðendur, hagræðingartæki og kóðaframleiðendur) sem safnar saman forritum í millibitakóða af RISC-líkum sýndarleiðbeiningum (lágmarks sýndarvél með hagræðingarkerfi á mörgum stigum). Hægt er að breyta gervikóðanum sem myndast með JIT þýðanda í vélaleiðbeiningar beint á þeim tíma sem forritið er keyrt.

Umbætur í Clang 13.0:

  • Innleiddur stuðningur við tryggð halakall (hringir í undiráætlun alveg í lok falls, myndar afturhvarf ef undirrútínan kallar á sig). Stuðningur við tryggð símtöl er veitt af "[[clang::musttail]]" eigindinni í C++ og "__attribute__((musttail))" í C, notuð í "return" yfirlýsingu. Eiginleikinn gerir þér kleift að innleiða hagræðingu með því að dreifa kóða í flata endurtekningu til að spara staflanotkun.
  • "að nota" yfirlýsingar og clang viðbætur veita stuðning við að skilgreina eiginleika í C++11 stíl með því að nota "[[]]" sniðið.
  • Bætt við "-Wreserved-identifier" fána til að sýna viðvörun þegar frátekin auðkenni eru tilgreind í notandakóða.
  • Bætt við "-Wunused-but-set-parameter" og "-Wunused-but-set-variable" fánum til að sýna viðvörun ef færibreyta eða breyta er stillt en ekki notuð.
  • Bætt við "-Wnull-pointer-subtraction" fána til að gefa út viðvörun ef kóðinn kynni að kynna óskilgreinda hegðun vegna notkunar núllbendils í frádráttaraðgerðum.
  • Bætti við "-fstack-usage" fánanum til að búa til viðbótar ".su" skrá fyrir hverja kóðaskrá sem inniheldur upplýsingar um stærð stafla ramma fyrir hverja aðgerð sem er skilgreind í skránni sem verið er að vinna úr.
  • Ný úttakstegund hefur verið bætt við kyrrstöðugreiningartækið - "sarif-html", sem leiðir til myndun skýrslna samtímis á HTML og Sarif sniðum. Bætt við nýrri allocClassWithName athugun. Þegar valmöguleikinn „-analyzer-display-progress“ er tilgreindur, birtist greiningartími hverrar aðgerð. Snjall bendigreiningartækið (alpha.cplusplus.SmartPtr) er næstum tilbúið.
  • Möguleikarnir sem tengjast OpenCL stuðningi hafa verið auknir. Bætti við stuðningi við nýjar viðbætur cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields og __cl_clang_non_portable_kernel_param_types. Innleiðing OpenCL 3.0 forskriftarinnar hefur haldið áfram. Fyrir C er OpenCL 1.2 forskriftin notuð sjálfgefið nema önnur útgáfa sé sérstaklega valin. Fyrir C++ hefur stuðningi við skrár með endingunni „.clcpp“ verið bætt við.
  • Stuðningur við tilskipanir um lykkjubreytingar ("#pragma omp unrol" og "#pragma omp tile") sem skilgreindar eru í OpenMP 5.1 forskriftinni hefur verið innleidd.
  • Bætt við valmöguleikum við clang-snið tólið: SpacesInLineCommentPrefix til að skilgreina fjölda bila á undan athugasemdum, IndentAccessModifiers, LambdaBodyIndentation og PPIndentWidth til að stjórna röðun færslur, lambda tjáning og forvinnslutilskipanir. Möguleikarnir á að flokka upptalningu á hausskrám (SortIncludes) hafa verið rýmkaðir. Bætti við stuðningi við að forsníða JSON skrár.
  • Stór hluti nýrra athugana hefur verið bætt við linter clang-tidy.

Helstu nýjungar í LLVM 13.0:

  • Bætti við „-ehcontguard“ valmöguleikanum til að nota CET (Windows Control-flow Enforcement Technology) tækni til að vernda gegn framkvæmd hetjudáða sem byggðar eru með Return-Oriented Programming (ROP) tækni á undantekningarmeðferðarstigi.
  • Debuginfo-test verkefnið hefur verið endurnefnt krossverkefnapróf og er hannað til að prófa íhluti úr mismunandi verkefnum, ekki takmarkað við villuleitarupplýsingar.
  • Samsetningarkerfið veitir stuðning við að byggja upp nokkrar dreifingar, til dæmis eina með tólum og hina með bókasöfnum fyrir þróunaraðila.
  • Í bakenda fyrir AArch64 arkitektúrinn er stuðningur við Armv9-A RME (Realm Management Extension) og SME (Scalable Matrix Extension) viðbætur innleiddar í samsetningarforritinu.
  • Stuðningur fyrir ISA V68/HVX hefur verið bætt við bakenda fyrir Hexagon arkitektúrinn.
  • x86 bakendinn hefur bættan stuðning fyrir AMD Zen 3 örgjörva.
  • Bætti við stuðningi fyrir GFX1013 RDNA2 APU við AMDGPU bakenda.
  • Libc++ heldur áfram að innleiða nýja eiginleika C++20 og C++2b staðlanna, þar á meðal að klára „hugtök“ bókasafnið. Bætti við stuðningi við std::skráakerfi fyrir MinGW-undirstaða Windows vettvang. Hausskrárnar , og eru aðskildar. Bætt við byggingarvalkosti LIBCXX_ENABLE_INCOMPLETE_FEATURES til að slökkva á hausskrám með ekki fullkomlega útfærða virkni.
  • Möguleiki LLD tengilinn hefur verið aukinn, þar sem stuðningur við Big-endian Aarch64 örgjörva er útfærður og Mach-O bakendi hefur verið færður í það ástand sem gerir kleift að tengja venjuleg forrit. Innifalið endurbætur sem þarf til að tengja Glibc með LLD.
  • Llvm-mca (Machine Code Analyzer) tólið hefur bætt við stuðningi við örgjörva sem framkvæma leiðbeiningar í röð (í-order superscalar leiðsla), eins og ARM Cortex-A55.
  • LLDB kembiforritið fyrir AArch64 pallinn veitir fullan stuðning við auðkenningu bendils, MTE (MemTag, Memory Tagging Extension) og SVE skrár. Bætt við skipunum sem gera þér kleift að binda merki við hverja minnisúthlutunaraðgerð og skipuleggja athugun á bendilinn þegar þú hefur aðgang að minni, sem verður að tengjast réttu merki.
  • LLDB kembiforritið og framendanum fyrir Fortran tungumálið - Flang hefur verið bætt við tvöfaldar samsetningar sem verkefnið myndar.

Heimild: opennet.ru

Bæta við athugasemd