13.0๊ฐ์๊ฐ์ ๊ฐ๋ฐ ๋์ LLVM XNUMX ํ๋ก์ ํธ์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ RISC์ ๊ฐ์ ๊ฐ์ ๋ช ๋ น์ด์ ์ค๊ฐ ๋นํธ์ฝ๋(๋ฎ์ ์์ค์ ๊ฐ์ ๋จธ์ )๋ก ์ปดํ์ผํ๋ GCC ํธํ ํดํท(์ปดํ์ผ๋ฌ, ์ตํฐ๋ง์ด์ ๋ฐ ์ฝ๋ ์์ฑ๊ธฐ)์ ๋๋ค. ๋ค๋จ๊ณ ์ต์ ํ ์์คํ ). ์์ฑ๋ ์์ฌ์ฝ๋๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์ ์ง์ ๊ธฐ๊ณ์ด ๋ช ๋ น์ด๋ก ๋ณํ๋ ์ ์์ต๋๋ค.
Clang 13.0์ ๊ฐ์ ์ฌํญ:
- ๋ณด์ฅ๋ ํ ์ผ ํธ์ถ์ ๋ํ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค(ํจ์์ ๋งจ ๋์์ ์๋ธ๋ฃจํด ํธ์ถ, ์๋ธ๋ฃจํด์ด ์์ฒด ํธ์ถํ๋ ๊ฒฝ์ฐ ํ ์ผ ์ฌ๊ท ํ์ฑ). ๋ณด์ฅ๋ ๋ง๋ฌด๋ฆฌ ํธ์ถ์ ๋ํ ์ง์์ "return" ๋ฌธ์ ์ฌ์ฉ๋๋ C++์ "[[clang::musttail]]" ํน์ฑ๊ณผ C์ "__attribute__((musttail))"์ ์ํด ์ ๊ณต๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ํ๋ซ ๋ฐ๋ณต์ผ๋ก ๋ฐฐํฌํ์ฌ ์ต์ ํ๋ฅผ ๊ตฌํํ์ฌ ์คํ ์๋น๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- "using" ์ ์ธ๊ณผ clang ํ์ฅ์ "[[]]" ํ์์ ์ฌ์ฉํ์ฌ C++11 ์คํ์ผ ํน์ฑ์ ์ ์ํ๊ธฐ ์ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ์ ์ฝ๋์ ์์ฝ๋ ์๋ณ์๋ฅผ ์ง์ ํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๊ธฐ ์ํด "-Wreserved-identifier" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋งค๊ฐ๋ณ์ ๋๋ ๋ณ์๊ฐ ์ค์ ๋์์ง๋ง ์ฌ์ฉ๋์ง ์์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๊ธฐ ์ํด "-Wunused-but-set-parameter" ๋ฐ "-Wunused-but-set-variable" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋นผ๊ธฐ ์์ ์์ null ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋์์ ์ ์๋์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๋ "-Wnull-pointer-subtraction" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๊ฐ ์ฝ๋ ํ์ผ์ ๋ํด ์ฒ๋ฆฌ ์ค์ธ ํ์ผ์ ์ ์๋ ๊ฐ ํจ์์ ๋ํ ์คํ ํ๋ ์ ํฌ๊ธฐ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ์ถ๊ฐ ".su" ํ์ผ์ ์์ฑํ๊ธฐ ์ํด "-fstack-usage" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ ์ ๋ถ์๊ธฐ์ ์๋ก์ด ์ถ๋ ฅ ์ ํ์ธ "sarif-html"์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด HTML ๋ฐ Sarif ํ์์ผ๋ก ๋์์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์๋ก์ด allocClassWithName ํ์ธ์ด ์ถ๊ฐ๋์์ต๋๋ค. -analyzer-display-progress ์ต์ ์ ์ง์ ํ๋ฉด ๊ฐ ํจ์์ ๋ถ์ ์๊ฐ์ด ํ์๋๋ค. ์ค๋งํธ ํฌ์ธํฐ ๋ถ์๊ธฐ(alpha.cplusplus.SmartPtr)๊ฐ ๊ฑฐ์ ์ค๋น๋์์ต๋๋ค.
- OpenCL ์ง์๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ด ํ์ฅ๋์์ต๋๋ค. ์๋ก์ด ํ์ฅ cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ๋ฐ __cl_clang_non_portable_kernel_param_types์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. OpenCL 3.0 ์ฌ์์ ๊ตฌํ์ด ๊ณ์๋์์ต๋๋ค. C์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฒ์ ์ ๋ช ์์ ์ผ๋ก ์ ํํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก OpenCL 1.2 ์ฌ์์ด ์ฌ์ฉ๋ฉ๋๋ค. C++์ ๊ฒฝ์ฐ ํ์ฅ์๊ฐ ".clcpp"์ธ ํ์ผ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- OpenMP 5.1 ์ฌ์์ ์ ์๋ ๋ฃจํ ๋ณํ ์ง์๋ฌธ("#pragma omp unrol" ๋ฐ "#pragma omp Tile")์ ๋ํ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค.
- clang-format ์ ํธ๋ฆฌํฐ์ ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค. SpacesInLineCommentPrefix๋ ์ฃผ์ ์์ ๊ณต๋ฐฑ ์๋ฅผ ์ ์ํ๊ณ IndentAccessModifiers, LambdaBodyIndentation ๋ฐ PPIndentWidth๋ ํญ๋ชฉ ์ ๋ ฌ, ๋๋ค ์ ๋ฐ ์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ์ ์ ์ดํฉ๋๋ค. ํค๋ ํ์ผ ์ด๊ฑฐ(SortIncludes) ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ด ํ์ฅ๋์์ต๋๋ค. JSON ํ์ผ ํ์ ์ง์ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- linter clang-tidy์ ์๋ก์ด ๊ฒ์ฌ์ ์๋น ๋ถ๋ถ์ด ์ถ๊ฐ๋์์ต๋๋ค.
LLVM 13.0์ ์ฃผ์ ํ์ ์ฌํญ:
- ์์ธ ์ฒ๋ฆฌ ๋จ๊ณ์์ ROP(๋ฐํ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ๊ณต๊ฒฉ ์คํ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด CET(Windows ์ ์ด ํ๋ฆ ์ ์ฉ ๊ธฐ์ ) ๊ธฐ์ ์ ์ฌ์ฉํ๋ "-ehcontguard" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- debuginfo-test ํ๋ก์ ํธ๋ cross-project-tests๋ก ์ด๋ฆ์ด ๋ฐ๋์์ผ๋ฉฐ ๋๋ฒ๊น ์ ๋ณด์ ๊ตญํ๋์ง ์๊ณ ๋ค์ํ ํ๋ก์ ํธ์ ๊ตฌ์ฑ ์์๋ฅผ ํ ์คํธํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
- ์ด์ ๋ธ๋ฆฌ ์์คํ ์ ์ฌ๋ฌ ๋ฐฐํฌํ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋๋ ์ ํธ๋ฆฌํฐ๊ฐ ์๊ณ ๋ค๋ฅธ ํ๋๋ ๊ฐ๋ฐ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
- AArch64 ์ํคํ ์ฒ์ ๋ฐฑ์๋์์๋ Armv9-A RME(Realm Management Extension) ๋ฐ SME(Scalable Matrix Extension) ํ์ฅ์ ๋ํ ์ง์์ด ์ด์ ๋ธ๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค.
- ISA V68/HVX์ ๋ํ ์ง์์ด Hexagon ์ํคํ ์ฒ์ ๋ฐฑ์๋์ ์ถ๊ฐ๋์์ต๋๋ค.
- x86 ๋ฐฑ์๋๋ AMD Zen 3 ํ๋ก์ธ์์ ๋ํ ์ง์์ด ํฅ์๋์์ต๋๋ค.
- AMDGPU ๋ฐฑ์๋์ GFX1013 RDNA2 APU์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- Libc++๋ "concepts" ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์ ํฌํจํ์ฌ C++20 ๋ฐ C++2b ํ์ค์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ณ์ ๊ตฌํํฉ๋๋ค. MinGW ๊ธฐ๋ฐ Windows ํ๋ซํผ์ ๋ํ std::filesystem์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ํค๋ ํ์ผ , ๋ฐ ๋ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์์ ํ ๊ตฌํ๋์ง ์์ ๊ธฐ๋ฅ์ด ์๋ ํค๋ ํ์ผ์ ๋นํ์ฑํํ๊ธฐ ์ํด ๋น๋ ์ต์ LIBCXX_ENABLE_INCOMPLETE_FEATURES๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- Big-endian Aarch64 ํ๋ก์ธ์์ ๋ํ ์ง์์ด ๊ตฌํ๋๋ LLD ๋ง์ปค์ ๊ธฐ๋ฅ์ด ํ์ฅ๋์์ผ๋ฉฐ Mach-O ๋ฐฑ์๋๋ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ ๋งํฌํ ์ ์๋ ์ํ๋ก ์ ํ๋์์ต๋๋ค. LLD๋ฅผ ์ฌ์ฉํ์ฌ Glibc๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๊ฐ์ ์ฌํญ์ด ํฌํจ๋์์ต๋๋ค.
- llvm-mca(๊ธฐ๊ณ ์ฝ๋ ๋ถ์๊ธฐ) ์ ํธ๋ฆฌํฐ์๋ ARM Cortex-A55์ ๊ฐ์ด ๋ช ๋ น์ ์์๋๋ก(์์ฐจ์ ์ํผ์ค์นผ๋ผ ํ์ดํ๋ผ์ธ) ์คํํ๋ ํ๋ก์ธ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- AArch64 ํ๋ซํผ์ฉ LLDB ๋๋ฒ๊ฑฐ๋ ํฌ์ธํฐ ์ธ์ฆ, MTE(MemTag, Memory Tagged Extension) ๋ฐ SVE ๋ ์ง์คํฐ๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค. ๊ฐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ ์ ํ๊ทธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ ๋ ์ฌ๋ฐ๋ฅธ ํ๊ทธ์ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ํฌ์ธํฐ ๊ฒ์ฌ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ๋ช ๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค.
- LLDB ๋๋ฒ๊ฑฐ์ Fortran ์ธ์ด์ฉ ํ๋ฐํธ์๋(Flang)๊ฐ ํ๋ก์ ํธ์์ ์์ฑ๋ ๋ฐ์ด๋๋ฆฌ ์ด์ ๋ธ๋ฆฌ์ ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru