Ho lokolloa ha LLVM 12.0 compiler suite

Kamora likhoeli tse ts'eletseng tsa nts'etsopele, ho hlahisoa tokollo ea projeke ea LLVM 12.0 - sesebelisoa sa lisebelisoa se lumellanang le GCC (li-compilers, optimizers le lijenereithara tsa khoutu) tse bokellang mananeo ka har'a bitcode ea lipakeng tsa RISC-joaloka litaelo tse hlakileng (mochini oa boemo bo tlase o nang le mokhoa oa ho ntlafatsa maemo a mangata). Khoutu ea pseudo e hlahisitsoeng e ka fetoloa ke moqapi oa JIT hore e be litaelo tsa mochini hantle ka nako ea ts'ebetso ea lenaneo.

Lintlafatso ho Clang 12.0:

  • Ts'ehetso bakeng sa litšoaneleho tsa "mohlomong" le "mohlomong" tse khothaletsoang maemong a C++20 e se e kentsoe tšebetsong le ho nolofalloa ka mokhoa o ikhethileng, e lumellang optimizer ho tsebisoa ka monyetla oa hore moaho o hlophisitsoeng o ka hlahisoa (mohlala, “[[mohlomong ]] haeba (ka tšohanyetso> 0) {“).
  • Tšehetso e ekelitsoeng bakeng sa li-processor tsa AMD Zen 3 (-march=znver3), Intel Alder Lake (-march=alderlake) le Intel Sapphire Rapids (-march=sapphirerapids).
  • Tšehetso e ekelitsoeng bakeng sa "-march = x86-64-v[234]" lifolakha ho khetha maemo a x86-64 a meralo (v2 - e akaretsa SSE4.2, SSSE3, POPCNT le CMPXCHG16B extensions; v3 - AVX2 le MOVBE; v4 - AVX-512 ) .
  • Tšehetso e ekelitsoeng bakeng sa li-processor tsa Arm Cortex-A78C (cortex-a78c), Arm Cortex-R82 (cortex-r82), Arm Neoverse V1 (neoverse-v1), Arm Neoverse N2 (neoverse-n2) le Fujitsu A64FX (a64fx). Mohlala, ho nolofalletsa li-CPU tsa Neoverse-V1, o ka hlakisa "-mcpu=neoverse-v1".
  • Bakeng sa meralo ea AArch64, lifolakha tse ncha tsa komporo "-moutline-atomics" le "-mno-outline-atomics" li kentsoe ho thusa kapa ho tima mesebetsi ea mothusi oa ts'ebetso ea athomo, joalo ka "__aarch64_cas8_relax". Lisebelisoa tse joalo li lemoha ka nako ea ho sebetsa hore na tšehetso ea LSE (Large System Extensions) e teng 'me u sebelise litaelo tse fanoeng tsa processor ea athomo kapa u khutlela ho sebelisa LL/SC (Load-link/store-conditional) litaelo bakeng sa ho amahanya.
  • E kenyellelitsoe "-fbinutils-version" khetho ea ho khetha mofuta oa sepheo sa binutils suite bakeng sa ho lumellana le sehokelo sa khale le boits'oaro ba sekopanyi.
  • Bakeng sa lifaele tse ka sebetsoang tsa ELF, ha "-gz" folakha e hlalositsoe, khatello ea tlhaiso-leseling e sebelisang laebrari ea zlib e etsoa ka mokhoa o ikhethileng (gz=zlib). Ho hokahanya lifaele tsa ntho e hlahisoang ho hloka lld kapa GNU binutils 2.26+. Ho khutlisetsa ts'ebelisano le mefuta ea khale ea li-binutils, o ka hlakisa "-gz=zlib-gnu".
  • Sesupa sa 'sena' se se se sebetsoa ka licheke tse sa sebetseng le tse sa amoheloeng (N). Ho tlosa tšobotsi ea nonnull ha o hloka ho sebelisa litekanyetso tsa NULL, o ka sebelisa khetho ea "-fdelete-null-pointer-checks".
  • Sethaleng sa Linux, mokhoa oa "-fasynchronous-unwind-tables" o lumelletsoe hore meralo ea AArch64 le PowerPC e hlahise litafole tsa mehala, joalo ka GCC.
  • Ho "#pragma clang loop vectorize_width" e kentse bokhoni ba ho hlakisa likhetho tsa "fixed" (default) le "scalable" ho khetha mokhoa oa vectorization. Mokhoa oa "scalable", o ikemetseng ka bolelele ba vector, ke oa liteko mme o ka sebelisoa ho hardware e tšehetsang vectorization ea scalable.
  • Tšehetso e ntlafetseng bakeng sa sethala sa Windows: Likopano tsa molao tsa binary tsa Windows ho litsamaiso tsa Arm64 li se li lokisitsoe, ho kenyeletsoa motlalehi oa Clang, LLD linker le lilaebrari tsa nako ea compiler-rt. Ha o hahela li-platform tsa sepheo sa MinGW, suffix ea .exe ea eketsoa, ​​leha e kopanya.
  • Bokhoni bo amanang le tšehetso ea OpenCL, OpenMP le CUDA bo ekelitsoe. Likhetho tse ekelitsoeng "-cl-std=CL3.0" le "-cl-std=CL1.0" ho khetha likhetho tse kholo bakeng sa OpenCL 3.0 le OpenCL 1.0. Lisebelisoa tsa tlhahlobo li ekelitsoe.
  • Ts'ehetso e ekelitsoeng bakeng sa litaelo tsa HRESET, UINTR, le AVXVNNI tse kentsoeng tšebetsong ho li-processor tse ling tse thehiloeng ho x86.
  • Ho litsamaiso tsa x86, tšehetso bakeng sa khetho ea "-mtune=" e ea sebetsa ", e kenyang ts'ebetso e khethiloeng ea microarchitectural optimizations, ho sa tsotelehe boleng ba "-march= "
  • static analyzer e ntlafalitse ts'ebetso ea mesebetsi e meng ea POSIX mme e ntlafalitse haholo boikemisetso ba sephetho sa ts'ebetso e nang le maemo ha ho na le litekanyetso tse 'maloa tsa tšoantšetso papisong. Licheke tse ncha li ekelitsoe: fuchia.HandleChecker (e hlalosa li-handle ka meaho), webkit.UncountedLambdaCapturesChecker webkit le alpha.webkit.UncountedLocalVarsChecker (e nahanela likarolo tse ikhethang tsa ho sebetsa ka litsupa khoutu ea enjene ea WebKit).
  • Lipolelong tse sebelisoang moelelong oa li-constants, tšebeliso ea mesebetsi e hahelletsoeng __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, _bit_bit_scan_bsrverse_wapverse, _bsrverse, _bsrverse_wap_wap d, __bswap64, e lumelletsoe __bswapq , _castf*, __rol* le __ror*.
  • E kentse khetho ea BitFieldColonSpacing ho sesebelisoa sa clang-format ho khetha sebaka se potolohileng li-identifiers, likholomo le litlhaloso tsa tšimo.
  • Seva ea caching ea clangd (Clang Server) sethaleng sa Linux e fokolitse haholo tšebeliso ea mohopolo nakong ea ts'ebetso ea nako e telele (mehala ea nako le nako ho malloc_trim e fanoa ho khutlisetsa maqephe a memori a mahala ho sistimi e sebetsang).

