LLVM 16.0 рдХрдВрдкрд╛рдпрд▓рд░ рд╕реВрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рд╕рд╣рд╛ рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, LLVM 16.0 рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ - рдПрдХ GCC-рд╕реБрд╕рдВрдЧрдд рдЯреВрд▓рдХрд┐рдЯ (рдХрдВрдкрд╛рдпрд▓рд░, рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░реНрд╕ рдЖрдгрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░) рдЬреЗ RISC-рд╕рд╛рд░рдЦреНрдпрд╛ рдЖрднрд╛рд╕реА рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд┐рдЯрдХреЛрдбрдордзреНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ (рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЖрднрд╛рд╕реА рдорд╢реАрди рдмрд╣реБ-рд╕реНрддрд░реАрдп рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо). рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓рд╛ рд╕реНрдпреВрдбреЛрдХреЛрдб JIT рдХрдВрдкрд╛рдпрд▓рд░ рд╡рд╛рдкрд░реВрди рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реА рдереЗрдЯ рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдХреНрд▓реЕрдВрдЧ 16.0 рдордзреАрд▓ рдкреНрд░рдореБрдЦ рд╕реБрдзрд╛рд░рдгрд╛:

  • рдбреАрдлреЙрд▓реНрдЯ C++/ObjC++ рдорд╛рдирдХ gnu++17 (рдкреВрд░реНрд╡реА gnu++14) рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ GNU рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╣ C++17 рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд. рдорд╛рдЧреАрд▓ рд╡рд░реНрддрди рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА "-std=gnu++14" рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.
  • C++20 рдорд╛рдирдХрд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдЧрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реА:
    • рд╕рд╢рд░реНрдд рдХреНрд╖реБрд▓реНрд▓рдХ рд╡рд┐рд╢реЗрд╖ рд╕рджрд╕реНрдп рдХрд╛рд░реНрдпреЗ,
    • рд▓реЕрдореНрдмрдбрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рд╕рдВрд░рдЪрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЕрдкреНрдЪрд░ рдХрд░рдгреЗ,
    • рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдордзреНрдпреЗ рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░,
    • рдХрд╛рд╣реА рд╕рдВрджрд░реНрднрд╛рдВрдордзреНрдпреЗ рдЯрд╛рдЗрдкрдиреЗрдо рдХреАрд╡рд░реНрдб рд╡рдЧрд│рдгреНрдпрд╛рдЪрд╛ рдкрд░реНрдпрд╛рдп,
    • рдХрдВрд╕рд╛рдд рд╡реИрдз рдПрдХреВрдг рдЖрд░рдВрднреАрдХрд░рдг (тАЬAggr(val1, val2)тАЭ).
  • рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ C++2b рдорд╛рдирдХрд╛рдВрдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд:
    • рд╕рдВрдпреБрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рд▓реЗрдмрд▓реЗ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ,
    • рд╕реНрдерд┐рд░ рдСрдкрд░реЗрдЯрд░(),
    • рд╕реНрдерд┐рд░ рдСрдкрд░реЗрдЯрд░[],
    • char8_t рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ,
    • "\N{...}" рдордзреНтАНрдпреЗ рд╡рд╛рдкрд░рдгреНтАНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдордд рд╡рд░реНрдгрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рд╡рд╛рдврд╡рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ
    • constexpr рдореНрд╣рдгреВрди рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ "static constexpr" рдореНрд╣рдгреВрди рдШреЛрд╖рд┐рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА.
  • рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ C-рдорд╛рдирдХ C2x рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд:
    • "-Wunused-label" рдЪреЗрддрд╛рд╡рдгреА рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, "[[рдХрджрд╛рдЪрд┐рдд_unused]]" рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓реЗрдмрд▓рд╛рдВрд╡рд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рдЖрд╣реЗ
    • рд╕рдВрдпреБрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдордзреНрдпреЗ рдХреБрдареЗрд╣реА рд▓реЗрдмрд▓ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ,
    • typeof рдЖрдгрд┐ typeof_unqual рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд▓реЗ,
    • рд╢реВрдиреНрдп рдкреЙрдЗрдВрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдирд╡реАрди рдкреНрд░рдХрд╛рд░ nullptr_t рдЖрдгрд┐ nullptr рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рдХрд╛рд░рд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╣реЛрдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдгрд┐ рд╢реВрдиреНрдп* рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ рдмрд╛рдВрдзреАрд▓ рдирд╕рд▓реЗрд▓реНрдпрд╛ NULL рдЪреЗ рдкреНрд░рдХрд╛рд░ рджрд░реНрд╢рд╡реВ рд╢рдХрддрд╛рдд.
    • C2x рдореЛрдбрдордзреНрдпреЗ, va_start рдореЕрдХреНрд░реЛрд▓рд╛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕рдЪреНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирдВрдмрд░рд╕рд╣ (рд╡реНрд╣реЗрд░рд┐рдПрдбрд┐рдХ) рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • C99, C11, рдЖрдгрд┐ C17 рдЕрдиреБрдкрд╛рд▓рди рдореЛрдбрдордзреНрдпреЗ, рдбреАрдлреЙрд▓реНрдЯ рдкрд░реНрдпрд╛рдп "-Wimplicit-function-declaration" рдЖрдгрд┐ "-Wimplicit-int" рдЖрддрд╛ рдЪреЗрддрд╛рд╡рдгреАрдРрд╡рдЬреА рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛рдд.
  • C++ рдореЛрдбрдордзреНтАНрдпреЗ "void*" (рдЙрджрд╛. "void func(void *p) { *p; }") рдЪрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░ рдЖрддрд╛ ISO C++, GCC, ICC рдЖрдгрд┐ MSVC рдкреНрд░рдорд╛рдгреЗрдЪ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЛ.
  • рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯ-рд╢реИрд▓реАрддреАрд▓ рдЗрдирд▓рд╛рдЗрди рдЕрд╕реЗрдВрдмреНрд▓реА рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдСрдкрд░реЗрдВрдбреНрд╕ (рдЙрджрд╛. "__asm тАЛтАЛ{ mov eax, s.bf }") рдореНрд╣рдгреВрди рдмрд┐рдЯрдлрд┐рд▓реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдЖрддрд╛ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреЗ.
  • рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдореЙрдбреНрдпреВрд▓реНрд╕рдордзреНрдпреЗ рд╕рдорд╛рди рдирд╛рд╡рд╛рдВрд╕рд╣ рднрд┐рдиреНрди рд╕рдВрд░рдЪрдирд╛ рдЖрдгрд┐ рдпреБрдирд┐рдпрдирдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрд╕рд╛рдареА рдирд┐рджрд╛рди рдЬреЛрдбрд▓реЗ.
  • OpenCL рдЖрдгрд┐ OpenMP рд╕рдкреЛрд░реНрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ. OpenCL рдХрд░реНрдирд▓ рд╡рд┐рддрд░реНрдХрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ C++ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рдирд┐рджрд╛рди. AMDGPU рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд░рд╛рдВрдЧреЗрдд рдмреНрд▓реЙрдХ рд╕рдорд░реНрдерди. nounwind рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд░реНрд╡ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЕрд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЬреЛрдбрд▓реА рдЬрд╛рддреЗ. рдЕрдВрдЧрднреВрдд рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди.
  • CLANG_CRASH_DIAGNOSTICS_DIR рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдХреНрд░реЕрд╢ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдбреЗрдЯрд╛ рдЬрддрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рддреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.
  • рдпреБрдирд┐рдХреЛрдб рд╕рдкреЛрд░реНрдЯ рдпреБрдирд┐рдХреЛрдб резрел.реж рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЕрдкрдбреЗрдЯ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. "тВК" (рдЙрджрд╛. "рдбрдмрд▓ xтВЦтВКтВБ") рд╕рд╛рд░рдЦреНрдпрд╛ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХрд╛рдВрдордзреНрдпреЗ рдХрд╛рд╣реА рдЧрдгрд┐рддреА рдЪрд┐рдиреНрд╣рд╛рдВрдирд╛ рдЕрдиреБрдорддреА рдЖрд╣реЗ.
  • рдПрдХрд╛рдзрд┐рдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ (рдбрд┐рдлреЙрд▓реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕ рдкреНрд░рдердо рд▓реЛрдб рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛ тАЬ--config=тАЭ рдзреНрд╡рдЬрд╛рджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛ рдЖрддрд╛ рдЕрдиреЗрдХ рд╡реЗрд│рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд). рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕рдЪрд╛ рдбреАрдлреЙрд▓реНрдЯ рд▓реЛрдбрд┐рдВрдЧ рдСрд░реНрдбрд░ рдмрджрд▓рд▓рд╛: рдХреНрд▓реЕрдВрдЧ рдкреНрд░рдердо рдлрд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ - .cfg, рдЖрдгрд┐ рдЬрд░ рддреЗ рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реА рддрд░ рддреЗ рджреЛрди рдлрд╛рдЗрд▓реНрд╕ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ .cfg рдЖрдгрд┐ .cfg. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕ рд▓реЛрдб рдХрд░рдгреЗ рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, тАЬ--no-default-configтАЭ рдзреНрд╡рдЬ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
  • рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдмрд┐рд▓реНрдбрдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, SOURCE_DATE_EPOCH рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│реЗрд╕рд╣ __DATE__, __TIME__ рдЖрдгрд┐ __TIMESTAMP__ рдореЕрдХреНрд░реЛрдордзреАрд▓ рд╡рд░реНрддрдорд╛рди рддрд╛рд░реАрдЦ рдЖрдгрд┐ рд╡реЗрд│ рдореВрд▓реНрдпреЗ рдмрджрд▓рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ.
  • рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рдВрдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрдгрд╛рд░реНтАНрдпрд╛ рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА (рдЕрдВрдЧрднреВрдд) рдЙрдкрд╕реНрдерд┐рддреА рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рдореЕрдХреНрд░реЛ тАЬ__has_constexpr_builtinтАЭ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рд╕рдВрд░реЗрдЦрд┐рдд coroutine рдлреНрд░реЗрдо рд╡рд╛рдЯрдкрд╛рд╕рд╛рдареА рдирд╡реАрди рд╕рдВрдХрд▓рди рдзреНрд╡рдЬ "-fcoro-aligned-allocation" рдЬреЛрдбрд▓рд╛.
  • тАЬ-fstrict-flex-arrays=тАЭ рдзреНрд╡рдЬ рд╕рдВрд░рдЪрдирд╛рдВрдордзреАрд▓ рд▓рд╡рдЪрд┐рдХ рдЕреЕрд░реЗ рдШрдЯрдХрд╛рдВрд╕рд╛рдареА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреНрдпрд╛ рддрд┐рд╕рд▒реНрдпрд╛ рд╕реНрддрд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рддреЛ (рд▓рд╡рдЪрд┐рдХ рдЕреЕрд░реЗ рд╕рджрд╕реНрдп, рд╕рдВрд░рдЪрдиреЗрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЕрдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░рд╛рдЪрд╛ рдЕреЕрд░реЗ). рддрд┐рд╕рд▒реНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░, рдлрдХреНрдд рдЖрдХрд╛рд░ "[]" (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "int b[]") рдПрдХ рд▓рд╡рдЪрд┐рдХ рдЕреЕрд░реЗ рдорд╛рдирд▓рд╛ рдЬрд╛рддреЛ, рдкрд░рдВрддреБ рдЖрдХрд╛рд░ "[0]" (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "int b[0]") рдирд╛рд╣реА.
  • рдорд╛рдирдХ C++ рдореЙрдбреНрдпреВрд▓реНрд╕рд╕рд╛рдареА рд╕рд┐рдВрдЧрд▓-рдлреЗрдЬ рд╕рдВрдХрд▓рди рдореЙрдбреЗрд▓ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-fmodule-output" рдзреНрд╡рдЬ рдЬреЛрдбрд▓рд╛.
  • рд╕реНрдЯреЕрдХ рдлреНрд░реЗрдо рд▓реЗрдЖрдЙрдЯрд╕рд╣ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рджрд╛рди рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-Rpass-analysis=stack-frame-layout" рдореЛрдб рдЬреЛрдбрд▓рд╛.
  • AArch1 рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддреНрдпрд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА __attribute__((target_version("cpu_features"))) __рд╡рд┐рд╢реЗрд╖рддрд╛__((target_clones("cpu_features2","cpu_features64",...))) рд╡рд┐рд╢реЗрд╖рддреЗрдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рд▓реА CPUs.
  • рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдЯреВрд▓реНрд╕рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗрд▓рд╛:
    • рд╕рд┐рдВрдЧрд▓-рдмрд┐рдЯ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрд┐рдЯрдлрд┐рд▓реНрдбрд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХрд░рддрд╛рдирд╛ рдЧрд░реНрднрд┐рдд рдЯреНрд░рдВрдХреЗрд╢рди рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА "-Wsingle-bit-bitfield-constant-conversion" рдЪреЗрддрд╛рд╡рдгреА рдЬреЛрдбрд▓реА.
    • рд╕реБрд░реВ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЙрдиреНрд╕реНрдЯреЗрдХреНрд╕реНрдкрд░ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рдирд┐рджрд╛рди рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.
    • рдлрдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХрд╛рд╕реНрдЯрд┐рдВрдЧрд╕рд╣ рд╕рдВрднрд╛рд╡реНрдп рд╕рдорд╕реНрдпрд╛ рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА "-Wcast-function-type-strict" рдЖрдгрд┐ "-Wincompatible-function-pointer-types-strict" рдЪреЗрддрд╛рд╡рдгреА рдЬреЛрдбрд▓реНрдпрд╛.
    • рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ рдЪреБрдХреАрдЪреА рдХрд┐рдВрд╡рд╛ рдЖрд░рдХреНрд╖рд┐рдд рдореЙрдбреНрдпреВрд▓рдЪреА рдирд╛рд╡реЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдЬреЛрдбрд▓реЗ.
    • рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрдордзреНрдпреЗ рдЧрд╣рд╛рд│ "рд╕реНрд╡рдпрдВ" рдХреАрд╡рд░реНрдбрдЪреА рд╕реБрдзрд╛рд░рд┐рдд рдУрд│рдЦ.
    • "-рд╡рд┐рдВрдЯреЗрдЬрд░-рдУрд╡реНрд╣рд░рдлреНрд▓реЛ" рдЪреЗрддрд╛рд╡рдгреАрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдиреЗ рдЕрддрд┐рд░реАрдХреНрдд рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрд╕рд╛рдареА рдЪреЗрдХ рдЬреЛрдбрд▓реЗ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдореБрд│реЗ рдУрд╡реНрд╣рд░рдлреНрд▓реЛ рд╣реЛрддреЗ.
  • LoongArch рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (-march=loongarch64 рдХрд┐рдВрд╡рд╛ -march=la464) рд╕рд╛рдареА рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди, Loongson 3 5000 рдкреНрд░реЛрд╕реЗрд╕рд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ MIPS рдЖрдгрд┐ RISC-V рдкреНрд░рдорд╛рдгреЗрдЪ рдирд╡реАрди RISC ISA рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рддреЗ.

