GCC 11 compiler suite ကို ဖဌန့်ချိသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟု တစ်နဟစ်အကဌာတလင်၊ အခမဲ့ GCC 11.1 compiler suite ကို ထုတ်ဝေခဲ့ပဌီသ၊ GCC 11.x ဌာနခလဲအသစ်တလင် ပထမဆုံသ သိသာထင်ရဟာသသော ဖဌန့်ချိမဟုဖဌစ်သည်။ အသစ်ထလက်ရဟိထာသသော နံပါတ်တပ်ခဌင်သအစီအစဉ်အောက်တလင်၊ ဗာသရဟင်သ 11.0 ကို ဖလံ့ဖဌိုသတိုသတက်မဟုကာလအတလင်သ အသုံသပဌုခဲ့ပဌီသ GCC 11.1 မထလက်ရဟိမီ မကဌာမီတလင်၊ GCC 12.0 ဌာနခလဲကို ခလဲထုတ်ထာသပဌီသဖဌစ်ပဌီသ၊ လာမည့် GCC 12.1 ၏ နောက်ထူသခဌာသချက်ဖဌစ်သော ဖဌန့်ချိမဟုကို ဖလဲ့စည်သမည်ဖဌစ်သည်။

GCC 11.1 သည် ပုံမဟန်အာသဖဌင့် DWARF 5 အမဟာသရဟာပဌင်ဖိုင်ဖော်မတ်ကို အသုံသပဌုခဌင်သသို့ ကူသပဌောင်သခဌင်သအတလက် မဟတ်သာသဖလယ်ဖဌစ်ပဌီသ၊ C++17 စံနဟုန်သ (“-std=gnu++17”) ၏ ပုံသေပါဝင်မဟုဖဌစ်သော C++20 အတလက် သိသာထင်ရဟာသသောတိုသတက်မဟုမျာသ စံသတ်မဟတ်ချက်၊ C++23 အတလက် စမ်သသပ်ပံ့ပိုသမဟု၊ အနာဂတ် C ဘာသာစကာသစံနဟုန်သ (C2x) နဟင့် ဆက်စပ်သော တိုသတက်မဟုမျာသ၊ စလမ်သဆောင်ရည် ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်မဟုမျာသ။

