ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° компилаторния ΠΏΠ°ΠΊΠ΅Ρ‚ GCC 9

Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ GCC 9.1, ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ голямо ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π² новия ΠΊΠ»ΠΎΠ½ Π½Π° GCC 9.x. Π’ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ със Π½ΠΎΠ²Π° схСма Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° издания, вСрсия 9.0 Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π½Π° GCC 9.1, ΠΊΠ»ΠΎΠ½ΡŠΡ‚ Π½Π° GCC 10.0 Π²Π΅Ρ‡Π΅ сС Π΅ Ρ€Π°Π·ΠΊΠ»ΠΎΠ½ΠΈΠ», Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π° слСдващата Π·Π½Π°Ρ‡ΠΈΠΌΠ° вСрсия, GCC 10.1.

GCC 9.1 сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° със стабилизиранС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° стандарта C++17, ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ стандарт C++20 (с ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ C++2a), Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π² интСрфСйса Π·Π° Π΅Π·ΠΈΠΊΠ° D, частична ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° OpenMP 5.0 , ΠΏΠΎΡ‡Ρ‚ΠΈ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° OpenACC 2.5, ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° скалируСмостта Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅, Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° диагностичнитС инструмСнти ΠΈ добавянС Π½Π° Π½ΠΎΠ²ΠΈ прСдупрСТдСния, Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° OpenRISC, C-SKY V2 ΠΈ AMD GCN GPU.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ D. GCC Π²ΠΊΠ»ΡŽΡ‡Π²Π° интСрфСйс с ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ GDC (Gnu D Compiler) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° изпълнСниС (libphobos), ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ стандартСн GCC Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ D. ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊ D Π² GCC Π·Π°ΠΏΠΎΡ‡Π½Π° ΠΎΡ‰Π΅ ΠΏΡ€Π΅Π· 2011 Π³., Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‡ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ нСобходимостта ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с изискванията Π½Π° GCC ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°Π²Π° Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠ½Ρ‚Π΅Π»Π΅ΠΊΡ‚ΡƒΠ°Π»Π½Π° собствСност Π½Π° Digital Mars, която Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ D;
  • НаправСни са подобрСния Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅. НапримСр, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ стратСгии Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ Π½Π° Switch (Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π° прСскачанС, Π±ΠΈΡ‚ΠΎΠ² тСст, Π΄ΡŠΡ€Π²ΠΎ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π°) Π² зависимост ΠΎΡ‚ ситуациитС. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° трансформиранС Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΈΠ·Ρ€Π°Π· Switch, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ оптимизацията β€ž-ftree-switch-conversionβ€œ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ условия ΠΊΠ°Ρ‚ΠΎ β€žΡΠ»ΡƒΡ‡Π°ΠΉ 2: ΠΊΠ°ΠΊ = 205; ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅; случай 3: ΠΊΠ°ΠΊ = 305; ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ ;” Ρ‰Π΅ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² β€ž100 * ΠΊΠ°ΠΊ + 5”;
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. НастройкитС Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ внСдряванС са Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ C++ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π±Π°Π·ΠΈ ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ с Π½ΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ max-inline-insns-small, max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-insns ΠΈ uninlined -Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ». ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° точност ΠΈ агрСсивност Π½Π° раздСлянСто Π½Π° студСн/Π³ΠΎΡ€Π΅Ρ‰ ΠΊΠΎΠ΄. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° мащабируСмост Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° оптимизация Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ);
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° оптимизация, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° (PGO - Profile-guided optimization), ΠΊΠΎΠΉΡ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ въз основа Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° характСристикитС Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π°. ΠžΠΏΡ†ΠΈΡ Π·Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ "-fprofile-ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅" сСга Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ Π·Π° оптимизация "-fversion-loops-for-strides", "-floop-interchange", "-floop-unroll-and-jam" ΠΈ "-ftree-loop-distribution". ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° хистограми с броячи във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ с ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ (хистограмитС Π²Π΅Ρ‡Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅);
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (LTO). Π‘Π΅ΡˆΠ΅ осигурСно опростяванС Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ възмоТно Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° LTO ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, намаляванС Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΈ подобряванС Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅. Броят Π½Π° дяловСтС (-param lto-partitions) Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ 32 Π½Π° 128, ΠΊΠΎΠ΅Ρ‚ΠΎ подобрява производитСлността Π½Π° систСми с голям Π±Ρ€ΠΎΠΉ нишки Π½Π° процСсора. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° броя процСси Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°
    "-param lto-max-streaming-parallelism";

    Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π°, Π² сравнСниС с GCC 8.3, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅, въвСдСни Π² GCC 9 ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ Π½Π°ΠΌΠ°Π»Π΅Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Firefox 5 ΠΈ LibreOffice 66 с ΠΎΠΊΠΎΠ»ΠΎ 6.2.3%. Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ намалял със 7%. Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° 8-ядрСн процСсор намалява с 11%. Π•Ρ‚Π°ΠΏΡŠΡ‚ Π½Π° послСдоватСлна оптимизация Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π²Π΅Ρ‡Π΅ Π΅ 28% ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΈ консумира 20% ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚. ΠšΠΎΠ½ΡΡƒΠΌΠ°Ρ†ΠΈΡΡ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° всСки процСсор ΠΎΡ‚ паралСлния Π΅Ρ‚Π°ΠΏ Π½Π° LTO намалява с 30%;

  • По-голямата част ΠΎΡ‚ спСцификацията Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ C, C++ ΠΈ Fortran OpenACC 2.5, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° инструмСнти Π·Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° GPU ΠΈ спСциализирани процСсори ΠΊΠ°Ρ‚ΠΎ NVIDIA PTX;
  • Частична ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° стандарта Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° C ΠΈ C++ ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ MP 5.0 (Open Multi-Processing), ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° API ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π·Π° C, C++ ΠΈ Fortran Π΅Π·ΠΈΡ†ΠΈ Π½Π° многоядрСни ΠΈ Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ (CPU+GPU/DSP) систСми със сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ Π·Π° вСкторизация (SIMD) ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ прСдупрСТдСния Π·Π° Π΅Π·ΠΈΠΊΠ° C: "-Waddress-of-packed-member" (стойност Π½Π° Π½Π΅ΠΏΠΎΠ΄Ρ€Π°Π²Π½Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» към ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ Ρ‡Π»Π΅Π½ Π½Π° структура ΠΈΠ»ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅) ΠΈ
    Β«-WΠ°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π° стойност" (ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° изчисляванС Π½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π° стойност, Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΏΠΎ-подходяща функция Π·Π° посочСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° fabs(3.14) вмСсто abs(3.14). Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ прСдупрСТдСния Π·Π° C++: β€ž-Wdeprecated-copyβ€œ,
    β€ž-Winit-list-lifetimeβ€œ, β€ž-Wredundant-moveβ€œ, β€ž-Wpessimizing-moveβ€œ ΠΈ β€ž-Wclass-conversionβ€œ. Много Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° прСдупрСТдСния са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ;

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° част ΠΎΡ‚ Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ Π΅Π·ΠΈΠΊΠΎΠ² стандарт C, с ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ C2x. Π—Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° C2x, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ "-std=c2x" ΠΈ "-std=gnu2x" (Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π½Π° GNU). Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΡŠΡ‚ всС ΠΎΡ‰Π΅ Π΅ Π² Ρ€Π°Π½Π΅Π½ Π΅Ρ‚Π°ΠΏ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅, слСдоватСлно ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° само ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ _Static_assert с Π΅Π΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ (_Static_assert с Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΅ стандартизиран Π² C11);
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° стандарта C++17 Π΅ обявСна Π·Π° стабилна. Π’ΡŠΠ² Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° C++17 са напълно Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ, Π° Π² libstdc++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π² стандарта, са Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΏΡŠΠ»Π½Π°Ρ‚Π° имплСмСнтация;
  • ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° изпълнСниС Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ стандарт C++2a. НапримСр, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инициализация, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° Π»Π°ΠΌΠ±Π΄Π° ΠΈΠ·Ρ€Π°Π·ΠΈ, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€Π°Π·Π½ΠΈ Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ ΠΈ вСроятни/нСвСроятни Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, прСдоставСна Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² условни ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈ Ρ‚.Π½.
    Π—Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° C++2a, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ "-std=c++2a" ΠΈ "-std=gnu++2a". Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΈ вСрсиини Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към libstdc++ Π·Π° C++2a, 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 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° прСсСчни Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° стСка ΠΈ ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π° (β€ž-fstack-clash-protectionβ€œ). Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Armv8.5-A, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° опцията β€ž-march=armv8.5-aβ€œ

  • Π’ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° AMD Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ процСсори, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° GCN. ΠŸΠΎΠ½Π°ΡΡ‚ΠΎΡΡ‰Π΅ΠΌ внСдряванСто Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Сднонишкови прилоТСния (ΠΏΠΎ-късно Ρ‰Π΅ бъдС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° многонишкови изчислСния Ρ‡Ρ€Π΅Π· OpenMP ΠΈ OpenACC) ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° GPU Fiji ΠΈ Vega 10;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° процСсори OpenRISC;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° процСсори C-SKY V2, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ ΠΎΡ‚ Π΅Π΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Π°Ρ‚Π° китайска компания Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ потрСбитСлски устройства;
  • Всички ΠΎΠΏΡ†ΠΈΠΈ Π½Π° командния Ρ€Π΅Π΄, ΠΊΠΎΠΈΡ‚ΠΎ работят със стойности Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ суфикситС kb, KiB, MB, MiB, GB ΠΈ GiB;
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΎ опцията β€ž-flive-patching=[inline-only-static|inline-clone]” Π²ΠΈ позволява Π΄Π° постигнСтС бСзопасно ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π·Π° систСми Π·Π° ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π½Π° ΠΆΠΈΠ²ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ многостСпСнСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ (ИПП) ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опция β€ž--completionβ€œ Π·Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° опцията ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° bash;
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° диагностика прСдоставят дисплСи Π½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠΈ ΠΎΡ‚ изходния тСкст, ΡƒΠΊΠ°Π·Π²Π°Ρ‰ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Ρ€Π΅Π΄Π° ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‰ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½Π° информация, ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΈ. Π—Π° Π΄Π° Π·Π°Π±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, са прСдоставСни ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ β€ž-fno-diagnostics-show-line-numbersβ€œ ΠΈ β€ž-fno-diagnostics-show-labelsβ€œ;

    ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° компилаторния ΠΏΠ°ΠΊΠ΅Ρ‚ GCC 9

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ инструмСнти Π·Π° диагностициранС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² C++ ΠΊΠΎΠ΄, ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° чСтимост Π½Π° информацията Π·Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΈ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ;

    ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° компилаторния ΠΏΠ°ΠΊΠ΅Ρ‚ GCC 9

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° опция β€œ-fdiagnostics-format=json”, която позволява Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° диагностичСн ΠΈΠ·Ρ…ΠΎΠ΄ Π² машинно Ρ‡Π΅Ρ‚ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (JSON);
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ β€ž-fprofile-filter-filesβ€œ ΠΈ β€ž-fprofile-exclude-filesβ€œ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°;
  • AddressSanitizer осигурява Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ намалява ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ провСрявания изпълним Ρ„Π°ΠΉΠ»;
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄ Π² "-fopt-информация» (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация Π·Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ). Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ прСфикси β€žΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½β€œ ΠΈ β€žΠΏΡ€ΠΎΠΏΡƒΡΠ½Π°Ρ‚β€œ, Π² допълнСниС към ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Π½Π°Π»ΠΈΡ‡Π΅Π½ прСфикс β€žΠ·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°β€œ. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° информация Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΈΠ½Π»Π°ΠΉΠ½ Ρ€Π°Π·Π³ΡŠΠ²Π°Π½Π΅ ΠΈ вСкторизация Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опцията β€ž-fsave-optimization-recordβ€œ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ посочСна, GCC записва Ρ„Π°ΠΉΠ»Π° SRCFILE.opt-record.json.gz с описаниС Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Новата опция сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° β€ž-fopt-infoβ€œ, ΠΊΠ°Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ информация Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Π²Π΅Ρ€ΠΈΠ³ΠΈ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ β€ž-fipa-stack-alignmentβ€œ ΠΈ β€ž-fipa-reference-addressableβ€œ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° подравняванСто Π½Π° стСка ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠΈ Π½Π° адрСсиранС (само Π·Π° запис ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅) Π·Π° статични ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ;
  • Π’ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚ сС Π½ΠΎΠ²ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с ΠΏΡ€Π΅Π΄Π²ΠΈΠΆΠ΄Π°Π½Π΅ Π½Π° разклонСния ΠΈ спСкулативно изпълнСниС Π½Π° инструкции: "__builtin_has_attribute","__Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ_ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π΅_с_вСроятност" И "__builtin_speculation_safe_value". Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅;
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° асинхронСн Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄ Π·Π° Π΅Π·ΠΈΠΊΠ° Fortran;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Solaris 10 (*-*-solaris2.10) ΠΈ Cell/BE (Cell Broadband Engine SPU) Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° ΠΈ Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚Π° Π² слСдващото основно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Armv2, Armv3, Armv5 ΠΈ Armv5E Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Intel MPX (Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°) Π΅ прСустановСна.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€