XNUMXãæã®éçºæéãçµãŠ ãããžã§ã¯ãã®ãªãªãŒã¹ â ããã°ã©ã ã RISC ã®ãããªä»®æ³åœä»€ã®äžéãããã³ãŒãã«ã³ã³ãã€ã«ãã GCC äºæããŒã« (ã³ã³ãã€ã©ããªããã£ãã€ã¶ãŒãã³ãŒã ãžã§ãã¬ãŒã¿ãŒ) (ãã«ãã¬ãã«æé©åã·ã¹ãã ãåããäœã¬ãã«ä»®æ³ãã·ã³)ãçæãããç䌌ã³ãŒãã¯ãããã°ã©ã å®è¡æã« JIT ã³ã³ãã€ã©ã䜿çšããŠçŽæ¥ãã·ã³åœä»€ã«å€æã§ããŸãã
LLVM 9.0ã®æ°æ©èœã«ã¯ãRISC-Vã¿ãŒã²ãããã©ãããã©ãŒã ããå®éšçéçºããŒã¯ãåé€ããæ©èœãOpenCLçšã®C++ã®ãµããŒããLLDã§ããã°ã©ã ãåçã«ããŒããããéšåã«åå²ããæ©èœãã"ã¯ãLinuxã«ãŒãã«ã³ãŒãã§äœ¿çšãããŸããlibc++ã¯WASIïŒWebAssembly System InterfaceïŒã®ãµããŒãã远å ããLLDã¯WebAssemblyåçãªã³ã¯ã®åæãµããŒãã远å ããŸããã
Clang 9.0ã®å Žå:
- GCCåºæã®åŒã®å®è£ "ãã远å ãããã€ã³ã©ã€ã³ã¢ã»ã³ããªãããã¯ããCã³ãŒãã®ã©ãã«ã«ãžã£ã³ãã§ããããã«ãªããŸããããã®æ©èœã¯ãx86_64ã·ã¹ãã ã§Clangã䜿çšããŠãCONFIG_JUMP_LABEL=yãã¢ãŒãã§Linuxã«ãŒãã«ããã«ãããããã«å¿ èŠã§ãã以åã®ãªãªãŒã¹ã§è¿œå ããã倿Žãèæ ®ãããšãx86_64ã¢ãŒããã¯ãã£çšã®Linuxã«ãŒãã«ã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 ã䜿çšããããã®å®éšçãªãµããŒãã远å ãããŸãããå ·äœçãªæ©èœãšããŠã¯ãã¢ãã¬ã¹ç©ºé屿§ã®ãµããŒããåãã£ã¹ãæŒç®åã«ããã¢ãã¬ã¹ç©ºé倿ã®ãããã¯ãOpenCL for C ã®ãããªãã¯ãã«åã®æäŸãã€ã¡ãŒãžãã€ãã³ãããã£ãã«ãªã©ã® 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-developerã)ãèŠåããšã©ãŒãšããŠæ±ãããã®ã-analyzer-werrorããã©ã°ã远å ããŸããã
æ°ããæ€èšŒã¢ãŒãã远å ãããŸãã:- å®å šã§ãªããããã¡åŠçæ¹æ³ãæ€åºããããã® security.insecureAPI.DeprecatedOrUnsafeBufferHandlingã
- MIG (Mach Interface Generator) åŒã³åºãèšèšã«ãŒã«ã®éåãæ€åºããããã® osx.MIGCheckerã
- XNU libkern ãªããžã§ã¯ãã®äžæ£ãªå€æãèŠã€ããããã® optin.osx.OSObjectCStyleCastã
- LLVM ã³ãŒã ããŒã¹å ã®ãšã©ãŒãæ€åºããããã®ã¢ããªã³ã° ãã§ãã¯é¢æ°ã®ã»ãããåãã apiModeling.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 ããã®èŠåãåºåããæ©èœã远å ãããããã㌠ãã¡ã€ã«å ã®ãšã©ãŒã®èšºæãæ¡åŒµãããåéå±€ã«é¢ããæ å ±ãåºåããæ©èœã远å ãããŸããã
ã¡ã€ã³ LLVM9.0:
- LLD ãªã³ã«ãŒã«å®éšçãªããŒãã£ã·ã§ãã³ã°æ©èœã远å ããã1 ã€ã®ããã°ã©ã ãè€æ°ã®éšåã«åå²ãããããããå¥ã® ELF ãã¡ã€ã«ã«é
眮ã§ããããã«ãªããŸããããã®æ©èœã䜿çšãããšãããã°ã©ã ã®äž»èŠéšåãèµ·åããŠãæäœäžã«å¿
èŠã«å¿ããŠæ®ãã®ã³ã³ããŒãã³ããèªã¿èŸŒãããšãã§ããŸã (ããšãã°ãçµã¿èŸŒã¿ã® PDF ãã¥ãŒã¢ãŒãå¥ã®ãã¡ã€ã«ã«åé¢ãããŠãŒã¶ãŒã PDF ãã¡ã€ã«ãéãããšãã«ã®ã¿èªã¿èŸŒãããšãã§ããŸã)ã
LLD ãªã³ã«ãŒ arm32_7ãarm64ãppc64leãx86_64 ã¢ãŒããã¯ãã£çšã® Linux ã«ãŒãã«ãæ§ç¯ããã®ã«é©ããç¶æ ã«ããŸãã
æ°ãããªãã·ã§ã³ãææ¡ãããŠããŸã: "-" (stdout ã«åºå)ã "--[no-]allow-shlib-undefined"ã "--undefined-glob"ã "-nmagic"ã "-omagic"ã "--dependent-library"ã "-z ifunc-noplt"ãããã³ "-z common-page-size"ã AArch64 ã¢ãŒããã¯ãã£ã§ã¯ãBTI (åå²ã¿ãŒã²ãã ã€ã³ãžã±ãŒã¿ãŒ) ããã³ PAC (ãã€ã³ã¿èªèšŒã³ãŒã) åœä»€ã®ãµããŒãã远å ãããŸããã 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) ã®ãµããŒãã远å ããŸãã AMDGPUããã¯ãšã³ãã«GFX10ïŒNaviïŒã¢ãŒããã¯ãã£ã®ãµããŒãã远å ãã颿°åŒã³åºãæ©èœãããã©ã«ãã§æå¹ã«ããçµåãã¹ãæå¹ã«ããŸããã (ããŒã¿äžŠåããªããã£ã)ã - LLDB ãããã¬ãŒã«ããã¯ãã¬ãŒã¹ã®ã«ã©ãŒåŒ·èª¿è¡šç€ºæ©èœã远å ãããDWARF4 debug_types ããã³ DWARF5 debug_info ãããã¯ã®ãµããŒãã远å ãããŸããã
- llvm-objcopy ããã³ llvm-strip ãŠãŒãã£ãªãã£ãæŽæ°ãããCOFF 圢åŒã®ãªããžã§ã¯ã ãã¡ã€ã«ãšå®è¡å¯èœãã¡ã€ã«ããµããŒãããããã«ãªããŸããã
åºæïŒ ãªãŒãã³ããã.ru