LLVM 16.0 рдордзреАрд▓ рдкреНрд░рдореБрдЦ рдирд╡рдХрд▓реНрдкрдирд╛:

  • LLVM рдХреЛрдбрд▓рд╛ C++17 рдорд╛рдирдХрд╛рдВрдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдШрдЯрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • LLVM рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рдврд╡рдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕рдиреЗ рдЖрддрд╛ C++17 рдорд╛рдирдХрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджрд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ, рдЙрджрд╛. рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд┐рдорд╛рди GCC 7.1, Clang 5.0, Apple Clang 10.0 рдХрд┐рдВрд╡рд╛ Visual Studio 2019 16.7 рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  • AArch64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдб Cortex-A715, Cortex-X3 рдЖрдгрд┐ Neoverse V2 CPUs, RME MEC (рдореЗрдорд░реА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕рдВрджрд░реНрдн), Armv8.3 рд╡рд┐рд╕реНрддрд╛рд░ (рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдирдВрдмрд░) рдЖрдгрд┐ рдлрдВрдХреНрд╢рди рдорд▓реНрдЯреА рд╡реНрд╣рд░реНрдЬрдирд┐рдВрдЧрд╕рд╛рдареА рдЕрд╕реЗрдВрдмрд▓рд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрддреЗ.
  • ARM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ, Armv2, Armv2A, Armv3 рдЖрдгрд┐ Armv3M рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рдмрдВрдж рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдХреЛрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╣рдореА рджрд┐рд▓реЗрд▓реА рдирд╛рд╣реА. рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА.
  • X86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдиреЗ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░реНрд╕ (ISAs) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ. RDMSRLIST, RMSRLIST рдЖрдгрд┐ WRMSRNS рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids" рдЖрдгрд┐ "-mcpu=grandridge" рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рдкрд░реНрдпрд╛рдп.
  • LoongArch рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • MIPS, PowerPC рдЖрдгрд┐ RISC-V рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рдмреЕрдХрдПрдВрдб
  • LLDB рдбреАрдмрдЧрд░рдордзреНрдпреЗ LoongArch рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА 64-рдмрд┐рдЯ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. COFF рдбреАрдмрдЧ рдЪрд┐рдиреНрд╣рд╛рдВрдЪреЗ рд╕реБрдзрд╛рд░рд┐рдд рд╣рд╛рддрд╛рд│рдгреА. рд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбреАрдПрд▓рдПрд▓рдЪреЗ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • Libc++ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ, рдореБрдЦреНрдп рдХрд╛рдо C++20 рдЖрдгрд┐ C++23 рдорд╛рдирдХрд╛рдВрдЪреНрдпрд╛ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╡рд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрддреЗ.
  • LDD рд▓рд┐рдВрдХрд░ рдЕреЕрдбреНрд░реЗрд╕ рд░рд┐рд▓реЛрдХреЗрд╢рди рд╕реНрдХреЕрдирд┐рдВрдЧ рдЖрдгрд┐ рд╕реЗрдХреНрд╢рди рдЗрдирд┐рд╢рд┐рдПрд▓рд╛рдпрдЭреЗрд╢рди рдСрдкрд░реЗрд╢рдиреНрд╕ рд╕рдорд╛рдВрддрд░ рдХрд░реВрди рд▓рд┐рдВрдХрд┐рдВрдЧ рд╡реЗрд│ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХрд░рддреЛ. ZSTD рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд╛рдкрд░реВрди рд╕реЗрдХреНрд╢рди рдХреЙрдореНрдкреНрд░реЗрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