ááŒá±á¬ááºáááŒá¬ááŒá®ážáá±á¬áẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯
áá¯ááºáá±ááŸá¯á¡áá
áºááœáẠá¡áááááŒá±á¬ááºážáá²ááŸá¯ááŸá¬ áá«áááºááŒááºážáááºááŒá
áºáááºá
- abstract syntax tree ááᯠááŒááºáá°ááá¯ááºáá²á· á
áœááºážáááºááᯠáá±á«ááºážááá·áºáá¬ážáá«ááẠ(
AST ) áá»ááºá á®ážáá±áá±á¬ C++ áá¯ááºá¡ááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŸá¬ááœá±áá±á¬áºáá¯ááºáá¬ááœáẠáá°áá®áááºááŸáá·áº clang-tidy ááŸáá·áº clangd áá²á·ááá¯á·áá±á¬ ááŒááºáá¡áá¯á¶ážá¡áá±á¬ááºáá»á¬ážá¡ááœáẠá¡ááá¯á¡áá»ááºá¡áááºáá»á¬ážááᯠáá±ážáá±á¬ááºááá¯ááºáááºá á¡ááºá¹áá«áááºááᯠC++ áá¯ááºá¡ááœáẠáá°áááºážá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážááŒá®áž "-Xclang -f[no-]recovery-ast" ááœá±ážáá»ááºááŸá¯áá»á¬ážááŸáááá·áº ááááºážáá»á¯ááºáá¬ážáááºá - áá±á¬áá«ááŸá¬ááœá±áá±ážáá¯ááºá¡áá
áºáá»á¬ážááᯠááá·áºááœááºážáá¬ážáááº-
- â-Wpointer-to-int-castâ ááẠááŒá áºááá¯ááºáá»á±áááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá¯ááºáá»á±á¬áá®ááœá±áááŒá áºááá¯ááºáá±á¬ ááááºážááŒáá·áºá¡áá»áá¯ážá¡á á¬áž int ááá¯á· ááœáŸááºááŒáá»ááºáá»á¬ážá¡á¬áž ááœáŸááºááŒááŒááºážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºá¡á¯ááºá á¯áá áºá á¯ááŒá áºáááºá
- "-wuninitialized-const-reference" - "const" áááºááœáŸááºážáá»ááºááŒáá·áº á¡ááá¯ážá¡áá¬ážáá»á¬ážááᯠáááºáá¶ááá·áº function parameters áá»á¬ážááœáẠuninitialized variables áá»á¬ážááŒááºáááºážááŒááºážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºá
- "-Wimplicit-const-int-float-conversion" - ááááºážááŒáá·áºá¡áá»áá¯ážá¡á á¬ážááá¯á· á¡ááŸááºáááẠááááºážáá±áá áºáá¯ááá¯á· ááœááºááá¯ááºáá±á¬áááºážááŒáá·áº ááŒá±á¬ááºážáá²ááŒááºážá¡ááŒá±á¬ááºáž áá°áááºážááááá±ážáá»ááºááŒáá·áº ááœáá·áºáá¬ážáááºá
- ARM ááááºáá±á¬ááºážá¡ááœááºá compiler ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ C áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±ážááẠ(
áááºááá¯áẠ) á áááá±á¬ááºáá±á¬ vector ááœáŸááºááŒá¬ážáá»áẠArm v8.1-M MVE ááŸáá·áº CDE ááŒáá·áº á¡á á¬ážááá¯ážáááºá áááá¯ááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠheader files arm_mve.h ááŸáá·áº arm_cde.h ááœáẠáááºááŸááºáá¬ážáá«áááºá -
áááºááŒá±á¬áá«áááºá ááá¯ážáá»á²á·ááááºážááŒáá·áºá¡áá»áá¯ážá¡á á¬ážáá»á¬áž _ExtInt(N) ááẠááá·áºá¡á¬áž FPGA/HLS ááœáẠáááá±á¬ááºá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºááá·áº áá«áá«ááŸá áºáá¯á á¡ááŒáŸá±á¬ááºáá»á¬ážááá¯ááºáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠáááºáá®ážááœáá·áºááŒá¯áááºáá¥ááá¬á¡á¬áž , _ExtInt(7) ááẠ7 bits áá«áááºáá±á¬ ááááºážááŒáá·áºá¡áá»áá¯ážá¡á á¬ážááᯠáááºááŸááºáááºá - ARM SVE (Scalable Vector Extension) áááºážááœáŸááºáá»ááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á Built-in 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á á¥ááá¬á¡á¬ážááŒáá·áºá command line option "-march=armv64-a+sve" ááᯠáááºááŸááºááŒááºážááŒáá·áº AArch8 áá¯ááºááá¯áá¯ááºáá±ážáá±á¬á¡áá« __ARM_FEATURE_SVE áááºáááá¯ááᯠáááºááŸááºáááºá - "-O" á¡áá¶ááᯠ"-O1" á¡á á¬áž "-O2" ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážáá¯ááºááŒáá·áº áááºááŸááºáá±á¬áºáá¯ááºáá¬ážáá«áááºá
- á¡áá
áºááá·áºááœááºážáá¬ážáá±á¬ compiler á¡áá¶áá»á¬áž-
- "-fstack-clash-protection" - ááá·áºáá»ááºáá¬ááœááºááŸá¯áá±ážáááºá
stack ááŸáá·áº heap áááºážáá¯á¶áá»á¬áž . - "-ffp-exception-behavior={ignore,maytrap,strict}" - áá±áá±á«áºá¡ááŸááºáá¶áá«ááºáá»á¬ážá¡ááœáẠááŒáœááºážáá»ááºáááºááá¯ááºáá¯ááºááᯠááœá±ážáá»ááºááœáá·áºááŒá¯áááºá
- "-ffp-model={precise,strict,fast}" - Floating Point áá¶áá«ááºáá»á¬ážá¡ááœáẠá¡áá°ážááŒá¯ááœá±ážáá»ááºá áá¬áá»á¬áž á á®ážáá®ážáá»á¬ážááá¯á· áááºáá±á¬ááºááŸá¯ááᯠááá¯ážááŸááºážá á±áááºá
- áá¯ááºááŸáá·áº á¡ááŸá¬ážááŸá¬á¡ááºááá¯á¡ááœáẠáá®ážááŒá¬ážá¡áá¬ááá¹áá¯ááá¯ááºáá»á¬ážáá«ááŸááá±á¬ ááŒáá¯áááºá á¯á ááºážáá¬ážáá±á¬ áá±á«ááºážá á®áž (PCH) ááᯠáá¯ááºáá¯ááºááẠ"-fpch-codegen" ááŸáá·áº "-fpch-debuginfo"á
- á¡áá»á¯á¶ážáááºááŸá¯ á á áºáá±ážááŒááºáž á¡ááŒá°áá±á¬ááºááŸáá·áº á¡áááºáááºážá á¬áááºážáá»á¬ážááᯠá á áºáá±ážááŒááºážá¡ááœáẠâ-fsanitize-coverage-allowlistâ ááŸáá·áº â-fsanitize-coverage-blocklistâá
- TLS (thread-local storage) á¡ááœááºá¡á á¬ážááᯠááœá±ážááẠâ-mtls-size={12,24,32,48}âá
- á ááºážááẠRISC-V ááá¯ážáá»á²á·ááŸá¯áá»á¬ážááᯠááœáá·áºááẠ"-menable-experimental-extension"
- "-fstack-clash-protection" - ááá·áºáá»ááºáá¬ááœááºááŸá¯áá±ážáááºá
- C á¡ááœáẠáá°áááºážáá¯ááºááŸá¬ "-fno-common" ááŒá áºááŒá®áž á¡áá»áá¯á·áá±á¬ platform áá»á¬ážááœáẠglobal variables áá»á¬ážááᯠááá¯ááá¯áááá±á¬ááºá áœá¬ áááºáá±á¬ááºááá¯ááºá á±áá«áááºá
- áá°áááºáž module cache ááᯠ/tmp á០~/.cache directory ááá¯á· ááœáŸá±á·ááá¯ááºáá«ááŒá®á á¡á á¬ážááá¯ážáááºá¡ááœáẠáááºááẠâ-fmodules-cache-path=â á¡áá¶ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- áá°áááºáž C áá¬áá¬á áá¬ážá á¶ááŸá¯ááºážááᯠgnu11 á០gnu17 ááá¯á· á¡ááºááááºáá¯ááºáá¬ážáááºá
- GNU C ááá¯ážáá»á²á·ááŸá¯ "á¡ááœáẠááá¬á áá¶á·ááá¯ážááŸá¯ ááá·áºáá±ážáá²á·áááº
asm inline » áááºáááºáá°ááá·áºááœááºážááŸá¯áá»á¬ážááá·áºáááºá ááá¯ážáá»á²á·ááŸá¯ááᯠááœá²ááŒááºážá áááºááŒá¬áá±áá²ááŒá áºáá±á¬áºáááºáž áááºááá·áºáááºážááŒáá·áºáá»áŸ áá¯ááºáá±á¬ááºááŒááºážáááŸááá«á - OpenCL ááŸáá·áº CUDA áá¶á·ááá¯ážááŸá¯ááá¯á·ááŸáá·áº áááºá ááºáá±áá±á¬ á áœááºážáááºáá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáááºá OpenCL 2.0 ááááºááá¯á·ááŸá¬ááœá±ááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááá·áºááœááºážááŒá®áž OpenMP 5.0 á¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
- extern "C" ááŸáá·áº extern "C++" ááá±á¬ááºáá»á¬ážá¡ááœááºáž áá»áááºááŸáááŸá¯áá»á¬ážá¡ááœáẠclang-format utility ááœáẠIndentExternBlock ááœá±ážáá»ááºááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
- static analyzer ááẠC++ ááœáẠá¡ááœá±áááºáá¶áá±á¬ constructors áá»á¬ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºáá±ážáá«áááºá á á áºáá±ážááŸá¯á¡áá áºáá»á¬ážááᯠalpha.core.C11Lock ááŸáá·áº alpha.fuchsia.Lock áá»á¬ážá á áºáá±ážáááºá áá±á¬á·áááºááŸá¯áá»á¬ážá á áºáá±ážáááºá alpha.security.cert.pos.34c ááẠputenvá webkit.NoUncountedMemberChecker ááŸáá·áº webkit.RefCntblBaseVirtualDtor ááá±ážáááºážáá±á¬á¡áá¯á¶ážááŒá¯ááŸá¯ááá¯ááŸá¬ááœá±áááºá áá±áááœááºááá¯ááºáá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŸá¬ááœá±áááºá .cplusplus .SmartPtr ááẠnull smart pointer dereference ááᯠá á áºáá±ážáááºá
- áá»ááºááŸá±á¬ááº-áááºáááº
áááºááŒá±á¬áááºá á á áºáá±ážááŸá¯á¡áá áºáá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááááºá - Clangd áááºááŸáºáá¬áᬠ(Clang Server) ááẠá áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá¬ážááŒá®áž á¡ááŒá±ááŸá¬ááá¯ááºááŸá¯ á áœááºážáááºá¡áá áºáá»á¬ážááᯠáá±á«ááºážááá·áºáá¬ážáááºá
á¡ááá
- áááºáá±á¬ááºááŸá¯á áá áºááẠPython 3 ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááá¯á· ááŒá±á¬ááºážáá¬ážáááºá á¡áááºá Python 3 ááá¯ááááŸáááá¯ááºáá«áá Python 2 ááá¯á¡áá¯á¶ážááŒá¯á ááŒááºááŸáá·áºááá¯ááºáááºá
- Go language (llgo) á¡ááœáẠcompiler ááŸáá·áº ááŸá±á·áá¯á¶ážááᯠáá¯ááºáá±ááŸá¯á០áááºáá¯ááºáá¬ážááŒá®ážá áá±á¬ááºááœáẠááŒááºáááºááœá²á·á ááºážááá¯ááºáááºááŒá áºáááºá
- áá±á«áºááá¯ááŸá¯áá»á¬ážááᯠvectorize áá¯ááºáááºá¡ááœáẠscalar ááŸáá·áº vector functions áá»á¬ážá¡ááŒá¬áž ááŒá±áá¯á¶ááœá²ááŒááºážááᯠáá±á¬áºááŒáááºá¡ááœáẠvector-function-abi-variant attribute ááᯠá¡áááºá¡áááºááá¯ááºá á¬ážááŒá¯ááŸá¯ (IR) ááá¯á· áá±á«ááºážááá·áºáá¬ážáá«áááºá llvm::VectorType á០áá®ážááŒá¬áž vector á¡áá»áá¯ážá¡á á¬ážááŸá áºáᯠllvm::FixedVectorType ááŸáá·áº llvm::ScalableVectorTypeá
- udef áááºááá¯ážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á á¡ááá¯ááºážá¡áááºááœá²ááŒááºážááŸáá·áº undef áááºááá¯ážáá»á¬ážááᯠá
á¶á
á¬ááŒáá·áºááá¯ááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯á· ááŒááºáááºážááŒááºážá¡á¬áž áááºááŸááºááá¬ážáá±á¬ á¡ááŒá¯á¡áá°á¡ááŒá
Ạá¡ááá¡ááŸááºááŒá¯áááºá IN
memset/memcpy/memmove ááẠundef á¡ááŸááºá¡áá¬ážáá»á¬ážááᯠááŒááºáááºážááœáá·áºááŒá¯áá±á¬áºáááºáž á¡ááœááºá¡á á¬ážáá«áá¬áá®áá¬ááẠáá¯áááŒá áºáá±áá«áá - LLJIT ááẠLLJIT::initialize ááŸáá·áº LLJIT::deinitialize áááºážáááºážáá»á¬ážááŸáááá·áº static initializations áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážáá±ážáá¬ážáááºá StaticLibraryDefinitionGenerator á¡áááºážááᯠá¡áá¯á¶ážááŒá¯á JITDylib ááá¯á· static libraries áá»á¬ážáá±á«ááºážááá·áºááá¯ááºááá·áº á
áœááºážáááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá C API á¡ááœáẠááá·áºáá¬ážáááºá
ORCv2 (JIT compilers áááºáá±á¬ááºáááºá¡ááœáẠAPI)á - Cortex-A64á Cortex-A34á Cortex-A77 ááŸáá·áº Cortex-X78 áááá¯áááºáá¬áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠAArch1 áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá RMv8.2-BF16 (BFloat16) ááŸáá·áº ARMv8.6-A ááá¯ážáá»á²á·ááŸá¯áá»á¬ážá¡áá«á¡ááẠRMv8.6-ECV (ááŒáŸáá·áºáááºáá¬ážáá±á¬ Counter Virtualization)á ARMv8.6-FGT (Fine Grained Traps)á ARMv8.6-AMU (áá¯ááºáá±á¬ááºáá»ááºá á±á¬áá·áºááŒáá·áºá á áºáá±ážááŒááºáž virtualization) ááŸáá·áº ARMv8.0-DGH (áá±áá¬á á¯áá±á¬ááºážááŒááºáž á¡ááááºá¡ááŒáœááº)á SVE vector ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸáá·áº built-in functions-bindings á¡ááœáẠcode áá¯ááºáá±ážááá¯ááºá áœááºážááᯠáá±ážáá¬ážáááºá
- Cortex-M55á Cortex-A77á Cortex-A78 ááŸáá·áº Cortex-X1 áááá¯áááºáá¬áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠARM áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá ááá¯ážáá»á²á·ááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
Armv8.6-A Matrix ááŒáŸá±á¬ááºááŒááºážááŸáá·áº RMv8.2-AA32BF16 BFloat16á - POWER10 áááá¯áááºáá¬áá»á¬ážá¡ááœáẠáá¯ááºáá¯ááºáá¯ááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠPowerPC áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá Loop optimizations ááᯠáá»á²á·ááœááºááŒá®áž floating point áá¶á·ááá¯ážááŸá¯ááᯠááŒáŸáá·áºáááºáá¬ážáá«áááºá
- RISC-V áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶á¡á áœááºážááẠááá¬ážáááºá¡áááºáááŒá¯ááá±ážáá±á¬ á ááºážáááºááá¯ážáá»á²á· ááœáŸááºááŒá¬ážáá»ááºá¡á á¯á¶áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááá·áº áá¬áá±ážááŸá¯áá»á¬ážááᯠáááºáá¶ááœáá·áºááŒá¯áááºá
- AVR áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶á¡á¬ážááᯠá¡ááŒá±áá¶ááŒáá·áºááŒá°ážááŸá¯ááœáẠáá«áááºáá±á¬ á ááºážáááºá¡áá»áá¯ážá¡á á¬ážá០áááºááŒáááºááŸá¯ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá¬ážáááºá
- x86 áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶á¡á
áœááºááẠIntel AMX ááŸáá·áº TSXLDTRK ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºá ááá¯ááºááá¯ááºááŸá¯áá»á¬ážá¡ááœáẠá¡áá¬á¡ááœááºáá»á¬áž ááá·áºááœááºážáá¬ážáááºá
LVI (Load Value Injection) ááŸáá·áº CPU áá±á«áºááŸá ááŸááºážááá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬áá±á¬ ááá¯ááºááá¯ááºááŸá¯áá»á¬ážááᯠááááºááá¯á·ááẠáá±áá¯áá» Speculative Execution Side Effect Suppression ááá¹ááá¬ážááá¯áááºáž á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá - SystemZ áááá¯áá¬á¡ááœáẠáá±á¬ááºááœááºááœááºá MemorySanitizer ááŸáá·áº LeakSanitizer á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
- Libc++ ááœáẠáááºá¹áá»á¬ááááºážáá±áá»á¬ážááŒáá·áº áá±á«ááºážá
á®ážááá¯ááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áá±á«ááºážááá·áºáá¬ážáááºá
. -
áá»á²á·ááœááºáá²á·áááºá LLD linker á áœááºážáááºáá»á¬ážá áááºáá±á¬ááºážááœá±ážáá»ááºá áá¬áá»á¬áž á¡áá«á¡ááẠ"--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", "" á¡áá«á¡ááẠELF áá±á¬áºáááºá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá¶á·ááá¯ážááŸá¯ -thinlto- single-module", "-unique", "-rosegment", "-threads=N". ááá¯á·áá±á¬áẠChrome ááŸá chrome://tracing á¡ááºáá¬áá±á·á áºááŸáá áºááá·áº ááœá²ááŒááºážá áááºááŒá¬ááá¯ááºááá·áº ááá¯ááºáá áºáá¯ááá¯á· áá²ááœááºá ááᯠááááºážáááºážááẠ"--time-trace" ááœá±ážá áá¬ááᯠáá±á«ááºážááá·áºáá¬ážáááºá
source: opennet.ru