Litlhahiso tsa bohlokoa ho LLVM 12.0:

  • Tšehetso bakeng sa sesebelisoa sa llvm-build build se ngotsoeng ka Python se khaolitse, 'me ho e-na le hoo morero o fetohile ka ho feletseng ho sebelisa mokhoa oa ho haha ​​oa CMake.
  • Ka morao bakeng sa meralo ea AArch64, tšehetso ea sethala sa Windows e ntlafalitsoe: tlhahiso e nepahetseng ea tlhahiso ea sephutheloana bakeng sa sepheo sa lits'ebetso tsa Windows e netefalitsoe, tlhahiso ea data mabapi le mehala ea ho phomola e ntlafalitsoe (boholo ba data bo fokotsehile ka 60). %), bokhoni ba ho theha data ea ho phutholoha u sebelisa assembler e kentsoe litaelo .seh_*.
  • Karolo e ka morao ea meralo ea PowerPC e na le lintlafatso tse ncha bakeng sa loops le ho tsamaisoa ha inline, tšehetso e atolositsoeng bakeng sa li-processor tsa Power10, tšehetso e ekelitsoeng bakeng sa litaelo tsa MMA bakeng sa ho qhekella ha matrix, le tšehetso e ntlafalitsoeng bakeng sa sistimi e sebetsang ea AIX.
  • The x86 backend e eketsa tšehetso bakeng sa li-processor tsa AMD Zen 3, Intel Alder Lake le Intel Sapphire Rapids, hammoho le litaelo tsa processor tsa HRESET, UINTR le AVXVNNI. Tšehetso bakeng sa MPX (Memory Protection Extensions) bakeng sa ho hlahloba lintlha ho netefatsa hore meeli ea memori ha e sa tšehetsoa (theknoloji ena ha e atile ebile e se e tlositsoe ho GCC le clang). Ts'ehetso e ekelitsoeng ho mokopanyi bakeng sa lihlomathiso tsa {disp32} le {disp8} le li-suffixes tsa .d32 le .d8 ho laola boholo ba operand offsets le jumps. E kentse tšobotsi e ncha "tune-cpu" ho laola ho kenyelletsoa ha lintlafatso tse nyane tsa meralo.
  • Mokhoa o mocha oa "-fsanitize=unsigned-shift-base" o kentsoe mochining oa ho hlahloba mathata (integer sanitizer, "-fsanitize=integer") ho bona ho tlala ha linomoro tse sa ngolisoang ka mor'a hore u fetohele ka letsohong le letšehali.
  • Ho li-detectors tse fapaneng (asan, cfi, lsan, msan, tsan, ubsan sanitizer) ts'ehetso ea phepelo ea Linux ka laeborari e tloaelehileng ea Musl e kentsoe.
  • Bokhoni ba sehokelo sa LLD bo ekelitsoe. Ts'ehetso e ntlafalitsoeng ea sebopeho sa ELF, ho kenyelletsa le likhetho tse ekelitsoeng "--dependency-file", "-error-handling-script", "-lto-pseudo-probe-for-profiling", "-no-lto-whole-program - ponahalo" " Ts'ehetso ea MinGW e ntlafalitsoeng. Bakeng sa sebopeho sa Mach-O (macOS), ts'ehetso ea meralo ea arm64, letsoho, le i386, lintlafatso tsa nako ea lihokela (LTO), le li-stack unwinding bakeng sa ho sebetsana le mokhelo li kentsoe tšebetsong.
  • Libc++ e sebelisa likarolo tse ncha tsa maemo a C++20 'me e se e qalile nts'etsopele ea likarolo tsa litlhaloso tsa C++2b. Ts'ehetso e ekelitsoeng bakeng sa moaho o thibelang ts'ehetso ea tikoloho (“-DLIBCXX_ENABLE_LOCALIZATION=OFF”) le lisebelisoa tsa ho hlahisa linomoro tsa pseudo-random (“-DLIBCXX_ENABLE_RANDOM_DEVICE=OFF”).

Source: opennet.ru

Eketsa ka tlhaloso