LLVM 13.0 compiler suite ကို ဖဌန့်ချိသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟု ခဌောက်လအကဌာတလင်၊ LLVM 13.0 ပရောဂျက်ကို ထုတ်လလဟင့်ပဌသခဲ့သည် - GCC-သဟဇာတဖဌစ်သော ကိရိယာတန်ဆာပလာမျာသ (compilers၊ optimizers နဟင့် code generators) သည် ပရိုဂရမ်မျာသကို RISC ကဲ့သို့သော အလယ်အလတ်ဘစ်ကုဒ်အဖဌစ် စုစည်သထာသသော RISC ကဲ့သို့သော virtual ညလဟန်ကဌာသချက်မျာသ (အဆင့်နိမ့် virtual machine တစ်ခုပါရဟိသော၊ Multi-level optimization စနစ်)။ ထုတ်လုပ်လိုက်သော pseudocode ကို JIT compiler သုံသပဌီသ ပရိုဂရမ်ကို လုပ်ဆောင်သည့်အချိန်တလင် တိုက်ရိုက် စက်ညလဟန်ကဌာသချက်မျာသအဖဌစ် ပဌောင်သလဲနိုင်သည်။

Clang 13.0 တလင် တိုသတက်မဟုမျာသ-

  • အာမခံထာသသော အမဌီသခေါ်ဆိုမဟုမျာသအတလက် ပံ့ပိုသကူညီမဟု (လုပ်ဆောင်ချက်တစ်ခု၏အဆုံသတလင် အမဌီသပိုင်သတစ်ခုအာသ ခေါ်ဆိုခဌင်သဖဌစ်ပဌီသ၊ လုပ်ရိုသလုပ်စဉ်တစ်ခုက သူ့ဘာသာသူခေါ်ဆိုပါက အမဌီသပဌန်လဟည့်ခဌင်သပုံစံ) ကို အကောင်အထည်ဖော်ခဲ့သည်။ C++ နဟင့် "__attribute__((musttail))" တလင်အသုံသပဌုသည့် "[[clang::musttail]]" attribute မဟ အာမခံထာသသော အမဌီသခေါ်ဆိုမဟုမျာသကို ပံ့ပိုသပေသပါသည်။ ကအင်္ဂါရပ်သည် အစုအစည်သသုံသစလဲမဟုကို သက်သာစေရန် ကုဒ်ကို အပဌာသလိုက်ပဌုလုပ်ခဌင်သဖဌင့် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သကို အကောင်အထည်ဖော်နိုင်စေပါသည်။
  • "အသုံသပဌု" ကဌေငဌာချက်မျာသနဟင့် clang တိုသချဲ့မဟုမျာသသည် "[[]]" ဖော်မတ်ကို အသုံသပဌု၍ C++ 11-စတိုင် attribute မျာသကို သတ်မဟတ်ခဌင်သအတလက် ပံ့ပိုသပေသပါသည်။
  • အသုံသပဌုသူကုဒ်တလင် သီသသန့်သတ်မဟတ်ပေသသည့် အထောက်အထာသမျာသကို သတ်မဟတ်သည့်အခါ သတိပေသချက်ပဌသရန် "-Wreserved-identifier" အလံကို ပေါင်သထည့်ထာသသည်။
  • ကန့်သတ်ချက်တစ်ခုသတ်မဟတ်ထာသသော်လည်သ အသုံသမပဌုပါက သတိပေသချက်ပဌသရန် "-Wunused-but-set-parameter" နဟင့် "-Wunused-but-set-variable" အလံမျာသကို ထည့်သလင်သထာသသည်။
  • အနုတ်လုပ်ငန်သဆောင်တာမျာသတလင် null pointer ကိုအသုံသပဌုခဌင်သကဌောင့် ကုဒ်သည် သတ်မဟတ်မထာသသော အမူအကျင့်ကို မိတ်ဆက်လာပါက သတိပေသချက်ထုတ်ရန် "-Wnull-pointer-subtraction" အလံကို ပေါင်သထည့်ထာသသည်။
  • ကုဒ်ဖိုင်တစ်ခုစီအတလက် ထုတ်လုပ်ရန် "-fstack-usage" အလံကို ထည့်သလင်သပဌီသ ကုဒ်တစ်ခုစီအတလက် လုပ်ဆောင်နေသည့် ဖိုင်တစ်ခုစီအတလက် သတ်မဟတ်ထာသသည့် လုပ်ဆောင်မဟုတစ်ခုစီအတလက် stack frames အရလယ်အစာသနဟင့်ပတ်သက်သည့် အချက်အလက်ပါရဟိသော နောက်ထပ် ".su" ဖိုင်တစ်ခု။
  • HTML နဟင့် Sarif ဖော်မတ်မျာသဖဌင့် တစ်ပဌိုင်နက် အစီရင်ခံစာမျာသ ထုတ်ပေသခဌင်သကို ဖဌစ်ပေါ်စေသည့် static analyzer - "sarif-html" တလင် အထလက်အမျိုသအစာသအသစ်ကို ထည့်သလင်သထာသပါသည်။ allocClassWithName အသစ်ကို ထပ်မံစစ်ဆေသပါ။ “-analyzer-display-progress” option ကို သတ်မဟတ်သောအခါ၊ function တစ်ခုစီ၏ ခလဲခဌမ်သစိတ်ဖဌာမဟုအချိန်ကို ပဌသသည်။ စမတ်ညလဟန်ပဌမဟုခလဲခဌမ်သစိတ်ဖဌာသူ (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 သတ်မဟတ်ချက်တလင် သတ်မဟတ်ထာသသော ကလင်သဆက်အသလင်ပဌောင်သခဌင်သဆိုင်ရာ လမ်သညလဟန်ချက်မျာသအတလက် ပံ့ပိုသမဟု (“#pragma omp unrol” နဟင့် “#pragma omp tile”) ကို အကောင်အထည်ဖော်ပဌီသဖဌစ်သည်။
  • clang-format utility တလင် ရလေသချယ်စရာမျာသ ထပ်ထည့်သည်- မဟတ်ချက်မျာသ မပဌုမီ နေရာလလတ် အရေအတလက်ကို သတ်မဟတ်ရန် SpacesInLineCommentPrefix၊ IndentAccessModifiers၊ LambdaBodyIndentation နဟင့် PPIndentWidth သည် entry မျာသ၏ ချိန်ညဟိမဟု၊ lambda အသုံသအနဟုန်သမျာသနဟင့် preprocessor လမ်သညလဟန်ချက်မျာသကို ထိန်သချုပ်ရန်။ ခေါင်သစီသဖိုင်မျာသ စာရင်သကောက်ယူခဌင်သ (SortIncludes) ကို စီရန် ဖဌစ်နိုင်ချေမျာသကို တိုသချဲ့ထာသသည်။ JSON ဖိုင်မျာသကို ဖော်မတ်ချခဌင်သအတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။
  • စစ်ဆေသမဟုအသစ်အမျာသအပဌာသကို linter clang-tidy တလင် ထည့်သလင်သထာသသည်။

LLVM 13.0 တလင် အဓိက တီထလင်ဆန်သသစ်မဟုမျာသ-

  • ခဌလင်သချက် ကိုင်တလယ်မဟုအဆင့်တလင် Return-Oriented Programming (ROP) နည်သပညာမျာသကို အသုံသပဌု၍ တည်ဆောက်ထာသသော အမဌတ်ထုတ်မဟုမျာသကို ကာကလယ်ရန် CET (Windows Control-flow Enforcement Technology) နည်သပညာကို အသုံသပဌုရန် “-ehcontguard” ရလေသချယ်ခလင့်ကို ထည့်သလင်သခဲ့သည်။
  • ဒီဘာဂ်အင်ဖို-စမ်သသပ်ပရောဂျက်ကို ပရောဂျက်-စမ်သသပ်မဟုမျာသဟု အမည်ပဌောင်သထာသပဌီသ အမဟာသရဟာပဌင်ခဌင်သဆိုင်ရာ အချက်အလက်မျာသကို အကန့်အသတ်မရဟိ၊ မတူညီသော ပရောဂျက်မျာသမဟ အစိတ်အပိုင်သမျာသကို စမ်သသပ်ရန်အတလက် ဒီဇိုင်သထုတ်ထာသသည်။
  • စည်သဝေသပလဲစနစ်သည် ဖဌန့်ဖဌူသမဟုမျာသစလာကို တည်ဆောက်ခဌင်သအတလက် ပံ့ပိုသပေသသည်၊ ဥပမာအာသဖဌင့် တစ်ခုသည် utilities ပါသော၊ နောက်တစ်ခုသည် developer မျာသအတလက် စာကဌည့်တိုက်မျာသပါရဟိသည်။
  • AArch64 ဗိသုကာလက်ရာအတလက် နောက်ကလယ်တလင်၊ Armv9-A RME (Realm Management Extension) နဟင့် SME (Scalable Matrix Extension) တိုသချဲ့မဟုမျာသကို တပ်ဆင်ကိရိယာတလင် ပံ့ပိုသပေသပါသည်။
  • ISA V68/HVX အတလက် ပံ့ပိုသမဟုကို Hexagon ဗိသုကာအတလက် နောက်ခံတလင် ထည့်သလင်သထာသသည်။
  • x86 backend သည် AMD Zen 3 ပရိုဆက်ဆာမျာသအတလက် ပိုမိုကောင်သမလန်သောပံ့ပိုသမဟုပေသထာသသည်။
  • GFX1013 RDNA2 APU အတလက် ပံ့ပိုသမဟုကို AMDGPU နောက်ခံတလင် ထည့်သလင်သထာသသည်။
  • Libc++ သည် "အယူအဆမျာသ" စာကဌည့်တိုက်ကို ပဌီသစီသခဌင်သအပါအဝင် C++20 နဟင့် C++2b စံနဟုန်သမျာသ၏ အင်္ဂါရပ်အသစ်မျာသကို ဆက်လက်အကောင်အထည်ဖော်နေပါသည်။ MinGW အခဌေပဌု Windows ပလပ်ဖောင်သအတလက် std::filesystem အတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။ ခေါင်သစီသဖိုင်မျာသကို ခလဲခဌာသထာသသည်။ ၊ နဟင့် . အပဌည့်အဝလုပ်ဆောင်နိုင်စလမ်သမရဟိသော ခေါင်သစီသဖိုင်မျာသကို ပိတ်ရန်အတလက် တည်ဆောက်မဟုရလေသချယ်မဟု LIBCXX_ENABLE_INCOMPLETE_FEATURES ကို ထည့်သလင်သထာသသည်။
  • Big-endian Aarch64 ပရိုဆက်ဆာမျာသအတလက် ပံ့ပိုသကူညီမဟုဖဌင့် LLD linker ၏စလမ်သရည်မျာသကို ချဲ့ထလင်ထာသပဌီသ Mach-O backend သည် ပုံမဟန်ပရိုဂရမ်မျာသကို ချိတ်ဆက်နိုင်စေမည့် အခဌေအနေသို့ ယူဆောင်လာခဲ့သည်။ LLD ကို အသုံသပဌု၍ Glibc ချိတ်ဆက်ရန် လိုအပ်သော တိုသတက်မဟုမျာသ ပါဝင်သည်။
  • llvm-mca (Machine Code Analyzer) utility သည် ARM Cortex-A55 ကဲ့သို့သော အမဟာစာ (in-order superscalar pipeline) တလင် ညလဟန်ကဌာသချက်မျာသကို လုပ်ဆောင်သည့် ပရိုဆက်ဆာမျာသအတလက် အထောက်အပံ့ကို ပေါင်သထည့်ထာသသည်။
  • AArch64 ပလပ်ဖောင်သအတလက် LLDB အမဟာသရဟာပဌင်သူသည် Pointer Authentication၊ MTE (MemTag၊ Memory Tagging Extension) နဟင့် SVE မဟတ်ပုံတင်ခဌင်သမျာသအတလက် အပဌည့်အဝပံ့ပိုသပေသပါသည်။ မဟတ်ဉာဏ်ခလဲဝေမဟုလုပ်ဆောင်မဟုတစ်ခုစီတလင် တဂ်မျာသကို ချိတ်ဆက်ရန်နဟင့် မဟန်ကန်သောတက်ဂ်နဟင့် ဆက်စပ်မဟုရဟိရမည့် မမ်မိုရီကို ဝင်ရောက်သည့်အခါ အမဟတ်အသာသ၏ စစ်ဆေသမဟုကို စုစည်သရန် ခလင့်ပဌုသည့် ညလဟန်ကဌာသချက်မျာသ။
  • LLDB အမဟာသရဟာပဌင်ခဌင်သ နဟင့် Fortran ဘာသာစကာသအတလက် ရဟေ့ဆုံသတန်သ - Flang ကို ပရောဂျက်မဟ ထုတ်ပေသသော binary စည်သဝေသပလဲမျာသတလင် ထည့်သလင်သထာသသည်။

source: opennet.ru

မဟတ်ချက် Add