XNUMXãæã®éçºæéãçµãŠ
LLVM 9.0 ã®æ°æ©èœã«ã¯ãã¿ãŒã²ãã RISC-V ãã©ãããã©ãŒã ããã®å®éšèšèšã¿ã°ã®åé€ãOpenCL ã® C++ ãµããŒããLLD ã§åçã«ããŒããããéšåã«ããã°ã©ã ãåå²ããæ©èœãããã³ã
-
è¿œå ãã GCC åºæã®åŒã®å®è£ "asm åŸè€ ããã«ãããã¢ã»ã³ãã©ã®ã€ã³ã©ã€ã³ ãããã¯ãã C ã³ãŒãã®ã©ãã«ã«ç§»åã§ããããã«ãªããŸãã ãã®æ©èœã¯ãx86_64 ã¢ãŒããã¯ãã£ã®ã·ã¹ãã äžã§ Clang ã䜿çšããŠãCONFIG_JUMP_LABEL=yãã¢ãŒã㧠Linux ã«ãŒãã«ããã«ãããããã«å¿ èŠã§ãã 以åã®ãªãªãŒã¹ã§è¿œå ãããå€æŽãèæ ®ããŠãLinux ã«ãŒãã«ã x86_64 ã¢ãŒããã¯ãã£çšã« Clang ã§ãã«ãã§ããããã«ãªããŸãã (以åã¯ãarmãaarch64ãppc32ãppc64leãããã³ mips ã¢ãŒããã¯ãã£çšã®ãã«ãã®ã¿ããµããŒããããŠããŸãã)ã ããã«ãAndroid ããã³ ChromeOS ãããžã§ã¯ãã¯ãã«ãŒãã«æ§ç¯ã« Clang ã䜿çšããããã«ãã§ã«å€æãããŠãããGoogle ã¯ãå®çšŒå Linux ã·ã¹ãã çšã®ã«ãŒãã«ãæ§ç¯ããããã®ã¡ã€ã³ ãã©ãããã©ãŒã ãšã㊠Clang ããã¹ãããŠããŸãã å°æ¥çã«ã¯ãLLDãllvm-objcopyãllvm-arãllvm-nmãllvm-objdump ãªã©ã®ä»ã® LLVM ã³ã³ããŒãã³ããã«ãŒãã« ãã«ã ããã»ã¹ã§äœ¿çšã§ããããã«ãªããŸãã - OpenCL 㧠C++17 ã䜿çšããããã®å®éšçãªãµããŒããè¿œå ãããŸããã å ·äœçãªæ©èœã«ã¯ãã¢ãã¬ã¹ç©ºéå±æ§ã®ãµããŒããåãã£ã¹ãæŒç®åã«ããã¢ãã¬ã¹ç©ºéå€æã®ãããã¯ãC ã® OpenCL ãšåæ§ã®ãã¯ãã«åã®æäŸãç»åãã€ãã³ãããã£ãã«ãªã©ã«å¯Ÿããç¹å®ã® OpenCL åã®ååšãå«ãŸããŸãã
- ããã³ããšã³ã (解æãåæå) ãšããã¯ãšã³ã (æé©åã¹ããŒãž) ã®ããŸããŸãªã¹ããŒãžã®å®è¡æéã«é¢ããã¬ããŒããçæããããã®ãæ°ããã³ã³ãã€ã© ãã©ã°ã-ftime-traceãããã³ã-ftime-trace-granularity=Nããè¿œå ããŸããã ã¬ããŒã㯠json 圢åŒã§ä¿åãããchrome://tracing ããã³speedscope.app ãšäºææ§ããããŸãã
- ã__declspec(allocator)ãæå®åã®åŠçãšãVisual Studio ç°å¢ã§ã®ã¡ã¢ãªæ¶è²»ãç£èŠã§ããä»éã®ãããã°æ å ±ã®çæãè¿œå ãããŸããã
- C èšèªã®å Žåãã__FILE_NAME__ããã¯ãã®ãµããŒããè¿œå ãããŸãããããã¯ã__FILE__ããã¯ãã«äŒŒãŠããŸããããã«ãã¹ã®ãªããã¡ã€ã«åã®ã¿ãå«ãŸããŸãã
- C++ ã§ã¯ãã¢ãã¬ã¹ç©ºéå±æ§ã®ãµããŒããæ¡åŒµããããã©ã¡ãŒã¿ãŒãšåŒæ°ã®ãã¿ãŒã³ãåç §åãæ»ãå€ã®åæšè«ããªããžã§ã¯ããèªåçæé¢æ°ãçµã¿èŸŒã¿æŒç®åãªã©ãå«ãããŸããŸãª C++ æ©èœãã«ããŒã§ããããã«ãªããŸããã
- OpenCLãOpenMPãCUDA ã®ãµããŒãã«é¢é£ããæ©èœãæ¡åŒµãããŸããã ããã«ã¯ãçµã¿èŸŒã¿ OpenCL é¢æ°ã®æé»çãªçµã¿èŸŒã¿ã®åæãµããŒã (ã-fdeclare-opencl-builtinsããã©ã°ãè¿œå ãããŸãã)ãcl_arm_integer_dot_product æ¡åŒµæ©èœã®å®è£ ãããã³èšºæããŒã«ã®æ¡åŒµãå«ãŸããŸãã
- éçã¢ãã©ã€ã¶ãŒã®åäœãæ¹åãããéçåæã®å®è¡ã«é¢ããããã¥ã¡ã³ããè¿œå ãããŸããã å©çšå¯èœãªãã§ãã«ãŒ ã¢ãžã¥ãŒã«ãšãµããŒããããŠãããªãã·ã§ã³ (ã-analyzer-checker[-option]-helpããã-analyzer-checker[-option]-help-alphaããã-analyzer-checker[-option]-helpã) ã衚瀺ããããã®ãã©ã°ãè¿œå ããŸããã ã - éçºè
ãïŒã èŠåããšã©ãŒãšããŠæ±ãããã®ã-analyzer-werrorããã©ã°ãè¿œå ããŸããã
æ°ããæ€èšŒã¢ãŒããè¿œå ãããŸããã- security.insecureAPI.DeprecatedOrUnsafeBufferHandling ã䜿çšããŠããããã¡ãŒãæäœããããã®å®å šã§ãªãæ £è¡ãç¹å®ããŸãã
- osx.MIGChecker ã¯ãMIG (Mach Interface Generator) åŒã³åºãã«ãŒã«ã®éåãæ€çŽ¢ããŸãã
- optin.osx.OSObjectCStyleCast ã䜿çšããŠãäžæ£ãª XNU likern ãªããžã§ã¯ãå€æãèŠã€ããŸãã
- apiModeling.llvm ã«ã¯ãLLVM ã³ãŒãããŒã¹ã®ãšã©ãŒãæ€åºããããã®äžé£ã®ã¢ããªã³ã° ãã§ãã¯é¢æ°ãå«ãŸããŠããŸãã
- åæåãããŠããªã C++ ãªããžã§ã¯ãããã§ãã¯ããããã®å®å®åãããã³ãŒã (optin.cplusplus ããã±ãŒãžã® UninitializedObject)ã
- Clang-format ãŠãŒãã£ãªãã£ã¯ãC# èšèªã§ã®ã³ãŒãã®æžåŒèšå®ã®ãµããŒããè¿œå ããMicrosoft ã䜿çšããã³ãŒãã®æžåŒèšå®ã¹ã¿ã€ã«ã®ãµããŒããæäŸããŸãã
- Visual Studio ã«å«ãŸãã cl.exe ã³ã³ãã€ã©ãšãªãã·ã§ã³ ã¬ãã«ã®äºææ§ãæäŸãã代æ¿ã³ãã³ã ã©ã€ã³ ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã Clang-cl ã«ã¯ãååšããªããã¡ã€ã«ãã³ãã³ã ã©ã€ã³ ãªãã·ã§ã³ãšããŠæ±ãã察å¿ããèŠåã衚瀺ãããã¥ãŒãªã¹ãã£ãã¯ãè¿œå ãããŸãã (ããšãã°ã "clang-cl /diagnostic :caret /c test.cc") ãå®è¡ãããšãã
- OpenMP API ã«åºæã®è¿œå ãã§ãã¯ãå«ããæ°ãããã§ãã¯ã®å€§éšåããªã³ã¿ãŒ Clang-Tidy ã«è¿œå ãããŸããã
-
æ¡åŒµããã ãµãŒããŒã®æ©èœã«ã©ã³ã«ã©ã³ (Clang Server) ã§ã¯ãããã¯ã°ã©ãŠã³ã ã€ã³ããã¯ã¹æ§ç¯ã¢ãŒããããã©ã«ãã§æå¹ã«ãªã£ãŠãããã³ãŒãã«ããã³ã³ããã¹ã ã¢ã¯ã·ã§ã³ã®ãµããŒããè¿œå ãããŸãã (å€æ°ã®ååŸãèªåããã³ãã¯ãå®çŸ©ã®æ¡åŒµããšã¹ã±ãŒãæååãããšã¹ã±ãŒããããŠããªãæååãžã®å€æ)ã衚瀺æ©èœClang-tidy ããã®èŠåãããã㌠ãã¡ã€ã«å ã®ãšã©ãŒã®èšºæãæ¡åŒµãããåéå±€ã«é¢ããæ å ±ã衚瀺ããæ©èœãè¿œå ãããŸããã
ã¡ã€ã³
- å®éšçãªããŒãã£ã·ã§ãã³ã°æ©èœã LLD ãªã³ã«ãŒã«è¿œå ãããŸãããããã«ãããXNUMX ã€ã®ããã°ã©ã ãè€æ°ã®éšåã«åå²ãããããããå¥ã® ELF ãã¡ã€ã«ã«é
眮ã§ããããã«ãªããŸãã ãã®æ©èœã䜿çšãããšãããã°ã©ã ã®äž»èŠéšåãèµ·åããŠãåäœäžã«å¿
èŠã«å¿ããŠä»ã®ã³ã³ããŒãã³ããããŒãã§ããŸã (ããšãã°ãçµã¿èŸŒã¿ã® PDF ãã¥ãŒã¢ãå¥ã®ãã¡ã€ã«ã«åé¢ãããŠãŒã¶ãŒã PDF ãéãããšãã«ã®ã¿ããŒãããããšãã§ããŸã)ãã¡ã€ã«ïŒã
LLDãªã³ã«ãŒ
æã£ãŠãã arm32_7ãarm64ãppc64leãããã³ x86_64 ã¢ãŒããã¯ãã£ã® Linux ã«ãŒãã«ããªã³ã¯ããã®ã«é©ããç¶æ ã«ããŸãã
æ°ãããªãã·ã§ã³ "-" (stdout ãžã®åºå)ã"-[no-]allow-shlib-unknown"ã"-unknown-glob"ã"-nmagic"ã"-omagic"ã"-dependent-library"ã" - z ifunc-nopltãããã³ã-z common-page-sizeãã AArch64 ã¢ãŒããã¯ãã£ã§ã¯ãBTI (Branch Target Indicator) ããã³ PAC (Pointer Authentication Code) åœä»€ã®ãµããŒããè¿œå ãããŸããã MIPSãRISC-VãPowerPC ãã©ãããã©ãŒã ã®ãµããŒããå€§å¹ ã«æ¹åãããŸããã WebAssembly ã®åçãªã³ã¯ã®åæãµããŒããè¿œå ãããŸããã - libc++ ã§ã¯
å®è£ ãããŸãã é¢æ° ssizeãstd::is_constant_evaluatedãstd::midpoint ããã³ std::lerpãã¡ãœãããfrontãããã³ãbackãã std::span ã«è¿œå ãããã¿ã€ã std::is_unbounded_array ããã³ std::is_bounded_array ã®å±æ§ãè¿œå ãããŸãããstd æ©èœãæ¡åŒµãããŸãã::atomicã GCC 4.9 ã®ãµããŒãã¯å»æ¢ãããŸãã (GCC 5.1 以éã®ãªãªãŒã¹ã§äœ¿çšã§ããŸã)ã ãµããŒãã®è¿œåã¯ã· (WebAssembly System Interfaceããã©ãŠã¶å€ã§ WebAssembly ã䜿çšããããã®ã€ã³ã¿ãŒãã§ã€ã¹); - æ°ããæé©åãè¿œå ãããŸããã ç¶æ³ã«ãã£ãŠã¯ãmemcmp åŒã³åºãã® bcmp ãžã®å€æãæå¹ã«ãªããŸããã äžäœã®ã¹ã€ãã ãããã¯ã«å°éã§ããªãå ŽåããŸãã¯åœä»€ã䜿çšãããªãå Žå (ããšãã°ãvoid åã®é¢æ°ãåŒã³åºãå Žåãªã©) ã®ãžã£ã³ã ããŒãã«ã®ç¯å²ãã§ãã¯ã®çç¥ãå®è£ ããŸããã
- RISC-V ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ããå®å®åãããå®éšçãªäœçœ®ä»ãã§ã¯ãªããªããããã©ã«ãã§æ§ç¯ãããŸãã MAFDC æ¡åŒµæ©èœãåãã RV32I ããã³ RV64I åœä»€ã»ãã ããªã¢ã³ãã®å®å šãªã³ãŒãçæãµããŒããæäŸããŸãã
- X86ãAArch64ãARMãSystemZãMIPSãAMDGPUãããã³ PowerPC ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã«å€æ°ã®æ¹åãå ããããŸããã ããšãã°å»ºç¯ã®å Žå
AArch64 ã§ã¯ãSVE2 (Scalable Vector Extension 2) ããã³ MTE (Memory Tagging Extensions) åœä»€ã®ãµããŒããè¿œå ãããARM ããã¯ãšã³ãã§ã¯ãArmv8.1-M ã¢ãŒããã¯ãã£ãš MVE (M-Profile Vector Extension) æ¡åŒµæ©èœã®ãµããŒããè¿œå ãããŸããã GFX10 (Navi) ã¢ãŒããã¯ãã£ã®ãµããŒãã AMDGPU ããã¯ãšã³ãã«è¿œå ãããé¢æ°åŒã³åºãæ©èœãããã©ã«ãã§æå¹ã«ãªããçµåãã¹ãã¢ã¯ãã£ãåãããŸããDPP (ããŒã¿äžŠåããªããã£ã)ã - LLDB ãããã¬ã«ã¯ãããã¯ãã¬ãŒã¹ãè²ã§åŒ·èª¿è¡šç€ºãããããã«ãªããDWARF4 debug_types ãããã¯ãš DWARF5 debug_info ãããã¯ã®ãµããŒããè¿œå ãããŸããã
- COFF 圢åŒã®ãªããžã§ã¯ãããã³å®è¡å¯èœãã¡ã€ã«ã®ãµããŒãããllvm-objcopy ããã³ llvm-strip ãŠãŒãã£ãªãã£ã«è¿œå ãããŸããã
åºæïŒ ãªãŒãã³ããã.ru