Taorian'ny taona fampandrosoana
GCC 9.1 ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»Π΅Π½ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++17, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++20 (ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ C++2a), Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΎΡΡΠ°Π² ΡΡΠΎΠ½ΡΡΠ½Π΄Π° Π΄Π»Ρ ΡΠ·ΡΠΊΠ° D, ΡΠ°ΡΡΠΈΡΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ OpenMP 5.0, ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ OpenACC 2.5, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π΄ΡΡΠ² Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π±ΡΠΊΠ΅Π½Π΄Π°ΠΌΠΈ Π΄Π»Ρ OpenRISC, C-SKY V2 ΠΈ AMD GCN GPU .
tena
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ D. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π² GCC Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΠΎΠ½ΡΡΠ½Π΄ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ
GDC (Gnu D Compiler) ΠΈ runtime-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (libphobos), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠ½ΡΠΉ GCC Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ D. ΠΡΠΎΡΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ·ΡΠΊΠ° D Π² GCCefa nanomboka Π΅ΡΡ Π² 2011 Π³ΠΎΠ΄Ρ, Π½ΠΎΠ·Π°ΡΡΠ½ΡΠ»ΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ GCC ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΏΡΠ°Π² Π½Π° ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Digital Mars, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ΅ΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ D; - ΠΠ½Π΅ΡΠ΅Π½Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ ΡΠ°ΡΠΊΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Switch (jump table, bit test, decision tree) Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Switch, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Β«-ftree-switch-conversionΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°Π±ΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π²ΠΈΠ΄Π° Β«case 2: how = 205; break; case 3: how = 305; break;Β» Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² Β«100 * how + 5Β»;
- Π£Π»ΡΡΡΠ΅Π½Ρ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΊΠΎΠ΄ΠΎΠ²ΡΡ
Π±Π°Π· Π½Π° C++ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ max-inline-insns-small, max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-insns ΠΈ uninlined-thunk-time. ΠΠΎΠ²ΡΡΠ΅Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Β«Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎΒ» ΠΈ Β«Π³ΠΎΡΡΡΠ΅Π³ΠΎΒ» ΠΊΠΎΠ΄Π°. Π£Π»ΡΡΡΠ΅Π½Π° ΠΌΠ°ΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ
Π΅Π΄ΠΈΠ½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΊ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ); - Π£Π»ΡΡΡΠ΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° (PGO β Profile-guided optimization), ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π‘Π²ΠΎΠ΄Π½Π°Ρ ΠΎΠΏΡΠΈΡ Β«
-fprofile-use Β» ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Β«-fversion-loops-for-stridesΒ», Β«-floop-interchangeΒ», Β«-floop-unroll-and-jamΒ» ΠΈ Β«-ftree-loop-distributionΒ». Π£Π΄Π°Π»Π΅Π½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΎ ΡΡΡΡΡΠΈΠΊΠ°ΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΡΠΎΡΠΈΠ»ΡΠΌΠΈ (Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π½Π° Π»Π΅ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ); - Π Π°ΡΡΠΈΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (LTO). ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² LTO, ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π§ΠΈΡΠ»ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² (βparam lto-partitions) ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Ρ 32 Π΄ΠΎ 128, ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠΈΠ»ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² CPU. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
Β«βparam lto-max-streaming-parallelismΒ»;Π ΠΈΡΠΎΠ³Π΅, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ GCC 8.3 Π²Π½Π΅ΡΡΠ½Π½ΡΠ΅ Π² GCC 9 ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
navela ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 5% ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Firefox 66 ΠΈ LibreOffice 6.2.3. Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ½ΠΈΠ·ΠΈΠ»ΡΡ Π½Π° 7%. ΠΡΠ΅ΠΌΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π½Π° 8-ΡΠ΄Π΅ΡΠ½ΠΎΠΌ CPU ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Π½Π° 11%. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ°Π΄ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° 28% Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ Π½Π° 20% ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ LTO ΡΠ½ΠΈΠ·ΠΈΠ»ΠΎΡΡ Π½Π° 30%; - ΠΠ»Ρ ΡΠ·ΡΠΊΠΎΠ² C, C++ ΠΈ Fortran ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π±ΠΎΜΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
OpenACC 2.5 , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π²ΡΠ½ΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (offloading) Π½Π° GPU ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NVIDIA PTX; - ΠΠ»Ρ Π‘ ΠΈ Π‘++ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°ΡΡΠΈΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ°
Sokafy ny MP 5.0 (Open Multi-Processing), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ API ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Π‘ΠΈ, Π‘ΠΈ++ ΠΈ Π€ΠΎΡΡΡΠ°Π½ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΠΈ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ (CPU+GPU/DSP) ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (SIMD); - ΠΠ»Ρ ΡΠ·ΡΠΊΠ° Π‘ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ: Β«
-Waddress-n'ny-mpikarama Β» (Π½Π΅Π²ΡΡΠ°Π²Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΈ
Β«-Sanda-wabsolute Β» (ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ abs(3.14) ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ fabs(3.14)). ΠΠ»Ρ C++ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ: Β«-Wdeprecated-copyΒ»,
Β«-Winit-list-lifetimeΒ», Β«-Wredundant-moveΒ», Β«-Wpessimizing-moveΒ» ΠΈ Β«-Wclass-conversionΒ». Π Π°ΡΡΠΈΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠ·ΡΠΊΠ° Π‘ΠΈ, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ C2x. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ C2x ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ Β«-std=c2xΒ» ΠΈ Β«-std=gnu2xΒ» (Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ GNU). Π‘ΡΠ°Π½Π΄Π°ΡΡ ΠΏΠΎΠΊΠ° Π½Π° ΡΠ°Π½Π½Π΅ΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ· Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ _Static_assert Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ (_Static_assert c Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π² C11);
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++17. ΠΠΎ ΡΡΠΎΠ½ΡΡΠ½Π΄Π΅ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ C++17 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π° Π² libstdc++ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ;
- foana
fampiharana ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++2a. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΡΡΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² likely/unlikely, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΈ Ρ.ΠΏ.
ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ C++2a ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ Β«-std=c++2aΒ» ΠΈ Β«-std=gnu++2aΒ». Π libstdc++ Π΄Π»Ρ C++2a Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ bit ΠΈ version, ΡΠΈΠΏΠ°ΠΆΠΈ std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible ΠΈ std::type_identity, ΡΡΠ½ΠΊΡΠΈΠΈ std::midpoint, std::lerp, std::bind_front,
std::visit, std::is_constant_evaluated ΠΈ std::assume_aligned, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠΏΠ° char8_t, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΠΈ ΡΡΡΡΠΈΠΊΡΠ° ΡΡΡΠΎΠΊ (starts_with, ends_with); - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½ΠΎΠ²ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ARM
Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ big.LITTLE ΠΈ Neoverse N1. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΡ ΡΡ Π² Armv8.3-A ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» (rng) ΠΈ ΡΠ΅Π³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ (memtag), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠΎ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊΠ° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ². ΠΠ»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ AArch64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π°ΡΠΈΡΡ ΠΎΡfihaonan'ny stack sy heap (Β«-fstack-clash-protectionΒ»). ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Armv8.5-A Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«-march=armv8.5-aΒ» - Π ΡΠΎΡΡΠ°Π² Π²ΠΊΠ»ΡΡΡΠ½ Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ GPU AMD Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ GCN. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ½ΠΎcΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· OpenMP ΠΈ OpenACC Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ·Π΄Π½Π΅Π΅) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ GPU Fiji ΠΈ Vega 10;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²
OpenRISC ; - ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²
C-SKY V2 , Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΎΠ΄Π½ΠΎΠΈΠΌΡΠ½Π½ΠΎΠΉ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²; - ΠΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠΈΡ Π±Π°ΠΉΡΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΡΠΈΠΊΡΠΎΠ² kb, KiB, MB, MiB, GB ΠΈ GiB;
-
ampiharina ΠΎΠΏΡΠΈΡ Β«-flive-patching=[inline-only-static|inline-clone]Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ Π³ΠΎΡΡΡΠ΅Π³ΠΎ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΠΉ (live-patching) Π·Π° ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ (Endrik'anarana amin'ny ) ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βcompletionΒ» Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ bash;
- Π ΡΡΠ΅Π΄ΡΡΠ²Π°Ρ
Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΡΠ²ΠΊΠΎΠ² ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ΅ΠΊΡΡΠΎΠ² Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΈ Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠΉ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡΠΈΠΏΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ ΠΌΠ΅ΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΈ Β«-fno-diagnostics-show-line-numbersΒ» ΠΈ Β«-fno-diagnostics-show-labelsΒ»;
-
nitarina ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅ Π½Π° C++, ΡΠ»ΡΡΡΠ΅Π½Π° ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«-fdiagnostics-format=jsonΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ (JSON);
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«-fprofile-filter-filesΒ» ΠΈ Β«-fprofile-exclude-filesΒ» Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ;
- Π AddressSanitizer ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ;
- Π£Π»ΡΡΡΠ΅Π½ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«
-fopt-info Β» (Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ ). ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ Β«optimizedΒ» ΠΈ Β«missedΒ», ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ°Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° Β«noteΒ». ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΠ²ΠΎΠ΄ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ²; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«-fsave-optimization-recordΒ», ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ GCC ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ» SRCFILE.opt-record.json.gz Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. ΠΡ ΡΠ΅ΠΆΠΈΠΌΠ° Β«-fopt-infoΒ» Π½ΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΡΠΈΠ»Π΅ ΠΈ inline-ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ ;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠΈΠΈ Β«-fipa-stack-alignmentΒ» ΠΈ Β«-fipa-reference-addressableΒ» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΊΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ (ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΎΡΠ½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅) Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ;
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΎΠΉ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ: Β«
__builtin_has_attribute " '__builtin_expect_with_probability Β» ΠΈ Β«__builtin_speculation_safe_value Β«. ΠΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡdika mitovy ; - ΠΠ»Ρ ΡΠ·ΡΠΊΠ° Fortran ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°;
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌ Solaris 10 (*-*-solaris2.10) ΠΈ Cell/B.E (Cell Broadband Engine SPU). ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Armv2, Armv3, Armv5 ΠΈ Armv5E. ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Intel MPX (Memory Protection Extensions).
Source: opennet.ru