рдЫ рдорд╣рд┐рдирд╛рдХреЛ рд╡рд┐рдХрд╛рд╕ рдкрдЫрд┐, LLVM реиреи.рез.реж рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕рд▓реЗ рдЙрдкрдХрд░рдгрд╣рд░реВ (рдХрдореНрдкрд╛рдЗрд▓рд░рд╣рд░реВ, рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬрд░рд╣рд░реВ, рд░ рдХреЛрдб рдЬреЗрдирд░реЗрдЯрд░рд╣рд░реВ) рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрд▓рд╛рдИ RISC-рдЬрд╕реНрддреЛ рднрд░реНрдЪреБрдЕрд▓ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдмрд┐рдЯрдХреЛрдбрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрдЫ (рдмрд╣реБ-рд╕реНрддрд░реАрдп рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдкреНрд░рдгрд╛рд▓реА рднрдПрдХреЛ рдХрдо-рд╕реНрддрд░реАрдп рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди)ред рдЙрддреНрдкрдиреНрди рдЧрд░рд┐рдПрдХреЛ рд╕реНрдпреВрдбреЛрдХреЛрдбрд▓рд╛рдИ рджрд┐рдЗрдПрдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд▓рд╛рдЧрд┐ рдореЗрд╕рд┐рди рдХреЛрдбрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рд╕рд┐рдзреИ рдореЗрд╕рд┐рди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо (JIT) рдХрдореНрдкрд╛рдЗрд▓рд░рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред LLVM рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд, рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ C, C++, рд░ Objective-C рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИ Clang рдХрдореНрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред резрео.x рд╢рд╛рдЦрд╛рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрджреИ, рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдирдореНрдмрд░рд┐рдЩ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреЛ, рдЬрд╕ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рд▓реАрдЬ реж ("N.0") рд╡рд┐рдХрд╛рд╕рдХреЛ рдХреНрд░рдордорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рдкрд╣рд┐рд▓реЛ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ "N.1" рдирдореНрдмрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
Clang 22 рдорд╛ рд╕реБрдзрд╛рд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:
- рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрдирд╣рд░реВ (рдПрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрдирд╣рд░реВ) рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ рдЬрд╕рд▓реЗ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде malloc рдЬрд╕реНрддрд╛ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрдЫред рдПрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрдирд╣рд░реВрд▓реЗ рд╣рд┐рдк рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрд░рдЪрдирд╛ рдЧрд░реНрди, рдореЗрдореЛрд░реА рдЪреБрд╣рд╛рд╡рдЯ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рд░рд▓ рдмрдирд╛рдЙрди, рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдврд╛рдБрдЪрд╛рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕рдореВрд╣реАрдХрд░рдг рд╕рдХреНрд╖рдо рдкрд╛рд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рдЬрд╕реНрддреИ, "рддрд╛рддреЛ" рд▓рд╛рдИ "рдЪрд┐рд╕реЛ" рдбреЗрдЯрд╛рдмрд╛рдЯ рдЕрд▓рдЧ рдЧрд░реНрдиреЗ)ред рд╕рдХреНрд╖рдо рдЧрд░реНрди, "-fsanitize=alloc-token" рдЭрдгреНрдбрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- C рднрд╛рд╖рд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ:
- "рдбрд┐рдлрд░" рдбрд┐рдлрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрдпрдиреНрддреНрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдорд╕реНрдпреМрджрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯреАрдХрд░рдг рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рд╣рд╛рд▓рдХреЛ рд╕реНрдХреЛрдк рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдБрджрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред "рдбрд┐рдлрд░" рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдЧрд░реНрди "-fdefer-ts" рдЭрдгреНрдбрд╛ рдердкрд┐рдПрдХреЛ рдЫред
- GCC рдорд╛ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рдЧрд░реНрджреИ, рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реНрдп __builtin_stack_address() рдердкрд┐рдПрдХреЛ рдЫред рдпреЛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ __builtin_stack_address() рднрдирд┐рдиреЗ рд╣рд╛рд▓рдХреЛ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд╕реНрдЯреНрдпрд╛рдХ рдХреНрд╖реЗрддреНрд░ рд░ рдпрд╕рд▓реЗ рдХрд▓ рдЧрд░реНрдиреЗ рдкрдЫрд┐рд▓реНрд▓рд╛ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрд▓рд╛рдИ рдЫреБрдЯреНрдпрд╛рдЙрдиреЗ рд╕реНрдЯреНрдпрд╛рдХ рдареЗрдЧрд╛рдирд╛ рдлрд░реНрдХрд╛рдЙрдБрдЫред
- рднрд╡рд┐рд╖реНрдпрдХреЛ C2y рдорд╛рдирдХрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХрд╛ рдХреНрд╖рдорддрд╛рд╣рд░реВ:
- рдирд╛рдо рджрд┐рдЗрдПрдХреЛ рд▓реВрдкрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд▓реВрдкрд╣рд░реВрдорд╛ рдирд╛рдо рддреЛрдХреНрди рд░ рд╕реНрдЯреЗрдЯрдореЗрдиреНрдЯрд╣рд░реВ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЬреБрди рдмреНрд░реЗрдХ рд░ рдХрдиреНрдЯрд┐рдиреНрдпреБ рд╕реНрдЯреЗрдЯрдореЗрдиреНрдЯрд╣рд░реВрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рд▓реВрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // go to CONT1 continue outer; // go to CONT2 // CONT1 } // CONT2 }
- рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдорд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдирд┐рд░реНрдорд┐рдд "__COUNTER__" рдореНрдпрд╛рдХреНрд░реЛрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдорд╛рдирдХрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕ рдореНрдпрд╛рдХреНрд░реЛрдорд╛ реирезрекренрекреорейремрекрен рдХрд▓рд╣рд░реВрдХреЛ рд╕реАрдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ; рдпреЛ рд╕реАрдорд╛ рдирд╛рдШреНрджрд╛ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫред
- "рдмрд╛рд╣реНрдп рдЗрдирд▓рд╛рдЗрди" рдШреЛрд╖рд┐рдд рдлрдВрдХреНрд╢рдирд╣рд░реВ рднрд┐рддреНрд░ рд╕реНрдерд┐рд░ рдлрдВрдХреНрд╢рдирд╣рд░реВ рд╡рд╛ рдЪрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЪреЗрддрд╛рд╡рдиреА (-Wstatic-in-inline) рд╣рдЯрд╛рдЗрдпреЛред
- C23 C рдорд╛рдирдХрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╖рдорддрд╛рд╣рд░реВ:
- float.h рд╣реЗрдбрд░ рдлрд╛рдЗрд▓рд▓реЗ рдЕрдм FLT_SNAN, DBL_SNAN, рд░ LDBL_SNAN рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рдлреНрд▓реЛрдЯ, рдбрдмрд▓, рд░ рд▓рд╛рдореЛ рдбрдмрд▓ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдХреЗрддрд┐рдд (рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЕрдкрд╡рд╛рдж рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗ) NaN рдорд╛рдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред
- рдПрдЙрдЯреИ рдЕрдиреБрд╡рд╛рдж рдПрдХрд╛рдЗ рднрд┐рддреНрд░ рдПрдЙрдЯреИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рднрдПрдорд╛ рдлрд░рдХ рдирд╛рдо рдирднрдПрдХрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рдорд╛рдирд┐рдиреЗ рдмрдЧ рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдпреЛред
- рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдХреНрдпрд╛рдирд┐рдЩрдХреЛ рдХреНрд░рдордорд╛ рд╣рд░рд╛рдПрдХреЛ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ "-MG" рдЭрдгреНрдбрд╛рд▓рд╛рдИ "#embed" рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдЕрдм "#embed" рдирд┐рд░реНрджреЗрд╢рдирдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ "рдлрд╛рдЗрд▓ рдлреЗрд▓рд╛ рдкрд░реЗрди" рддреНрд░реБрдЯрд┐рд▓рд╛рдИ рджрдмрд╛рдЙрдБрдЫред
- C++ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:
- C++2c (C++26) рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░ "constexpr" рд╕рдиреНрджрд░реНрднрдорд╛ рд╕рдВрд░рдЪрд┐рдд рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдПрдХреЛ рдЫред рдпрд╕рдХреЛ рдЕрд░реНрде рд╕реНрдерд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рдЕрдм рдЖрдлреИрдВрдорд╛ рд╕реНрдерд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реБрди рд╕рдХреНрдЫрдиреНред рдПрд░реЗ рд░ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЯреБрдкрд▓рд╣рд░реВ рдЕрдЭреИ рд╕рдорд░реНрдерд┐рдд рдЫреИрдирдиреН)ред constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- C++реиреж рдорд╛рдирдХрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░, рдЕрдм рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЕрд╡рд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рдорд╛рдирдХ рд░реВрдкрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рдердк рд╕рдЯреАрдХ рдирд┐рджрд╛рди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд░ рдЕрд╡рдзрд╛рд░рдгрд╛-рдЖрдИрдбреАрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рддрд░реНрдХрд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЙрдЪрд┐рдд рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рдорд┐рд▓реНрдЫред
- рддреБрд▓рдирд╛рддреНрдордХ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ "<", ">", "<=", рд░ ">=" "<=>" рдЕрдкрд░реЗрдЯрд░рдмрд╛рдЯ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкрд░рд┐рд╡рд╛рд░ рдердкрд┐рдпреЛред
- "-Wincompatible-pointer-types" рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓рд╛рдИ рдЪреЗрддрд╛рд╡рдиреАрдХреЛ рд╕рдЯреНрдЯрд╛ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрдШрд┐рд▓реНрд▓реЛ рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛ рдлрд░реНрдХрди, "-Wno-error=incompatible-pointer-types" рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдердкрд┐рдПрдХрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, рд░ __builtin_dedup_packред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, builtin_dedup_pack рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдмрд╛рдЯ рдбреБрдкреНрд▓рд┐рдХреЗрдЯрд╣рд░реВ рд╣рдЯрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: MyTypeList = TypeList<__builtin_dedup_pack рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ тАж>; // рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдкрд▓рд┐рд╕реНрдЯ рд╣реБрдиреЗрдЫ
- UBSan (-fsanitize=undefined -fsanitize-trap=undefined) рд╕рдБрдЧ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдбрд┐рдмрдЧ рдЧрд░реНрджрд╛, рддреНрд░реБрдЯрд┐ рдХрд╛рд░рдг рдЬрд╛рдирдХрд╛рд░реА рдЕрдм рдЙрддреНрдкрдиреНрди рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реАрдорд╛ рд╡рд┐рд╡рд░рдгрдХреЛ рд╕реНрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди "-fsanitize-debug-trap-reasons" рдЭрдгреНрдбрд╛ рдердкрд┐рдПрдХреЛ рдЫред рдпрд╕рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ "рдЖрдзрд╛рд░рднреВрдд" рдорд╛ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдЬрд╕реНрддреИ, "рдкреВрд░реНрдгрд╛рдВрдХ рдердк рдУрднрд░рдлреНрд▓реЛ рднрдпреЛ") рд░ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди "рд╡рд┐рд╕реНрддреГрдд" рдорд╛ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдЬрд╕реНрддреИ, "'a + b' рдорд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░рд┐рдПрдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдердк рдУрднрд░рдлреНрд▓реЛ рднрдпреЛ")ред
- рдирдпрд╛рдБ рдХрдореНрдкрд╛рдЗрд▓рд░ рдЭрдгреНрдбрд╛ рдердкрд┐рдпреЛ:
- "-f[no-]sanitize-debug-trap-reasons" "-fsanitize-trap" рдореЛрдбрд╕рдБрдЧ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрд╛ рдЕрдкрд╡рд╛рдж рдЯреНрд░реНрдпрд╛рдк рдХрд╛рд░рдгрд╣рд░реВ рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реАрдорд╛ рдЗрдореНрдмреЗрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдХрд┐ рдЫреИрдирдиреН рднрдиреЗрд░ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрдиред
- рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╕рди рдЯреЛрдХрдирд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", рд░ "-fsanitize-alloc-token-extended"ред
- "-fmatrix-memory-layout" рдореНрдпрд╛рдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди (рдЬрд╕реНрддреИ рд╕реНрддрдореНрдн-рдкреНрд░рдореБрдЦрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрддрдореНрдн-рдкреНрд░рдореБрдЦ, рдкрдЩреНрдХреНрддрд┐-рдкреНрд░рдореБрдЦрдХреЛ рд▓рд╛рдЧрд┐ рдкрдЩреНрдХреНрддрд┐-рдкреНрд░рдореБрдЦ)ред
- рдлрдВрдХреНрд╢рдирд╣рд░реВрдорд╛ рдЕрдм "malloc_span" рдПрдЯреНрд░рд┐рдмреНрдпреБрдЯ рдЫ, рдЬреБрди malloc рдПрдЯреНрд░рд┐рдмреНрдпреБрдЯ рдЬрд╕реНрддреИ рдЫ рддрд░ рдмреНрд▓рдХрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╕рд╛рдЗрдЬ рд╡рд╛ рдкреЛрдЗрдиреНрдЯрд░ рднрдПрдХреЛ рдкреЛрдЗрдиреНрдЯрд░ рд░ рдлрд┐рд▓реНрдб рднрдПрдХреЛ рд╕реНрдкреНрдпрд╛рди-рдЬрд╕реНрддреЛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рдлрд░реНрдХрд╛рдЙрдиреЗ рдлрдВрдХреНрд╢рдирд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред
- рд▓рд┐рдЩреНрдХ рд╕рдордпрдорд╛ printf рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдЪрдпрди рдЧрд░реНрди "modular_format" рд╡рд┐рд╢реЗрд╖рддрд╛ рдердкрд┐рдпреЛред
- рдирд┐рджрд╛рди рд░ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН, рдирдпрд╛рдБ рдЬрд╛рдБрдЪрд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреН (рдзреЗрд░реИ рджрд░реНрдЬрди рдирд┐рджрд╛рди-рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕реБрдзрд╛рд░рд╣рд░реВ)ред
- X86 рдмреНрдпрд╛рдХрдПрдиреНрдбрдорд╛ SSE, AVX, рд░ AVX512 рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдердк рдЖрдиреНрддрд░рд┐рдХ рдХреБрд░рд╛рд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреНред Wildcat Lake (-march=wildcatlake) рд░ Nova Lake (-march=novalake) рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд Intel CPU рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд╛рдг рдореЛрдбрд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреНред
- AArch64 рдмреНрдпрд╛рдХрдПрдиреНрдбрд▓реЗ рдЕрдм рдПрдореНрдкреАрдпрд░ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдПрдореНрдкреАрдпрд░резрд╕реА (рдПрдореНрдкреАрдпрд░резрд╕реА), рдЖрд░реНрдо рд╕реАрез-рдирд╛рдиреЛ (рд╕реАрез-рдирд╛рдиреЛ), рдЖрд░реНрдо рд╕реАрез-рдкреНрд░реЛ (рд╕реАрез-рдкреНрд░реЛ), рдЖрд░реНрдо рд╕реАрез-рдкреНрд░рд┐рдорд┐рдпрдо (рд╕реАрез-рдкреНрд░рд┐рдорд┐рдпрдо), рд░ рдЖрд░реНрдо рд╕реАрез-рдЕрд▓реНрдЯреНрд░рд╛ (рд╕реАрез-рдЕрд▓реНрдЯреНрд░рд╛) рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], рд░ FCVTA[US] рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдердк рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреНред рдлрдВрдХреНрд╢рди рдорд▓реНрдЯрд┐-рднрд░реНрд╕рдирд┐рдЩ (FMV) рд╕рдорд░реНрдерди рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЕрдм рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рд▓рд╛рдИ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред
- LoongArch32 (LA32R, LA32S) рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред
- ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, рд░ PowerPC рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдмреНрдпрд╛рдХрдПрдиреНрдбрд╣рд░реВред
рд╕реНрд░реЛрдд: opennet.ru