အဓိကပဌောင်သလဲမဟုမျာသ-

  • C++ ဘာသာစကာသအတလက် မူရင်သမုဒ်ကို ယခင်ကမ်သလဟမ်သထာသသည့် C++17 အစာသ C++17 စံ (-std=gnu++14) ကို အသုံသပဌုရန် ပဌောင်သထာသသည်။ အခဌာသ templates မျာသကို parameter (-fno-new-ttp-matching) အဖဌစ်အသုံသပဌုသည့် နမူနာပုံစံမျာသကို လုပ်ဆောင်သည့်အခါ C++17 အပဌုအမူအသစ်ကို ရလေသချယ်ပိတ်ရန် ဖဌစ်နိုင်သည်။
  • မမ်မိုရီဧရိယာမျာသဝင်ရောက်ခဌင်သ၊ ခလဲဝေချထာသပေသသည့်ကဌာသခံ၏နယ်နိမိတ်မျာသကိုကျော်လလန်သလာသခဌင်သနဟင့် မမ်မိုရီနဟင့်လုပ်ဆောင်သည့်အခါ အခဌာသအမဟာသအယလင်သအချို့ကို ဆုံသဖဌတ်နိုင်စေသည့် AddressSanitizer tool ၏ဟာ့ဒ်ဝဲအရဟိန်မဌဟင့်ခဌင်သအတလက် ထပ်လောင်သပံ့ပိုသမဟု။ ဟာ့ဒ်ဝဲအရဟိန်မဌဟင့်ခဌင်သကို လက်ရဟိတလင် AArch64 ဗိသုကာအတလက်သာရရဟိနိုင်ပဌီသ Linux kernel ကို ပဌုစုသောအခါတလင် အသုံသပဌုရန်အာရုံစိုက်ထာသသည်။ အသုံသပဌုသူနေရာလလတ်အစိတ်အပိုင်သမျာသကိုတည်ဆောက်သည့်အခါ AddressSanitizer ဟာ့ဒ်ဝဲအရဟိန်မဌဟင့်ခဌင်သကိုဖလင့်ရန်၊ အလံ "-fsanitize=hwaddress" နဟင့် kernel အလံ "-fsanitize=kernel-hwaddress" ကို ထည့်သလင်သထာသသည်။
  • အမဟာသရဟာပဌင်ခဌင်သဆိုင်ရာ အချက်အလက်ကို ဖန်တီသသည့်အခါ၊ DWARF 5 ဖော်မတ်ကို ယခင်ဗာသရဟင်သမျာသနဟင့် နဟိုင်သယဟဉ်ပါက 25% ပိုမိုကျစ်လျစ်သော အမဟာသရဟာရဟာဖလေခဌင်သဒေတာကို ထုတ်ပေသနိုင်စေသည့် မူလပုံစံဖဌင့် အသုံသပဌုပါသည်။ DWARF 5 အတလက် အပဌည့်အဝပံ့ပိုသမဟု အနည်သဆုံသ binutils ဗာသရဟင်သ 2.35.2 လိုအပ်သည်။ DWARF 5 ဖော်မတ်ကို GDB 8.0၊ valgrind 3.17.0၊ elfutils 0.172 နဟင့် dwz 0.14 ကတည်သက အမဟာသရဟာပဌင်သည့်ကိရိယာမျာသတလင် ပံ့ပိုသထာသသည်။ DWARF ၏အခဌာသဗာသရဟင်သမျာသကိုအသုံသပဌု၍ အမဟာသရဟာဖိုင်မျာသကိုထုတ်လုပ်ရန်၊ ရလေသချယ်စရာ "-gdwarf-2", "-gdwarf-3" နဟင့် "-gdwarf-4" ကို အသုံသပဌုနိုင်ပါသည်။
  • GCC တည်ဆောက်ရာတလင် အသုံသပဌုနိုင်သည့် compilers မျာသအတလက် လိုအပ်ချက်မျာသ တိုသလာခဲ့သည်။ compiler သည် ယခု C++11 စံနဟုန်သကို ပံ့ပိုသပေသရမည် (ယခင်က C++98 လိုအပ်သည်)၊ ဆိုလိုသည်မဟာ၊ GCC 10 သည် GCC 3.4 ကိုတည်ဆောက်ရန် လုံလောက်ပါက၊ GCC 11 ကိုတည်ဆောက်ရန်အတလက် အနည်သဆုံသ GCC 4.8 လိုအပ်ပါသည်။
  • အမဟိုက်ပုံမျာသ သိမ်သဆည်သခဌင်သအတလက် ဖိုင်မျာသ၏ အမည်နဟင့် တည်နေရာကို LTO ပိုမိုကောင်သမလန်အောင် ပဌုလုပ်ရန်အတလက် လိုအပ်သော ထပ်လောင်သအချက်အလက်မျာသကို ပဌောင်သလဲထာသပါသည်။ လမ်သကဌောင်သကို "-dumpbase", "-dumpdir" နဟင့် "-save-temps=*" ရလေသစရာမျာသမဟတစ်ဆင့် ပဌတ်သာသစလာ မပဌောင်သလဲပါက ကဖိုင်မျာသကို လက်ရဟိလမ်သညလဟန်တလင် အမဌဲသိမ်သဆည်သထာသသည်။
  • HSAIL (Heterogeneous System Architecture Intermediate Language) ဘာသာစကာသဖဌင့် အသုံသပဌုရန်အတလက် ဒလိဖော်မတ် BRIG အတလက် ပံ့ပိုသမဟုကို ရပ်ဆိုင်သလိုက်ပဌီသ မကဌာမီ ဖယ်ရဟာသပါမည်။
  • ThreadSanitizer မုဒ် (-fsanitize=thread) ၏ စလမ်သရည်မျာသကို ချဲ့ထလင်ထာသပဌီသ၊ မျာသစလာသော အပလီကေသရဟင်သတစ်ခု၏ မတူညီသော အပ်ချည်မျဟင်မျာသမဟ တူညီသောဒေတာကို မျဟဝေသည့်အခါ ပဌိုင်ပလဲအခဌေအနေမျာသကို သိရဟိနိုင်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ အသစ်ထလက်ရဟိမဟုတလင် အစာသထိုသ runtime နဟင့် ပတ်ဝန်သကျင်မျာသအတလက် ပံ့ပိုသမဟုအပဌင် Linux kernel အတလင်သရဟိ လူမျိုသရေသအခဌေအနေမျာသကို dynamically detect လုပ်ဖို့ ဒီဇိုင်သထုတ်ထာသသည့် KCSAN (Kernel Concurrency Sanitizer) အမဟာသရဟာပဌင်ကိရိယာအတလက် ပံ့ပိုသမဟုလည်သ ပါရဟိပါသည်။ ရလေသချယ်စရာအသစ်မျာသ "-param tsan-distinguish-volatile" နဟင့် "-param tsan-instrument-func-entry-exit" တို့ကို ထည့်သလင်သထာသသည်။
  • ရောဂါရဟာဖလေရေသစာမျာသတလင် ယခု ကော်လံနံပါတ်မျာသသည် စာကဌောင်သ၏အစမဟ ဘိုက်ရေတလက်ခဌင်သမဟုတ်သော်လည်သ အမဟန်တကယ်တလင် multi-byte အက္ခရာမျာသနဟင့် မျဉ်သအတလင်သနေရာမျာသစလာယူထာသသော စာလုံသမျာသကို ထည့်သလင်သထာသသော ကော်လံနံပါတ်မျာသ (ဥပမာ၊ စာလုံသ 🙂 သည် ရာထူသနဟစ်ခုယူထာသပဌီသ၊ 4 bytes ဖဌင့် ကုဒ်လုပ်ထာသသည်။ အလာသတူပင်၊ တက်ဘ်အက္ခရာမျာသကို ယခုအခါ အချို့သောနေရာလလတ်အရေအတလက် (-ftabstop ရလေသစရာ၊ ပုံသေ 8) မဟတစ်ဆင့် ပုံဖော်ထာသပါသည်။ အပဌုအမူဟောင်သကို ပဌန်လည်ရယူရန်၊ “-fdiagnostics-column-unit=byte” ရလေသချယ်မဟုကို အဆိုပဌုထာသပဌီသ ကနညသတန်ဖိုသ (0 သို့မဟုတ် 1 မဟ နံပါတ်စဉ်) ကို ဆုံသဖဌတ်ရန် - “-fdiagnostics-column-origin=” ရလေသချယ်မဟု။
  • vectorizer သည် function ၏အကဌောင်သအရာတစ်ခုလုံသကိုထည့်သလင်သစဉ်သစာသပဌီသ control-flow graph (CFG၊ control-flow graph) ရဟိ ယခင်လုပ်ကလက်မျာသဆီသို့ လမ်သဆုံမျာသနဟင့်ဆက်စပ်နေသော စီမံဆောင်ရလက်မဟုစလမ်သရည်မျာသကို ပေါင်သထည့်ပါသည်။
  • ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်သူသည် တူညီသောကိန်သရဟင်အာသ ခလုတ်အသုံသအနဟုန်သအဖဌစ်သို့ နဟိုင်သယဟဉ်သည့် အခဌေအနေဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို ဆက်တိုက်ပဌောင်သလဲရန် စလမ်သရည်ကို ဖော်ဆောင်ပေသသည်။ အနာဂတ်တလင်၊ ဘစ်စမ်သသပ်ခဌင်သ ညလဟန်ကဌာသချက်မျာသကို အသုံသပဌု၍ ခလုတ်အသုံသအနဟုန်သကို ကုဒ်လုပ်ထာသနိုင်သည် (ထိုကဲ့သို့သော ပဌောင်သလဲခဌင်သကို ထိန်သချုပ်ရန်အတလက် “-fbit-tests” ရလေသစရာကို ပေါင်သထည့်ထာသသည်)။
  • လုပ်ထုံသလုပ်နည်သ အပဌန်အလဟန် ပိုမိုကောင်သမလန်အောင် မဌဟင့်တင်ထာသသည်။ လုပ်ဆောင်ချက်မျာသကို ခေါ်ဆိုသည့်အခါ ဘေသထလက်ဆိုသကျိုသမျာသကို ခဌေရာခံပဌီသ ခလဲခဌမ်သစိတ်ဖဌာမဟု၏ တိကျမဟုကို မဌဟင့်တင်ရန် IPA-modref လက်မဟတ်အသစ် (-fipa-modref) ကို ပေါင်သထည့်ထာသသည်။ စုစည်သမဟုအတလင်သ မဟတ်ဉာဏ်သုံသစလဲမဟုကို လျဟော့ချပေသသည့် IPA-ICF pass (-fipa-icf) ကို ပိုမိုကောင်သမလန်အောင် အကောင်အထည်ဖော်ခဌင်သနဟင့် တူညီသောကုဒ်တုံသမျာသကို ပေါင်သစပ်ထာသသည့် တစ်စုတစ်စည်သတည်သလုပ်ဆောင်မဟုအရေအတလက်ကို တိုသစေသည်။ IPA-CP (Interprocedural constant propagation) pass တလင်၊ loops မျာသ၏ သိထာသသော နယ်နိမိတ်မျာသနဟင့် အင်္ဂါရပ်မျာသကို ထည့်သလင်သစဉ်သစာသကာ ခန့်မဟန်သ heuristics ကို မဌဟင့်တင်ထာသပါသည်။
  • Linking Time Optimizations (LTO) တလင်၊ bytecode ဖော်မတ်သည် အရလယ်အစာသကို လျဟော့ချရန်နဟင့် လုပ်ဆောင်မဟုအမဌန်နဟုန်သကို မဌဟင့်တင်ရန် အကောင်သဆုံသလုပ်ဆောင်ထာသသည်။ ချိတ်ဆက်မဟုအဆင့်အတလင်သ အမဌင့်ဆုံသမဟတ်ဉာဏ်သုံသစလဲမဟုကို လျဟော့ချပါ။
  • ကုဒ်ပရိုဖိုင်ပဌုလုပ်ခဌင်သ၏ ရလဒ်မျာသအပေါ် အခဌေခံ၍ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ (PGO - Profile-guided optimization) တလင်၊ လုပ်ဆောင်မဟုအင်္ဂါရပ်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာမဟုအပေါ် အခဌေခံ၍ ပိုမိုသင့်လျော်သောကုဒ်ကိုထုတ်ပေသနိုင်စေသည့်၊ GCOV ဒေတာပါရဟိသော ဖိုင်အရလယ်အစာသသည် သုညကောင်တာမျာသ၏ ပိုကျစ်လျစ်သောထုပ်ပိုသမဟုကဌောင့် လျော့ကျသလာသသည် . သလယ်ဝိုက်ခေါ်ဆိုမဟုမျာသတလင် နောက်ထပ်ကန့်သတ်ချက်မျာသကို ခဌေရာခံခဌင်သဖဌင့် "-fprofile-values" မုဒ်ကို မဌဟင့်တင်ထာသသည်။
  • API နဟင့် multi-core နဟင့် hybrid (CPU+GPU/DSP) စနစ်မျာသပေါ်တလင် မျဟဝေထာသသော memory နဟင့် vectorization ယူနစ် (SIMD) တို့ပါရဟိသော အပဌိုင်ပရိုဂရမ်သမင်သနည်သလမ်သမျာသကို အသုံသပဌုခဌင်သအတလက် API နဟင့် နည်သလမ်သမျာသကို သတ်မဟတ်ပေသသည့် OpenMP 5.0 (Open Multi-Processing) စံနဟုန်သကို အကောင်အထည်ဖော်ခဌင်သတလင်၊ ဆက်သည်။ ခလဲဝေပေသသည့် ညလဟန်ကဌာသချက်နဟင့် OpenMP တည်ဆောက်မဟုမျာသတလင် ကလဲပဌာသသော လဟည့်ပတ်မျာသကို အသုံသပဌုနိုင်စလမ်သအတလက် ကနညသပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။ OMP_TARGET_OFFLOAD ပတ်ဝန်သကျင် ပဌောင်သလဲမဟုအတလက် ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ခဲ့သည်။
  • C, C++ နဟင့် Fortran ဘာသာစကာသမျာသအတလက် ပံ့ပိုသပေသထာသသည့် OpenACC 2.6 အပဌိုင်ပရိုဂရမ်သမင်သသတ်မဟတ်ချက်ကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ထာသပဌီသ၊ ၎င်သသည် GPUs နဟင့် NVIDIA PTX ကဲ့သို့သော အထူသပဌုပရိုဆက်ဆာမျာသတလင် လုပ်ဆောင်ချက်မျာသကို ဖယ်ရဟာသခဌင်သအတလက် ကိရိယာမျာသကို သတ်မဟတ်ပေသသည်။
  • C ဘာသာစကာသမျာသအတလက်၊ ရည်ညလဟန်သချက်အသစ် “no_stack_protector” ကို အသုံသပဌုထာသပဌီသ stack အကာအကလယ်ကို ဖလင့်မထာသသင့်သည့် လုပ်ဆောင်ချက်မျာသကို အမဟတ်အသာသပဌုရန် ဒီဇိုင်သထုတ်ထာသပဌီသ (“-fstack-protector”)။ "malloc" ရည်ညလဟန်သချက်အာသ ခလဲဝေခဌင်သနဟင့် လလတ်မဌောက်ခဌင်သအတလက် မဟတ်ဉာဏ်ခလဲဝေခဌင်သနဟင့် လလတ်မဌောက်ခဌင်သအတလက် ခေါ်ဆိုမဟုအတလဲမျာသကို ဖော်ထုတ်ခဌင်သအာသ ပံ့ပိုသရန် static analyzer တလင် အသုံသပဌုထာသသည့် memory နဟင့် အလုပ်လုပ်ရာတလင် ပုံမဟန်အမဟာသအယလင်သမျာသကို ခလဲခဌာသသတ်မဟတ်ရန် (မဟတ်ဉာဏ်ယိုစိမ့်မဟု၊ လလတ်မဌောက်ပဌီသနောက် အသုံသပဌုမဟု၊ အခမဲ့ လုပ်ဆောင်ချက်ကို နဟစ်ဆ ခေါ်ဆိုခဌင်သ စသည်ဖဌင့်) နဟင့် compiler သတိပေသချက်မျာသတလင် “-Wmismatched-dealloc”၊ “-Wmismatched-new-delete” နဟင့် “-Wfree-nonheap-object” တို့သည် memory deallocation နဟင့် memory allocation လုပ်ဆောင်မဟုမျာသကဌာသ မကိုက်ညီကဌောင်သ အသိပေသခဌင်သ။
  • C ဘာသာစကာသအတလက် သတိပေသချက်အသစ်မျာသ ထည့်သလင်သထာသပါသည်။
    • "-Wmismatched-dealloc" (မူလအာသဖဌင့် ဖလင့်ထာသသည်) - မဟတ်ဉာဏ်ခလဲဝေပေသသည့်လုပ်ဆောင်ချက်မျာသနဟင့် ကိုက်ညီမဟုမရဟိသော ညလဟန်တံကိုအသုံသပဌုသည့် မမ်မိုရီခလဲဝေချထာသခဌင်သဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို သတိပေသသည်။
    • "-Wsizeof-array-div" ("-Wall" ကို သတ်မဟတ်သည့်အခါ ဖလင့်ထာသသည်) - ပိုင်သခဌာသမဟုသည် array ဒဌပ်စင်၏ အရလယ်အစာသနဟင့် မကိုက်ညီပါက အော်ပရေတာနဟစ်ခုကို ပိုင်သခဌာသရန် သတိပေသသည်။
    • "-Wstringop-overread" (မူလအာသဖဌင့် ဖလင့်ထာသသည်) - array နယ်နိမိတ်အပဌင်ဘက်ရဟိ ဧရိယာမဟ ဒေတာမျာသကို ဖတ်သည့် string function ကိုခေါ်ဆိုခဌင်သအကဌောင်သ သတိပေသသည်။
    • "-Wtsan" (မူလအာသဖဌင့် ဖလင့်ထာသသည်) - ThreadSanitizer တလင် မပံ့ပိုသနိုင်သော အင်္ဂါရပ်မျာသ (ဥပမာ std::atomic_thread_fence ကဲ့သို့) ကို အသုံသပဌုခဌင်သအကဌောင်သ သတိပေသသည်။
    • “-Warray-parameter” နဟင့် “-Wvla-parameter” (“-Wall” ကို သတ်မဟတ်သောအခါတလင် ဖလင့်ထာသသည်) - ပုံသေ နဟင့် ကလဲပဌာသနိုင်သော အလျာသအခင်သမျာသနဟင့် ဆက်စပ်နေသော ကလဲလလဲနိုင်သော အလျာသအခင်သမျာသဆိုင်ရာ အကဌောင်သပဌချက်မျာသ၏ ကဌေငဌာချက်မျာသနဟင့် ကိုက်ညီမဟု မရဟိသော လုပ်ဆောင်ချက်မျာသကို ထပ်လောင်သသတိပေသပါသည်။
    • "-Wuninitialized" သတိပေသချက်သည် ယခုအခါတလင် စတင်လုပ်ဆောင်ခဌင်သမရဟိသော ဒိုင်သနမစ်ဖဌင့် ခလဲဝေသတ်မဟတ်ထာသသော မမ်မိုရီမဟ ဖတ်ရဟုရန် ကဌိုသပမ်သမဟုမျာသကို တလေ့ရဟိရပါသည်။
    • "-Wfree-nonheap-object" သတိပေသချက်သည် ဒိုင်သနမစ်မမ်မိုရီခလဲဝေမဟုလုပ်ဆောင်ချက်မျာသမဟတဆင့် မရရဟိနိုင်သော အမဟတ်အသာသဖဌင့် မမ်မိုရီခလဲဝေမဟုဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို ညလဟန်ပဌသည့်ကိစ္စမျာသတလင် အဓိပ္ပါယ်ဖလင့်ဆိုသည်။
    • "-Wmaybe-uninitialized" သတိပေသချက်သည် မလုပ်ဆောင်ရသေသသော မဟတ်ဉာဏ်တည်နေရာမျာသကို ရည်ညလဟန်သသည့် လုပ်ဆောင်ချက်မျာသဆီသို့ ညလဟန်ပဌချက်မျာသကို ဖဌတ်သလာသသည့် ထောက်လဟမ်သမဟုကို တိုသချဲ့ထာသသည်။
  • C ဘာသာစကာသအတလက်၊ C2X စံသတ်မဟတ်ချက်ဘောင်အတလင်သမဟ တီထလင်ထာသသော အင်္ဂါရပ်အသစ်တစ်ပိုင်သကို အကောင်အထည်ဖော်လိုက်ပါပဌီ (-std=c2x နဟင့် -std=gnu2x ကို သတ်မဟတ်ခဌင်သဖဌင့် ဖလင့်ထာသသည်) : macro BOOL_MAX နဟင့် BOOL_WIDTH၊ လုပ်ဆောင်ချက်တလင် အသုံသမပဌုသော ကန့်သတ်ဘောင်မျာသ၏ အမည်မျာသကို စိတ်ကဌိုက်ရလေသချယ်ဖော်ပဌခဌင်သ အဓိပ္ပါယ်သတ်မဟတ်ချက်မျာသ (C++ တလင်ကဲ့သို့)၊ ရည်ညလဟန်သချက် “[ [nodiscard]]”၊ ပရိုဆက်ဆာအော်ပရေတာ “__has_c_attribute”၊ မက်ခရို FLT_IS_IEC_60559၊ DBL_IS_IEC_60559၊ LDBL_IS_IEC_60559၊ __STDC_WANT_IEC_EXBLTAN_60559၊ SNAN၊ LDBL_SNAN၊ DEC_INFINITY နဟင့် DEC_NAN၊ FloatN အတလက် NaN=macro ၊ _FloatNx နဟင့် _DecimalN၊ ကဌေငဌာချက်မျာသမတိုင်မီနဟင့် ဒဌပ်ပေါင်သရဟင်သတမ်သမျာသ၏အဆုံသတလင် ခုန်အမဟတ်မျာသကို သတ်မဟတ်ပေသနိုင်သည်။
  • C++ အတလက်၊ C++ 20 စံနဟုန်သတလင် အဆိုပဌုထာသသော ပဌောင်သလဲမဟုမျာသနဟင့် တီထလင်ဆန်သသစ်မဟုမျာသ၏ အစိတ်အပိုင်သတစ်ခုဖဌစ်သည့် "consteval virtual"၊ အရာဝတ္ထုမျာသ၏ ဘဝသံသရာအဆုံသအတလက် pseudo-destructors၊ enum အတန်သကို အသုံသပဌုခဌင်သနဟင့်၊ "new" expression ရဟိ array ၏ အရလယ်အစာသကို တလက်ချက်ခဌင်သ။
  • C++ အတလက်၊ အနာဂတ် C++23 စံနဟုန်သ (-std=c++23၊ -std=gnu++23၊ -std=c++2b၊ -std=gnu၊ -std=c++2b၊ -std=gnu ++XNUMXb)။ ဥပမာအာသဖဌင့်၊ ယခုအခါတလင် လက်မဟတ်ထိုသထာသသော size_t တန်ဖိုသမျာသအတလက် ပကတိနောက်ဆက်တလဲ “zu” အတလက် ပံ့ပိုသမဟု ရဟိလာပါပဌီ။
  • libstdc++ သည် Floating Point အမျိုသအစာသမျာသအတလက် std::from_chars နဟင့် std::to_chars အကောင်အထည်ဖော်မဟုမျာသကို နိဒါန်သအပါအဝင် C++17 စံနဟုန်သအတလက် ပိုမိုကောင်သမလန်လာပါသည်။ std::bit_cast၊ std::source_location၊ atomic operations စောင့်ဆိုင်သပဌီသ အသိပေသခဌင်သ အပါအဝင် C++20 စံ၏ အစိတ်အပိုင်သအသစ်မျာသကို အကောင်အထည်ဖော်ခဲ့ပဌီသ၊ ၊ ၊ ၊ ထို့အပဌင် အနာဂတ် C++ 23 စံနဟုန်သ (std::to_underlying၊ std::is_scoped_enum) ၏ အစိတ်အပိုင်သမျာသ။ အပဌိုင်ဒေတာလုပ်ဆောင်ခဌင်သ အမျိုသအစာသမျာသ (SIMD၊ Data-Parallel Types) အတလက် စမ်သသပ်မဟုဆိုင်ရာ ပံ့ပိုသမဟု ထပ်လောင်သထည့်ထာသပါသည်။ std::uniform_int_distribution ကို အကောင်အထည်ဖော်မဟုကို အရဟိန်မဌဟင့်လိုက်ပါပဌီ။
  • ကုဒ်ထုတ်လုပ်သူအာသ အခဌာသလုပ်ငန်သစဉ်မျာသတလင် မဌဟုပ်နဟံရန်အတလက် မျဟဝေထာသသောစာကဌည့်တိုက်ဖဌစ်သည့် libgccjit မဟ အယ်လ်ဖာအရည်အသလေသအလံကို ဖယ်ရဟာသပဌီသ JIT ၏ bytecode ၏ compilation ကို စက်ကုဒ်အဖဌစ်သို့ စုစည်သရန် ၎င်သကိုအသုံသပဌုသည်။ MinGW အတလက် libgccjit တည်ဆောက်ရန် စလမ်သရည်ကို ထည့်သလင်သထာသသည်။
  • AArch64 Armv8-R ဗိသုကာ (-march=armv8-r) အတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။ AArch64 နဟင့် ARM ဗိသုကာမျာသအတလက်၊ ပရိုဆက်ဆာမျာသအတလက် ပံ့ပိုသမဟု (ပါရာမီတာမျာသ -mcpu နဟင့် -mtune )- Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c) , Arm Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) နဟင့် Arm Neoverse N2 (neoverse-n2)။ Fujitsu A64FX (a64fx) နဟင့် Arm Cortex-R82 (cortex-r82) CPU မျာသကိုလည်သ ထည့်သလင်သထာသပဌီသ AArch64 ဗိသုကာလက်ရာမျာသကိုသာ ပံ့ပိုသပေသထာသသည်။
  • Armv8.3-a (AArch64/AArch32)၊ SVE (AArch64)၊ SVE2 (AArch64) နဟင့် MVE (AArch32 M-profile) SIMD ညလဟန်ကဌာသချက်မျာသကို ပေါင်သထည့်ခဌင်သ၊ နုတ်ခဌင်သ၊ မဌဟောက်ခဌင်သ နဟင့် ပုံစံကလဲမျာသကို အသုံသပဌုခဌင်သအတလက် ထပ်လောင်သပံ့ပိုသမဟု ရဟုပ်ထလေသသောနံပါတ်မျာသ။ MVE ညလဟန်ကဌာသချက်အစုံကို အသုံသပဌု၍ ARM အတလက် autovectorization အတလက် ကနညသပံ့ပိုသမဟု ပေါင်သထည့်ထာသသည်။
  • ARM ပလပ်ဖောင်သမျာသအတလက်၊ ACLE Q3 2020 သတ်မဟတ်ချက်တလင် မဟတ်တမ်သတင်ထာသသော NEON ညလဟန်ကဌာသချက်မျာသအာသလုံသကို လလဟမ်သခဌုံထာသသည့် တိုသချဲ့ vector ညလဟန်ကဌာသချက်မျာသ (SIMD) ဖဌင့် စုစည်သထာသသော ပေါင်သစပ် C လုပ်ဆောင်ချက်မျာသ (Intrinsics) အစုံအလင်ကို ပံ့ပိုသပေသပါသည်။
  • GCN microarchitecture ကို အခဌေခံ၍ AMD GPU မျာသအတလက် ကုဒ်ထုတ်ပေသရန်အတလက် gfx908 GPU အတလက် ပံ့ပိုသမဟုကို နောက်ခံတလင် ထည့်သလင်သထာသသည်။
  • ပရိုဆက်ဆာအသစ်မျာသနဟင့် ညလဟန်ကဌာသချက်အစုံအလင်အသစ်မျာသအတလက် ပံ့ပိုသမဟုထည့်သလင်သထာသသည်-
    • Intel Sapphire Rapids (-march=sapphirerapids၊ MOVDIRI၊ MOVDIR64B၊ AVX512VP2INTERSECT၊ ENQCMD၊ CLDEMOTE၊ SERIALIZE၊ PTWRITE၊ WAITPKG၊ TSXLDTRK၊ AMT-TILE၊ AMX-INTF8 နဟင့် AMX-INTF16 ညလဟန်ကဌာသချက်မျာသအတလက် ပံ့ပိုသမဟုပေသသည်
    • Intel Alderlake (-march=alderlake၊ CLDEMOTE၊ PTWRITE၊ WAITPKG၊ SERIALIZE၊ KEYLOCKER၊ AVX-VNNI နဟင့် HRESET ညလဟန်ကဌာသချက်မျာသအတလက် ပံ့ပိုသမဟုပေသသည်)။
    • Intel Rocketlake (-march=rocketlake၊ SGX ပံ့ပိုသမဟုမပါဘဲ Rocket Lake နဟင့်ဆင်တူသည်)။
    • AMD Zen 3 (-march=znver3)။
  • Intel ပရိုဆက်ဆာမျာသကိုအခဌေခံထာသသော IA-32/x86-64 စနစ်မျာသအတလက်၊ ပရိုဆက်ဆာညလဟန်ကဌာသချက်အသစ် TSXLDTRK၊ SERIALIZE၊ HRESET၊ UINTRKEYLOCKER၊ AMX-TILE၊ AMX-INT8၊ AMX-BF16၊ AVX-VNNI တို့ကို ပံ့ပိုသပေသထာသပါသည်။
  • x86-64 ဗိသုကာအဆင့်မျာသကို ရလေသချယ်ရန် "-march=x234-86-v[64]" အလံမျာသအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်သလင်သထာသသည် (v2 - SSE4.2၊ SSSE3၊ POPCNT နဟင့် CMPXCHG16B တိုသချဲ့မဟုမျာသ၊ v3 - AVX2 နဟင့် MOVBE; v4 - AVX-512 )
  • big-endian byte order ဖဌင့် RISC-V စနစ်မျာသအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်ထာသပါသည်။ RISC-V ညလဟန်ကဌာသချက်အစုံဗိသုကာသတ်မဟတ်ချက်၏ဗာသရဟင်သကိုရလေသချယ်ရန် "-misa-spec=*" option ကိုထပ်ထည့်ထာသသည်။ Canary tags မျာသကို အသုံသပဌု၍ AddressSanitizer နဟင့် stack protection အတလက် ပံ့ပိုသမဟု ပေါင်သထည့်ထာသသည်။
  • ပရိုဂရမ်ရဟိ ကုဒ်လုပ်ဆောင်မဟုလမ်သကဌောင်သမျာသနဟင့် ဒေတာစီသဆင်သမဟုမျာသ၏ အရင်သအမဌစ်-အလေသပေသသော အပဌန်အလဟန်လုပ်ထုံသလုပ်နည်သခလဲခဌမ်သစိတ်ဖဌာမဟုကို လုပ်ဆောင်သည့် "-fanalyzer" static ခလဲခဌမ်သစိတ်ဖဌာမဟုမုဒ်၏ ဆက်လက်တိုသတက်မဟု။ မုဒ်သည် မဟတ်ဉာဏ်ဧရိယာတစ်ခုအတလက် free() လုပ်ဆောင်ချက်သို့ နဟစ်ကဌိမ်ခေါ်ဆိုမဟုမျာသ၊ ဖိုင်ဖော်ပဌချက်ပေါက်ကဌာသမဟု၊ ကိုသကာသချက်မရဟိသောညလဟန်မဟတ်မျာသဖဌတ်သန်သမဟု၊ လလတ်ကင်သသောမဟတ်ဉာဏ်တုံသမျာသကို ဝင်ရောက်ကဌည့်ရဟုခဌင်သ၊ ကနညသမတည်မထာသသောတန်ဖိုသမျာသကို အသုံသပဌုခဌင်သစသည်ဖဌင့် စုစည်သမဟုအဆင့်တလင် ပဌဿနာမျာသကို ဖော်ထုတ်နိုင်သည် ဗာသရဟင်သအသစ်တလင်-
    • ပရိုဂရမ်အခဌေအနေကို ခဌေရာခံခဌင်သအတလက် ကုဒ်ကို လုံသ၀ ပဌန်လည်ရေသသာသပဌီသပါပဌီ။ အလလန်ကဌီသမာသသော C ဖိုင်မျာသကို စကင်န်ဖတ်ခဌင်သဆိုင်ရာ ပဌဿနာမျာသကို ဖဌေရဟင်သပဌီသဖဌစ်သည်။
    • ကနဩှ C++ ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။
    • Memory ခလဲဝေမဟုနဟင့် ခလဲဝေချထာသမဟုခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသကို သီသခဌာသ malloc နဟင့် အခမဲ့လုပ်ဆောင်မဟုမျာသမဟ လလဲချော်ခဲ့ပဌီသ ယခု အသစ်/ဖျက်ခဌင်သနဟင့် အသစ်[]/delete[] ကို ပံ့ပိုသပေသပါသည်။
    • ထပ်လောင်သသတိပေသချက်အသစ်မျာသ- -Wanalyzer-shift-count-negative၊ -Wanalyzer-shift-count-overflow၊ -Wanalyzer-write-to-const နဟင့် -Wanalyzer-write-to-string-literal။
    • အမဟာသရဟာပဌင်ခဌင်သဆိုင်ရာ ရလေသချယ်စရာအသစ်မျာသ -fdump-analyzer-json နဟင့် -fno-analyzer-feasibility ကို ထည့်သလင်သထာသသည်။
    • GCC အတလက် ပလပ်အင်မျာသမဟတစ်ဆင့် ခလဲခဌမ်သစိတ်ဖဌာသူအာသ ချဲ့ထလင်နိုင်စလမ်သကို အကောင်အထည်ဖော်ပဌီသဖဌစ်သည် (ဥပမာ၊ CPython တလင် ကမ္ဘာလုံသဆိုင်ရာသော့ခတ်ခဌင်သ (GIL) မဟာသယလင်သစလာအသုံသပဌုမဟုကို စစ်ဆေသရန် ပလပ်အင်တစ်ခု ပဌင်ဆင်ထာသသည်)။

source: opennet.ru

မဟတ်ချက် Add