XNUMXãæã®éçºæéãçµãŠ
æ°ãããªãªãŒã¹ã®äž»ãªå€æŽç¹ã¯ã次ã®ãã®ãå«ãŸããŠããããšã§ãã
- æœè±¡æ§æããªãŒã埩å
ããæ©èœãè¿œå ããŸãã (
AST ) å£ãã C++ ã³ãŒãçšãããã䜿çšãããšããšã©ãŒã®èšºæã«åœ¹ç«ã¡ãclang-tidy ã Clangd ãªã©ã®å€éšãŠãŒãã£ãªãã£ã«è¿œå æ å ±ãæäŸãããŸãã ãã®æ©èœã¯ C++ ã³ãŒãã«å¯ŸããŠããã©ã«ãã§æå¹ã«ãªã£ãŠãããã-Xclang -f[no-]recovery-astããªãã·ã§ã³ãéããŠå¶åŸ¡ãããŸãã - æ°ãã蚺æã¢ãŒããè¿œå ãããŸããã
- ã-Wpointer-to-int-castãã¯ããã¹ãŠã®å¯èœãªå€ãå容ã§ããªãæŽæ°å int ãžã®ãã€ã³ã¿ãŒã®ãã£ã¹ãã«é¢ããèŠåã®ã°ã«ãŒãã§ãã
- ã-Wuninitialized-const-referenceã - ãconstãå±æ§ãæã€åç §åŒæ°ãåãå ¥ããé¢æ°ãã©ã¡ãŒã¿ã«åæåãããŠããªãå€æ°ãæž¡ãããšã«ã€ããŠã®èŠåã
- ã-Wimplicit-const-int-float-conversionã - å®å®æ°ããæŽæ°åãžã®æé»çãªå€æã«é¢ããèŠåãããã©ã«ãã§æå¹ã«ããŸãã
- ARM ãã©ãããã©ãŒã ã®å Žåãã³ã³ãã€ã©ã«çµã¿èŸŒãŸãã C é¢æ°ãæäŸãããŸã (
çµã¿èŸŒã¿é¢æ° )ãå¹ççãªãã¯ãã«åœä»€ Arm v8.1-M MVE ããã³ CDE ã«çœ®ãæããããŸããã 䜿çšå¯èœãªé¢æ°ã¯ãããã㌠ãã¡ã€ã« arm_mve.h ããã³ arm_cde.h ã§å®çŸ©ãããŠããŸãã -
è¿œå ãã æ¡åŒµæŽæ°åã®ã»ãã _ExtInt(N) ã䜿çšãããšãFPGA/HLS ã§å¹ççã«åŠçã§ãã XNUMX ã®ã¹ãä¹ã®åæ°ã§ã¯ãªãåãäœæã§ããŸããäŸãã° , _ExtInt(7) 㯠7 ããããããªãæŽæ°åãå®çŸ©ããŸãã - ARM SVE (Scalable Vector Extension) åœä»€ã«åºã¥ããçµã¿èŸŒã¿ C é¢æ°ã®ãµããŒããå®çŸ©ãããã¯ããè¿œå ããŸããã
__ARM_FEATURE_SVEã__ARM_FEATURE_SVE_BF16ã
__ARM_FEATURE_SVE_MATMUL_FP32ã__ARM_FEATURE_SVE_MATMUL_FP64ã
__ARM_FEATURE_SVE_MATMUL_INT8ã
__ARM_FEATURE_SVE2ã__ARM_FEATURE_SVE2_AESã
__ARM_FEATURE_SVE2_BITPERMã
__ARM_FEATURE_SVE2_SHA3ã
__ARM_FEATURE_SVE2_SM4ã ããšãã°ã__ARM_FEATURE_SVE ãã¯ãã¯ãã³ãã³ã ã©ã€ã³ ãªãã·ã§ã³ã-march=armv64-a+sveããèšå®ã㊠AArch8 ã³ãŒããçæãããšãã«å®çŸ©ãããŸãã - ã-Oããã©ã°ã¯ãã-O1ãã§ã¯ãªãã-O2ãæé©åã¢ãŒãã§èå¥ãããããã«ãªããŸããã
- æ°ããã³ã³ãã€ã© ãã©ã°ãè¿œå ããŸããã
- ã-fstack-clash-protectionã - ã«å¯Ÿããä¿è·ãæå¹ã«ããŸãã
ã¹ã¿ãã¯ãšããŒãã®äº€å·® . - ã-ffp-Exception-behavior={ignore,maytrap,strict}ã - æµ®åå°æ°ç¹æ°ã®äŸå€ãã³ãã©ãŒ ã¢ãŒããéžæã§ããŸãã
- "-ffp-model={precise,strict,fast}" - æµ®åå°æ°ç¹æ°ã®äžé£ã®ç¹æ®ãªãªãã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãç°¡çŽ åããŸãã
- ã-fpch-codegenãããã³ã-fpch-debuginfoãã¯ãã³ãŒããšãããã°æ å ±çšã«åå¥ã®ãªããžã§ã¯ã ãã¡ã€ã«ãå«ãããªã³ã³ãã€ã«æžã¿ããã㌠(PCH) ãçæããŸãã
- ã«ãã¬ããžãã¹ãã®ãã¯ã€ããªã¹ããšãã©ãã¯ãªã¹ãã確èªããããã®ã-fsanitize-coverage-allowlistãããã³ã-fsanitize-coverage-blocklistãã
- ã-mtls-size={12,24,32,48}ã㧠TLS (ã¹ã¬ããããŒã«ã« ã¹ãã¬ãŒãž) ãµã€ãºãéžæããŸãã
- ã-menable-experimental-extensionãã¯ãå®éšç㪠RISC-V æ¡åŒµæ©èœãæå¹ã«ããŸãã
- ã-fstack-clash-protectionã - ã«å¯Ÿããä¿è·ãæå¹ã«ããŸãã
- C ã®ããã©ã«ã ã¢ãŒãã¯ã-fno-commonãã§ããããã«ãããäžéšã®ãã©ãããã©ãŒã ã§ã°ããŒãã«å€æ°ãžã®ããå¹ççãªã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã
- ããã©ã«ãã®ã¢ãžã¥ãŒã« ãã£ãã·ã¥ã¯ /tmp ãã ~/.cache ãã£ã¬ã¯ããªã«ç§»åãããŸããã ãªãŒããŒã©ã€ãããã«ã¯ãã-fmodules-cache-path=ããã©ã°ã䜿çšã§ããŸãã
- ããã©ã«ãã® C èšèªæšæºã gnu11 ãã gnu17 ã«æŽæ°ãããŸããã
- GNU C æ¡åŒµæ©èœã®äºåãµããŒããè¿œå ããŸããã
asmã€ã³ã©ã€ã³ » ã¢ã»ã³ãã©ã€ã³ãµãŒããè¿œå ããŸãã æ¡åŒµæ©èœã¯ãŸã åæäžã§ããããŸã£ããåŠçãããŠããŸããã - OpenCL ããã³ CUDA ãµããŒãã«é¢é£ããæ©èœãæ¡åŒµãããŸããã OpenCL 2.0 ãããã¯èšºæã®ãµããŒããè¿œå ãããæ°ãã OpenMP 5.0 æ©èœãå®è£ ãããŸããã
- extern "C" ããã³ extern "C++" ãããã¯å ã§ã®äœçœ®åããã®ããã® IndentExternBlock ãªãã·ã§ã³ã Clang-format ãŠãŒãã£ãªãã£ã«è¿œå ããŸããã
- éçã¢ãã©ã€ã¶ãŒã§ã¯ãC++ ã§ã®ç¶æ¿ãããã³ã³ã¹ãã©ã¯ã¿ãŒã®åŠçãæ¹åãããŸããã ããã¯ããã§ãã¯ããããã®æ°ãããã§ã㯠alpha.core.C11Lock ããã³ alpha.fuchsia.Lockãputenv ã®å®å šã§ãªã䜿çšãæ€åºããããã® alpha.security.cert.pos.34cãæ°ããããªãã¿ã€ãã®åé¡ãæ€åºããããã® webkit.NoUncountedMemberChecker ããã³ webkit.RefCntblBaseVirtualDtor ãè¿œå ããŸããã .cplusplus .SmartPtr ã䜿çšããŠãnull ã¹ããŒã ãã€ã³ã¿ãŒéåç §ããã§ãã¯ããŸãã
- ãªã³ã¿ãŒã§ã«ãã£ã«ãã£ãšæŽé
è¿œå ãã æ°ããå°åæã®å€§éšåã - Clangd ãã£ãã·ã¥ ãµãŒã㌠(Clang ãµãŒããŒ) ã®ããã©ãŒãã³ã¹ãåäžããæ°ãã蚺ææ©èœãè¿œå ãããŸããã
ã¡ã€ã³
- ãã«ã ã·ã¹ãã 㯠Python 3 ã䜿çšããããã«åãæ¿ããããŸãããPython 3 ã䜿çšã§ããªãå Žåã¯ãPython 2 ã䜿çšããããã«ããŒã«ããã¯ã§ããŸãã
- Go èšèªçšã³ã³ãã€ã©ãŒ (llgo) ãåããããã³ããšã³ãã¯ãªãªãŒã¹ããé€å€ãããŠãããå°æ¥çã«åæ§ç¯ãããå¯èœæ§ããããŸãã
- åŒã³åºãããã¯ãã«åããããã®ã¹ã«ã©ãŒé¢æ°ãšãã¯ãã«é¢æ°éã®ãããã³ã°ãèšè¿°ããããã«ãvector-function-abi-variant å±æ§ãäžéè¡šçŸ (IR) ã«è¿œå ãããŸããã llvm::VectorType ããã¯ãllvm::FixedVectorType ãš llvm::ScalableVectorType ãšãã XNUMX ã€ã®å¥åã®ãã¯ãã« ã¿ã€ãããããŸãã
- udef å€ã«åºã¥ããŠåå²ããããæšæºã©ã€ãã©ãªé¢æ°ã« undef å€ãæž¡ãããããããšã¯ãæªå®çŸ©ã®åäœãšããŠèªèãããŸãã ã§
memset/memcpy/memmove ã§ã¯ undef ãã€ã³ã¿ãŒãæž¡ãããšãã§ããŸããããµã€ãºã®ãã©ã¡ãŒã¿ãŒããŒãã®å Žåã«éããŸãã - LLJIT ã§ã¯ãLLJIT::initialize ã¡ãœãããš LLJIT::deinitialize ã¡ãœããã䜿çšããŠéçåæåãå®è¡ããããã®ãµããŒããè¿œå ãããŸããã StaticLibraryDefinitionGenerator ã¯ã©ã¹ã䜿çšããŠéçã©ã€ãã©ãªã JITDylib ã«è¿œå ããæ©èœãå®è£
ããŸããã C API ãè¿œå ããŸãã
ORCv2 (JIT ã³ã³ãã€ã©ãæ§ç¯ããããã® API)ã - Cortex-A64ãCortex-A34ãCortex-A77ãããã³ Cortex-X78 ããã»ããµã®ãµããŒãããAArch1 ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã«è¿œå ãããŸããã RMv8.2-ECV (æ¡åŒµã«ãŠã³ã¿ãŒä»®æ³å)ãARMv16-FGT (ãã¡ã€ã³ã°ã¬ã€ã³ãã©ãã)ãARMv16-AMU (ã¢ã¯ãã£ããã£ã¢ãã¿ãŒä»®æ³å) ãå«ããARMv8.6-BF8.6 (BFloat8.6) ããã³ ARMv8.6-A æ¡åŒµæ©èœãå®è£ ããŸãããããã³ ARMv8.0-DGH (ããŒã¿åéãã³ã)ã SVE ãã¯ãã«åœä»€ãžã®çµã¿èŸŒã¿é¢æ°ãã€ã³ãã£ã³ã°ã®ã³ãŒããçæããæ©èœãæäŸãããŸãã
- Cortex-M55ãCortex-A77ãCortex-A78ãããã³ Cortex-X1 ããã»ããµã®ãµããŒãã ARM ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã«è¿œå ãããŸããã å®è£
ãããæ¡åŒµæ©èœ
Armv8.6-A è¡åä¹ç®ããã³ RMv8.2-AA32BF16 BFloat16ã - POWER10 ããã»ããµãŒã®ã³ãŒãçæã®ãµããŒãããPowerPC ã¢ãŒããã¯ãã£ãŒã®ããã¯ãšã³ãã«è¿œå ãããŸããã ã«ãŒãã®æé©åãæ¡åŒµãããæµ®åå°æ°ç¹ã®ãµããŒããæ¹åãããŸããã
- RISC-V ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã§ã¯ããŸã æ£åŒã«æ¿èªãããŠããªãå®éšçãªæ¡åŒµåœä»€ã»ããããµããŒããããããã®åãå ¥ããå¯èœã§ãã
- AVR ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã¯å®éšçãªã«ããŽãªããå®å®çã«ç§»è¡ãããåºæ¬ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸããŠããŸãã
- x86 ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã¯ãIntel AMX ããã³ TSXLDTRK åœä»€ããµããŒãããŸãã æ»æã«å¯Ÿããä¿è·ãè¿œå
LVI (ããŒãå€ã€ã³ãžã§ã¯ã·ã§ã³)ããŸããCPU äžã§ã®æäœã®ææ©çå®è¡ã«ãã£ãŠåŒãèµ·ããããæ»æããããã¯ããããã®äžè¬çãªææ©çå®è¡å¯äœçšæå¶ã¡ã«ããºã ãå®è£ ããŸãã - SystemZ ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã§ãMemorySanitizer ãš LeakSanitizer ã®ãµããŒããè¿œå ãããŸããã
- Libc++ ã¯æ°åŠå®æ°ãå«ãããã㌠ãã¡ã€ã«ã®ãµããŒããè¿œå ããŸã
. -
æ¡åŒµããã LLD ãªã³ã«ãŒæ©èœã ãªãã·ã§ã³ã--lto-emit-asmããã--lto-whole-program-visibilityããã-print-archive-statsããã-shuffle-sectionsããã -thinlto-single-moduleããã-uniqueããã-rosegmentããã-threads=Nãã ãã¬ãŒã¹ããã¡ã€ã«ã«ä¿åããããã®ã--time-traceããªãã·ã§ã³ãè¿œå ããŸããããã¡ã€ã«ã¯ãChrome ã® chrome://tracing ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠåæã§ããŸãã
åºæïŒ ãªãŒãã³ããã.ru