LLVM 12.0 ์ปดํŒŒ์ผ๋Ÿฌ ์ œํ’ˆ๊ตฐ ์ถœ์‹œ

12.0๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— LLVM XNUMX ํ”„๋กœ์ ํŠธ์˜ ์ถœ์‹œ๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ RISC์™€ ๊ฐ™์€ ๊ฐ€์ƒ ๋ช…๋ น์–ด์˜ ์ค‘๊ฐ„ ๋น„ํŠธ์ฝ”๋“œ(๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ฐ€์ƒ ๋จธ์‹ )๋กœ ์ปดํŒŒ์ผํ•˜๋Š” GCC ํ˜ธํ™˜ ํˆดํ‚ท(์ปดํŒŒ์ผ๋Ÿฌ, ์˜ตํ‹ฐ๋งˆ์ด์ € ๋ฐ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ)์ž…๋‹ˆ๋‹ค. ๋‹ค๋‹จ๊ณ„ ์ตœ์ ํ™” ์‹œ์Šคํ…œ). ์ƒ์„ฑ๋œ ์˜์‚ฌ์ฝ”๋“œ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ง์ ‘ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Clang 12.0์˜ ๊ฐœ์„  ์‚ฌํ•ญ:

  • C++20 ํ‘œ์ค€์—์„œ ์ œ์•ˆ๋œ "likely" ๋ฐ "unlikely" ์†์„ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์–ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์กฐ๊ฑด๋ถ€ ๊ตฌ๋ฌธ์ด ํŠธ๋ฆฌ๊ฑฐ๋  ํ™•๋ฅ ์— ๋Œ€ํ•ด ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์— ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: "[[likely ]] if (์ž„์˜ > 0) {โ€œ).
  • AMD Zen 3(-march=znver3), Intel Alder Lake(-march=alderlake) ๋ฐ Intel Sapphire Rapids(-march=sapphirerapids) ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86-64 ์•„ํ‚คํ…์ฒ˜ ์ˆ˜์ค€์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ "-march=x234-86-v[64]" ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(v2 - SSE4.2, SSSE3, POPCNT ๋ฐ CMPXCHG16B ํ™•์žฅ ํฌํ•จ, v3 - AVX2 ๋ฐ MOVBE, v4 - AVX-512 ) .
  • Arm Cortex-A78C(cortex-a78c), Arm Cortex-R82(cortex-r82), Arm Neoverse V1(neoverse-v1), Arm Neoverse N2(neoverse-n2) ๋ฐ Fujitsu A64FX(a64fx) ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Neoverse-V1 CPU์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด "-mcpu=neoverse-v1"์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AArch64 ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฝ์šฐ "__aarch64_cas8_relax"์™€ ๊ฐ™์€ ์›์ž์„ฑ ์ž‘์—… ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ "-moutline-atomics" ๋ฐ "-mno-outline-atomics"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ LSE(Large System Extensions) ์ง€์›์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋Ÿฐํƒ€์ž„์— ๊ฐ์ง€ํ•˜๊ณ  ์ œ๊ณต๋œ ์›์ž ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด LL/SC(Load-link/store-conditional) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ „ ๋ง์ปค ๋ฐ ์–ด์…ˆ๋ธ”๋Ÿฌ ๋™์ž‘๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด binutils ์ œํ’ˆ๊ตฐ์˜ ๋Œ€์ƒ ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” "-fbinutils-version" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ELF ์‹คํ–‰ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ "-gz" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ zlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ๋””๋ฒ„๊น… ์ •๋ณด ์••์ถ•์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค(gz=zlib). ๊ฒฐ๊ณผ ๊ฐœ์ฒด ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด lld ๋˜๋Š” GNU binutils 2.26+๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ binutils์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณต์›ํ•˜๋ ค๋ฉด "-gz=zlib-gnu"๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ 'this' ํฌ์ธํ„ฐ๋Š” null์ด ์•„๋‹Œ ์—ญ์ฐธ์กฐ(N) ๊ฒ€์‚ฌ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. NULL ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ null์ด ์•„๋‹Œ ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด "-fdelete-null-pointer-checks" ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Linux ํ”Œ๋žซํผ์—์„œ๋Š” GCC์™€ ๊ฐ™์ด ํ•ด์ œ ํ˜ธ์ถœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด AArch64 ๋ฐ PowerPC ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด "-fasynchronous-unwind-tables" ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
  • "#pragma clang loop vectorize_width"์—๋Š” ๋ฒกํ„ฐํ™” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด "๊ณ ์ •"(๊ธฐ๋ณธ๊ฐ’) ๋ฐ "ํ™•์žฅ ๊ฐ€๋Šฅ" ์˜ต์…˜์„ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ๊ธธ์ด์™€ ๋ฌด๊ด€ํ•œ "ํ™•์žฅ ๊ฐ€๋Šฅ" ๋ชจ๋“œ๋Š” ์‹คํ—˜์ ์ด๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฒกํ„ฐํ™”๋ฅผ ์ง€์›ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Windows ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์› ๊ฐœ์„ : Clang ์ปดํŒŒ์ผ๋Ÿฌ, LLD ๋ง์ปค ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ-rt ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ Arm64 ์‹œ์Šคํ…œ์˜ Windows์šฉ ๊ณต์‹ ๋ฐ”์ด๋„ˆ๋ฆฌ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MinGW ๋Œ€์ƒ ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ ํฌ๋กœ์Šค ์ปดํŒŒ์ผ ์‹œ์—๋„ .exe ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • OpenCL, OpenMP ๋ฐ CUDA ์ง€์›๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. OpenCL 3.0 ๋ฐ OpenCL 1.0์— ๋Œ€ํ•œ ๋งคํฌ๋กœ ์˜ต์…˜์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด "-cl-std=CL3.0" ๋ฐ "-cl-std=CL1.0" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง„๋‹จ ๋„๊ตฌ๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ x86 ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์„œ์— ๊ตฌํ˜„๋œ HRESET, UINTR ๋ฐ AVXVNNI ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ์‹œ์Šคํ…œ์—์„œ๋Š” "-mtune=" ์˜ต์…˜ ์ง€์›์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. " -march= ๊ฐ’์— ๊ด€๊ณ„์—†์ด ์„ ํƒํ•œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์ตœ์ ํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. "
  • ์ •์  ๋ถ„์„๊ธฐ๋Š” ์ผ๋ถ€ POSIX ํ•จ์ˆ˜์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ์„ ํ–ˆ์œผ๋ฉฐ ๋น„๊ต์— ์—ฌ๋Ÿฌ ๊ธฐํ˜ธ ๊ฐ’์ด ์žˆ์„ ๋•Œ ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ๊ฒฐ์ •์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒ€์‚ฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค: fuchia.HandleChecker(๊ตฌ์กฐ์˜ ํ•ธ๋“ค ์ •์˜), webkit.UncountedLambdaCapturesChecker webkit ๋ฐ alpha.webkit.UncountedLocalVarsChecker(WebKit ์—”์ง„ ์ฝ”๋“œ์—์„œ ํฌ์ธํ„ฐ ์ž‘์—…์˜ ํŠน์„ฑ์„ ๊ณ ๋ ค).
  • ์ƒ์ˆ˜์˜ ๋งฅ๋ฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œํ˜„์‹์—์„œ๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit_scan_reverse, __bsrd, __bsrq, __bswap, __bswapd, __bswap64 ๋“ฑ์˜ ์‚ฌ์šฉ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. .__bswapq , _castf*, __rol* ๋ฐ __ror*.
  • ์‹๋ณ„์ž, ์—ด ๋ฐ ํ•„๋“œ ์ •์˜ ์ฃผ์œ„์˜ ๊ฐ„๊ฒฉ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด clang-format ์œ ํ‹ธ๋ฆฌํ‹ฐ์— BitFieldColonSpacing ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Linux ํ”Œ๋žซํผ์˜ clangd ์บ์‹ฑ ์„œ๋ฒ„(Clang Server)๋Š” ์žฅ๊ธฐ๊ฐ„ ์ž‘์—… ์ค‘์— ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ํฌ๊ฒŒ ์ค„์˜€์Šต๋‹ˆ๋‹ค(์šด์˜ ์ฒด์ œ์— ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด malloc_trim์— ๋Œ€ํ•œ ์ฃผ๊ธฐ์ ์ธ ํ˜ธ์ถœ์ด ์ œ๊ณต๋จ).

