LLVM 13.0 සම්පාදක කට්ටලය නිකුත් කිරීම

මාස හයක සංවර්ධනයෙන් පසු, LLVM 13.0 ව්‍යාපෘතිය නිකුතුව ඉදිරිපත් කරන ලදී - GCC-අනුකූල මෙවලම් කට්ටලයක් (සම්පාදක, ප්‍රශස්තිකරණ සහ කේත උත්පාදක) RISC වැනි අතථ්‍ය උපදෙස් වල අතරමැදි බිට්කෝඩ් බවට වැඩසටහන් සම්පාදනය කරයි (පහළ මට්ටමේ අතථ්‍ය යන්ත්‍රයක් සහිත ය. බහු මට්ටමේ ප්රශස්තකරණ පද්ධතිය). උත්පාදනය කරන ලද ව්‍යාජ කේත JIT සම්පාදකයක් භාවිතයෙන් වැඩසටහන ක්‍රියාත්මක කරන අවස්ථාවේදී සෘජුවම යන්ත්‍ර උපදෙස් බවට පරිවර්තනය කළ හැක.

Clang 13.0 හි වැඩිදියුණු කිරීම්:

  • සහතික කළ ටේල් ඇමතුම් සඳහා ක්‍රියාත්මක කරන ලද සහය (ශ්‍රිතයක් අවසානයේ දී උප සබ්‍රවුටීන් ඇමතීම, උපසිරසියම ඇමතුමක් ගන්නේ නම් වලිග පුනරාවර්තනයක් සාදයි). සහතික කළ ටේල් ඇමතුම් සඳහා සහය සපයනු ලබන්නේ "[[clang::musttail]]" උපලක්ෂණ C++ සහ "__attribute__((musttail))" C හි, "ආපසු" ප්‍රකාශයක භාවිතා කරමිනි. තොග පරිභෝජනය සුරැකීමට පැතලි පුනරාවර්තනයකට කේතය යෙදවීමෙන් ප්‍රශස්තකරණයන් ක්‍රියාත්මක කිරීමට විශේෂාංගය ඔබට ඉඩ සලසයි.
  • "භාවිතා කිරීම" ප්‍රකාශන සහ ක්ලැන්ග් දිගු "[[]]" ආකෘතිය භාවිතයෙන් C++11-ශෛලීය ගුණාංග නිර්වචනය කිරීම සඳහා සහය දක්වයි.
  • ඔබ පරිශීලක කේතයේ වෙන් කර ඇති හඳුනාගැනීම් සඳහන් කරන විට අනතුරු ඇඟවීමක් පෙන්වීමට "-Wreserved-identifier" ධජය එක් කරන ලදී.
  • පරාමිතියක් හෝ විචල්‍යයක් සකසා ඇති නමුත් භාවිතා නොකළහොත් අනතුරු ඇඟවීමක් පෙන්වීමට "-Wunused-but-set-parameter" සහ "-Wunused-but-set-variable" ධජ එකතු කරන ලදී.
  • අඩුකිරීමේ මෙහෙයුම් වලදී null pointer එකක් භාවිතා කිරීම හේතුවෙන් කේතය නිර්වචනය නොකළ හැසිරීමක් හඳුන්වා දිය හැකි නම් අනතුරු ඇඟවීමක් නිකුත් කිරීමට "-Wnull-pointer-subtraction" ධජය එක් කරන ලදී.
  • එක් එක් කේත ගොනුව සඳහා සකසන ලද ගොනුවේ අර්ථ දක්වා ඇති එක් එක් කාර්යය සඳහා අට්ටි රාමු වල ප්‍රමාණය පිළිබඳ තොරතුරු අඩංගු අතිරේක ".su" ගොනුවක් උත්පාදනය කිරීමට "-fstack-usage" ධජය එක් කරන ලදී.
  • ස්ථිතික විශ්ලේෂකය වෙත නව ප්‍රතිදාන වර්ගයක් එක් කර ඇත - “sarif-html”, එය HTML සහ Sarif ආකෘතිවලින් එකවර වාර්තා ජනනය කිරීමට හේතු වේ. නව allocClassWithName චෙක්පත එක් කරන ලදී. "-analyzer-display-progress" විකල්පය සඳහන් කරන විට, එක් එක් කාර්යයේ විශ්ලේෂණ කාලය දර්ශනය වේ. ස්මාර්ට් පොයින්ටර් විශ්ලේෂකය (alpha.cplusplus.SmartPtr) පාහේ සූදානම්.
  • OpenCL සහාය හා සම්බන්ධ හැකියාවන් පුළුල් කර ඇත. නව දිගු cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields සහ __cl_clang_non_portable_kernel_param_types සඳහා සහය එක් කරන ලදී. OpenCL 3.0 පිරිවිතර ක්‍රියාත්මක කිරීම දිගටම කරගෙන ගොස් ඇත. C සඳහා, වෙනත් අනුවාදයක් පැහැදිලිව තෝරාගෙන නොමැති නම්, OpenCL 1.2 පිරිවිතර පෙරනිමියෙන් භාවිතා වේ. C++ සඳහා, ".clcpp" දිගුව සහිත ගොනු සඳහා සහය එක් කර ඇත.
  • OpenMP 5.1 පිරිවිතරයේ අර්ථ දක්වා ඇති loop පරිවර්තන විධාන (“#pragma omp unrol” සහ “#pragma omp tile”) සඳහා සහය ක්‍රියාත්මක කර ඇත.
  • clang-format utility වෙත විකල්ප එකතු කරන ලදී: SpacesInLineCommentPrefix අදහස් දැක්වීමට පෙර හිස්තැන් ගණන නිර්වචනය කිරීමට, IndentAccessModifiers, LambdaBodyIndentation සහ PPIndentWidth ඇතුළත් කිරීම්, ලැම්ඩා ප්‍රකාශන සහ පෙර සැකසුම් විධානයන් පෙළගැස්වීම පාලනය කිරීමට. ශීර්ෂ ගොනු (SortIncludes) ගණන් කිරීම වර්ග කිරීම සඳහා ඇති හැකියාව පුළුල් කර ඇත. JSON ගොනු හැඩතල ගැන්වීම සඳහා සහය එක් කරන ලදී.
  • නව චෙක්පත් විශාල කොටසක් linter clang-tidy වෙත එකතු කර ඇත.

LLVM 13.0 හි ප්‍රධාන නවෝත්පාදන:

  • CET (Windows Control-flow Enforcement Technology) තාක්‍ෂණය භාවිත කිරීමට “-ehcontguard” විකල්පය එක් කරන ලද අතර, ව්‍යතිරේක හැසිරවීමේ අදියරේදී Return-Oriented Programming (ROP) ශිල්පීය ක්‍රම භාවිතයෙන් සාදන ලද සූරාකෑම් ක්‍රියාත්මක කිරීමෙන් ආරක්ෂා වේ.
  • debuginfo-test ව්‍යාපෘතිය හරස් ව්‍යාපෘති-පරීක්ෂණ ලෙස නැවත නම් කර ඇති අතර තොරතුරු දෝෂහරණය කිරීමට සීමා නොවී විවිධ ව්‍යාපෘති වලින් සංරචක පරීක්ෂා කිරීමට සැලසුම් කර ඇත.
  • එකලස් කිරීමේ පද්ධතිය බෙදාහැරීම් කිහිපයක් ගොඩනැගීම සඳහා සහය සපයයි, උදාහරණයක් ලෙස, එකක් උපයෝගිතා සමඟ, සහ අනෙක සංවර්ධකයින් සඳහා පුස්තකාල සමඟ.
  • AArch64 ගෘහනිර්මාණ ශිල්පය සඳහා පසු අන්තයේ, Armv9-A RME (Realm Management Extension) සහ SME (Scalable Matrix Extension) දිගු සඳහා සහය එකලස් කරන්නා තුළ ක්‍රියාත්මක වේ.
  • ISA V68/HVX සඳහා සහය ෂඩාස්‍ර ගෘහනිර්මාණ ශිල්පය සඳහා පසුබිමට එක් කර ඇත.
  • x86 පසුපෙළ AMD Zen 3 ප්‍රොසෙසර සඳහා වැඩි දියුණු කළ සහය ඇත.
  • GFX1013 RDNA2 APU සඳහා AMDGPU පසුපෙළට සහය එක් කරන ලදී.
  • Libc++ "සංකල්ප" පුස්තකාලය සම්පූර්ණ කිරීම ඇතුළුව C++20 සහ C++2b ප්‍රමිතිවල නව විශේෂාංග ක්‍රියාත්මක කිරීම දිගටම කරගෙන යයි. MinGW මත පදනම් වූ Windows වේදිකාව සඳහා std:: filesystem සඳහා සහය එක් කරන ලදී. ශීර්ෂ ගොනු වෙන් කර ඇත , සහ . සම්පුර්ණයෙන්ම ක්‍රියාත්මක නොවූ ක්‍රියාකාරීත්වය සහිත ශීර්ෂ ගොනු අක්‍රිය කිරීමට ගොඩනැගීමේ විකල්පය LIBCXX_ENABLE_INCOMPLETE_FEATURES එක් කරන ලදී.
  • LLD සම්බන්ධකයේ හැකියාවන් පුළුල් කර ඇති අතර, Big-endian Aarch64 ප්‍රොසෙසර සඳහා සහය ක්‍රියාවට නංවා ඇති අතර, Mach-O පසුපෙළ නිත්‍ය වැඩසටහන් සම්බන්ධ කිරීමට ඉඩ සලසන තත්වයකට ගෙන ඇත. LLD භාවිතයෙන් Glibc සම්බන්ධ කිරීමට අවශ්‍ය වැඩිදියුණු කිරීම් ඇතුළත් වේ.
  • llvm-mca (යන්ත්‍ර කේත විශ්ලේෂකය) උපයෝගිතා මඟින් ARM Cortex-A55 වැනි (පිළිවෙලින් සුපිරි පරිමාණ නල මාර්ගය) උපදෙස් ක්‍රියාත්මක කරන ප්‍රොසෙසර සඳහා සහය එක් කර ඇත.
  • AArch64 වේදිකාව සඳහා LLDB නිදොස්කරණය Pointer Authentication, MTE (MemTag, Memory Tagging Extension) සහ SVE රෙජිස්ටර් සඳහා පූර්ණ සහය සපයයි. එක් එක් මතක වෙන් කිරීමේ මෙහෙයුමට ටැග් බැඳීමට සහ මතකයට ප්‍රවේශ වන විට දර්ශකයේ චෙක්පතක් සංවිධානය කිරීමට ඔබට ඉඩ සලසන විධාන එකතු කරන ලදි, එය නිවැරදි ටැගය සමඟ සම්බන්ධ විය යුතුය.
  • LLDB නිදොස්කරණය සහ Fortran භාෂාව සඳහා ඉදිරිපස - Flang ව්‍යාපෘතිය මගින් ජනනය කරන ලද ද්විමය එකලස් කිරීම් වලට එකතු කර ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න