рд╕рд╣рд╛ рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, LLVM 22.1.0 рд░рд┐рд▓реАрдЬ рдЭрд╛рд▓реЗ рдЖрд╣реЗ. рддреЗ рд╕рд╛рдзрдиреЗ (рдХрдВрдкрд╛рдЗрд▓рд░, рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░реНрд╕ рдЖрдгрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рдЬреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдирд╛ RISC рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд┐рдЯрдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдд (рдорд▓реНрдЯреА-рд▓реЗрд╡реНрд╣рд▓ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рд┐рд╕реНрдЯрдорд╕рд╣ рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди). рдЬрдирд░реЗрдЯ рдХреЗрд▓реЗрд▓рд╛ рд╕реНрдпреВрдбреЛрдХреЛрдб рджрд┐рд▓реЗрд▓реНрдпрд╛ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдорд╢реАрди рдХреЛрдбрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рджрд░рдореНрдпрд╛рди рдереЗрдЯ рдорд╢реАрди рд╕реВрдЪрдирд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо (JIT) рдХрдВрдкрд╛рдпрд▓рд░рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. LLVM рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рдкреНрд░рдХрд▓реНрдк C, C++ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡реНрд╣-C рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░рд╛ рдХреНрд▓реЕрдВрдЧ рдХрдВрдкрд╛рдпрд▓рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ. 18.x рд╢рд╛рдЦреЗрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрди, рдкреНрд░рдХрд▓реНрдк рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдХреНрд░рдорд╛рдВрдХрди рдпреЛрдЬрдиреЗрд╡рд░ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓рд╛, рдЬреНрдпрд╛рдиреБрд╕рд╛рд░ рд░рд┐рд▓реАрдЬ 0 ("N.0") рд╡рд┐рдХрд╛рд╕рд╛рджрд░рдореНрдпрд╛рди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рд╕реНрдерд┐рд░ рдЖрд╡реГрддреНрддреАрд▓рд╛ "N.1" рдХреНрд░рдорд╛рдВрдХ рджрд┐рд▓реЗ рдЬрд╛рддреЗ.
рдХреНрд▓рдБрдЧ 22 рдордзреАрд▓ рд╕реБрдзрд╛рд░рдгрд╛рдВрдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ:
- рдореЗрдорд░реА рдЕтАНреЕрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрди (рдЕтАНреЕрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрди) рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди, рдЬреЗ рдпреБрдирд┐рдХ рдЖрдпрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░рд╕рд╣ malloc рд╕рд╛рд░рдЦреНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдореЗрдорд░реА рдЕтАНреЕрд▓реЛрдХреЗрд╢рди рдСрдкрд░реЗрд╢рдиреНрд╕рдирд╛ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рддреЗ. рдЕтАНреЕрд▓реЛрдХреЗрд╢рди рдЯреЛрдХрди рд╣реАрдк рдорд╛рд╣рд┐рддреАрдЪреА рд░рдЪрдирд╛ рдХрд░рдгреНрдпрд╛рд╕, рдореЗрдорд░реА рд▓реАрдХ рд╢реЛрдзрдгреНрдпрд╛рд╕ рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢ рдХрд┐рдВрд╡рд╛ рд╕реБрдзрд╛рд░рдгрд╛ рдирдореБрдиреНрдпрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рдЧрдЯрдмрджреНрдз рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд (рдЙрджрд╛., "рд╣реЙрдЯ" рд▓рд╛ "рдХреЛрд▓реНрдб" рдбреЗрдЯрд╛рдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХрд░рдгреЗ). рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, "-fsanitize=alloc-token" рдзреНрд╡рдЬ рд╡рд╛рдкрд░рд╛.
- рд╕реА рднрд╛рд╖реЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:
- "defer" defered execution mechanism рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд░рд╛ рдПрдХ рдорд╕реБрджрд╛ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреЛрдк рдмрд╛рд╣реЗрд░ рдкрдбрд▓реНрдпрд╛рд╡рд░ рдХреГрддреА рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. "defer" рд╕рдкреЛрд░реНрдЯ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-fdefer-ts" рдлреНрд▓реЕрдЧ рдЬреЛрдбрдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ.
- рдмрд┐рд▓реНрдЯ-рдЗрди рдлрдВрдХреНрд╢рди __builtin_stack_address() рдЬреЛрдбрдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрд╣реЗ, рдЬреЗ GCC рдордзреАрд▓ рд╕рдорд╛рди рдлрдВрдХреНрд╢рдирдЪреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЖрд╣реЗ. рд╣реЗ рдлрдВрдХреНрд╢рди __builtin_stack_address() рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╕реНрдЯреЕрдХ рдПрд░рд┐рдпрд╛рд▓рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдирд╛ рд╡реЗрдЧрд│реЗ рдХрд░рдгрд╛рд░рд╛ рд╕реНрдЯреЕрдХ рдЕреЕрдбреНрд░реЗрд╕ рдкрд░рдд рдХрд░рддреЗ.
- рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ C2y рдорд╛рдирдХрд╛рд╕рд╛рдареА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ рдХреНрд╖рдорддрд╛:
- рдирд╛рдорд╛рдВрдХрд┐рдд рд▓реВрдкрд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓реВрдкрдирд╛ рдирд╛рд╡реЗ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЬреЗ рдмреНрд░реЗрдХ рдЖрдгрд┐ рдХрдВрдЯрд┐рдиреНрдпреВ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреНрдпрд╛рдореБрд│реЗ рдмрд╛рд╣реЗрд░ рдкрдбрдгреНрдпрд╛рд╕рд╛рдареА рд▓реВрдк рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдмрд╛рд╣реНрдп: 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++20 рдорд╛рдирдХрд╛рдиреБрд╕рд╛рд░ рдЖрд╡рд╢реНрдпрдХрддреЗрдиреБрд╕рд╛рд░, рдЖрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдорд░реНрдпрд╛рджрд╛ рдорд╛рдирдХ рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдзрд┐рдХ рдЕрдЪреВрдХ рдирд┐рджрд╛рди рд╕рдВрджреЗрд╢ рдЖрдгрд┐ рдХреЗрд╡рд│ рд╕рдВрдХрд▓реНрдкрдирд╛-рдЖрдпрдбреАрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рддрд░реНрдХрд╛рдВрдордзреНрдпреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рддреНрд░реБрдЯреАрдВрдЪреЗ рдпреЛрдЧреНрдп рд╣рд╛рддрд╛рд│рдгреА рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рдорд┐рд│рддреЗ.
- "<", ">", "<=", рдЖрдгрд┐ ">=" рд╣реЗ рддреБрд▓рдирд╛рддреНрдордХ рдСрдкрд░реЗрдЯрд░ "<=>" рдСрдкрд░реЗрдЯрд░рдордзреВрди рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдХреА рдирд╛рд╣реА рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА "__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 рдПрдХреНрд╕рдЯреЗрдВрд╢рдирд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯреНрд░рд┐рдирд┐рдХреНрд╕ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. рд╡рд╛рдЗрд▓реНрдбрдХреЕрдЯ рд▓реЗрдХ (-рдорд╛рд░реНрдЪ=рд╡рд╛рдЗрд▓реНрдбрдХреЕрдЯрд▓реЗрдХ) рдЖрдгрд┐ рдиреЛрд╡реНрд╣рд╛ рд▓реЗрдХ (-рдорд╛рд░реНрдЪ=рдиреЛрд╡реНрд╣рд╛рд▓реЗрдХ) рдорд╛рдпрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЗрдВрдЯреЗрд▓ CPU рд╕рд╛рдареА рдмрд┐рд▓реНрдб рдореЛрдб рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд.
- AArch64 рдмреЕрдХрдПрдВрдб рдЖрддрд╛ рдЕрдБрдкрд┐рдЕрд░ рдХреЙрдореНрдкреНрдпреБрдЯрд┐рдВрдЧ рдЕрдБрдкрд┐рдЕрд░1C (рдЕрдБрдкрд┐рдЕрд░1c), рдЖрд░реНрдо C1-рдиреЕрдиреЛ (c1-рдиреЕрдиреЛ), рдЖрд░реНрдо C1-рдкреНрд░реЛ (c1-рдкреНрд░реЛ), рдЖрд░реНрдо C1-рдкреНрд░реАрдорд┐рдпрдо (c1-рдкреНрд░реАрдорд┐рдпрдо) рдЖрдгрд┐ рдЖрд░реНрдо C1-рдЕрд▓реНрдЯреНрд░рд╛ (c1-рдЕрд▓реНрдЯреНрд░рд╛) рдкреНрд░реЛрд╕реЗрд╕рд░рдирд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ. FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] рдЖрдгрд┐ FCVTA[US] рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рд▓реНрдЯ-рдЗрди рдлрдВрдХреНрд╢рдиреНрд╕ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. рдлрдВрдХреНрд╢рди рдорд▓реНрдЯреА-рд╡реНрд╣рд░реНрдЬрдирд┐рдВрдЧ (FMV) рд╕рдкреЛрд░реНрдЯ рд╕реНрдерд┐рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ. рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдЖрддрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдлрдВрдХреНрд╢рди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рд╛рдзрд╛рдиреНрдпрд╛рд▓рд╛ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рд╢рдХрддрд╛рдд.
- LoongArch32 (LA32R, LA32S) рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
- ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly рдЖрдгрд┐ PowerPC рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рдмреЕрдХрдПрдВрдб.
рд╕реНрддреНрд░реЛрдд: opennet.ru
