Compiler seri GCC 10 tiba dalam peningkatan besar

GCC (GNU Compiler Collection) 10.1, rilis utama platform, diterbitkan pada 7 Mei 2020, dengan sorotan termasuk kemampuan C ++ 20 dan dukungan bahasa C2X. C2X adalah revisi besar berikutnya dari bahasa C, yang akan dirilis pada tahun 2022. 

Catatan rilis untuk GCC 10 menunjukkan bahwa banyak fitur C ++ 20 telah diimplementasikan termasuk mengizinkan perakitan inline di Fungsi constexpr dan memperluas binding terstruktur. Juga untuk C ++ 20, GCC 10 mengizinkan konversi ke array dengan batas yang tidak diketahui, memungkinkan inisialisasi default yang sepele dalam konteks constexpr, menambahkan constinitkata kunci, dan menghentikan  volatile kata kunci.

Untuk C2X, revisi standar ISO C yang akan datang, beberapa fitur didukung dengan sintaks  -std=c2xdan -std+gnu2x. Di antaranya adalah strftimeformat yang memeriksa mendukung %OBdan %Obformat dan UTF-8 konstanta karakter menggunakan u8' 'sintaks.

GCC, yang telah ada selama lebih dari 33 tahun, mencakup ujung depan dan pustaka untuk C, C ++, Fortran, Ada, Go, dan D. Buletin telah diposting tentang porting ke GCC 10. Kemampuan baru lainnya di GCC 10.1 termasuk

  • Fungsi built-in telah ditambahkan, termasuk has_builtinoperator preprocessor yang dapat digunakan untuk meminta dukungan untuk fungsi built-in yang disediakan oleh GCC dan compiler lain yang mendukungnya. 
  • Opsi perintah telah ditambahkan. Ini termasuk  -fallocation-dce, untuk menghapus pasangan newdan deleteoperator yang tidak dibutuhkan , dan -fanalyzer, untuk mengaktifkan analisis statis baru dan peringatan terkait. Pilihan terakhir harus dianggap sebagai tahap percobaan.
  • Perbaikan pengoptimalan antarprocedural telah dilakukan. Ini termasuk penerapan ulang izin antar-prosedural skalar penggantian agregat (IPA-SRA) yang diimplementasikan kembali untuk bekerja pada waktu-tautan. IPA-SRA sekarang juga dapat menghapus komputasi dan mengembalikan nilai kembali yang tidak digunakan.
  • Peningkatan pengoptimalan waktu tautan menyertakan biner baru ito-dump. Program ini dapat membuang berbagai informasi tentang bytefile objek LTO .
  • Peningkatan pengoptimalan berdasarkan profil telah dilakukan, termasuk meningkatkan pemeliharaan profil selama kompilasi dan partisi panas / dingin.
  • Untuk keluarga C, accessfungsi dan typeatribut telah ditambahkan untuk menjelaskan bagaimana suatu fungsi mengakses objek yang diteruskan kepadanya dengan pointer atau referensi, dan untuk mengaitkan argumen tersebut dengan argumen integer yang menunjukkan ukuran objek. Atribut digunakan untuk mengaktifkan deteksi akses tidak valid oleh fungsi yang ditentukan pengguna. Ada juga peringatan baru dan peningkatan pada peringatan yang ada. Satu peringatan,, -Wzero-length-boundsmemperingatkan tentang akses ke elemen array panjang-nol yang mungkin tumpang tindih dengan anggota lain dari objek yang sama.
  • Ketidakcocokan ABI antara C ++ 14 dan C ++ 17 telah diperbaiki. Pada beberapa target, kelas dengan subobjek berukuran nol akan diteruskan dengan tidak benar saat dikompilasi sebagai C ++ 17 atau C ++ 20.