LLVM 12.0์˜ ์ฃผ์š” ํ˜์‹  ์‚ฌํ•ญ:

  • Python์œผ๋กœ ์ž‘์„ฑ๋œ llvm-build ๋นŒ๋“œ ๋„๊ตฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ, ๋Œ€์‹  ํ”„๋กœ์ ํŠธ๊ฐ€ CMake ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์™„์ „ํžˆ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AArch64 ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐฑ์—”๋“œ์—์„œ Windows ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ Windows ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์–ด์…ˆ๋ธ”๋Ÿฌ ์ถœ๋ ฅ์˜ ์˜ฌ๋ฐ”๋ฅธ ์ƒ์„ฑ์ด ๋ณด์žฅ๋˜๊ณ  ํ•ด์ œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” 60์œผ๋กœ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค). %), ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด .seh_* ์ง€์‹œ๋ฌธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • PowerPC ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐฑ์—”๋“œ๋Š” ๋ฃจํ”„ ๋ฐ ์ธ๋ผ์ธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ตœ์ ํ™”, Power10 ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ํ™•์žฅ๋œ ์ง€์›, ๋งคํŠธ๋ฆญ์Šค ์กฐ์ž‘์„ ์œ„ํ•œ MMA ๋ช…๋ น์— ๋Œ€ํ•œ ์ง€์› ์ถ”๊ฐ€, AIX ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ํ–ฅ์ƒ๋œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • x86 ๋ฐฑ์—”๋“œ๋Š” AMD Zen 3, Intel Alder Lake ๋ฐ Intel Sapphire Rapids ํ”„๋กœ์„ธ์„œ๋Š” ๋ฌผ๋ก  HRESET, UINTR ๋ฐ AVXVNNI ํ”„๋กœ์„ธ์„œ ์ง€์นจ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ„๊ฐ€ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” MPX(Memory Protection Extensions) ์ง€์›(์ด ๊ธฐ์ˆ ์€ ๋„๋ฆฌ ๋ณด๊ธ‰๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฏธ GCC ๋ฐ clang์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ํ”ผ์—ฐ์‚ฐ์ž ์˜คํ”„์…‹ ๋ฐ ์ ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด {disp32} ๋ฐ {disp8} ์ ‘๋‘์‚ฌ ๋ฐ .d32 ๋ฐ .d8 ์ ‘๋ฏธ์‚ฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์–ด์…ˆ๋ธ”๋Ÿฌ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์ตœ์ ํ™” ํฌํ•จ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์†์„ฑ "tune-cpu"๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ชจ๋“œ "-fsanitize=unsigned-shift-base"๊ฐ€ ์ •์ˆ˜ ๋ฌธ์ œ ๊ฐ์ง€๊ธฐ(integer sanitizer, "-fsanitize=integer")์— ์ถ”๊ฐ€๋˜์–ด ์™ผ์ชฝ์œผ๋กœ ๋น„ํŠธ ์ด๋™ ํ›„ ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜์˜ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ๊ฐ์ง€๊ธฐ(asan, cfi, lsan, msan, tsan, ubsan sanitizer)์— ํ‘œ์ค€ Musl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ Linux ๋ฐฐํฌํŒ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • LLD ๋ง์ปค์˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ์˜ต์…˜ "--dependent-file", "-error-handling-script", "-lto-pseudo-probe-for-profiling", "-no-lto-whole-program"์„ ํฌํ•จํ•˜์—ฌ ELF ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. -๊ฐ€์‹œ์„ฑโ€ " MinGW ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mach-O ํ˜•์‹(macOS)์˜ ๊ฒฝ์šฐ arm64, arm ๋ฐ i386 ์•„ํ‚คํ…์ฒ˜, LTO(๋งํฌ ์‹œ๊ฐ„ ์ตœ์ ํ™”) ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์Šคํƒ ํ•ด์ œ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Libc++๋Š” C++20 ํ‘œ์ค€์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  C++2b ์‚ฌ์–‘์˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์ง€ํ™” ์ง€์› ๋น„ํ™œ์„ฑํ™”(โ€œ-DLIBCXX_ENABLE_LOCALIZATION=OFFโ€) ๋ฐ ์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ ์žฅ์น˜(โ€œ-DLIBCXX_ENABLE_RANDOM_DEVICE=OFFโ€)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€