เมื่อวันที่ 3 พฤษภาคม GCC เวอร์ชันที่เก้าเปิดตัวต่อสาธารณะครั้งแรกเกิดขึ้น: GCC 9.1
มันมีการปรับปรุงและเพิ่มเติมที่สำคัญมากมายเมื่อเทียบกับที่แปด
รุ่น
การเปลี่ยนแปลงทั่วไป
ตัวเลือก
- คำสั่งที่ยอมรับขนาดตอนนี้รองรับค่า 64 บิตและส่วนต่อท้ายเพื่อระบุขนาด
- เพิ่มตัวเลือก -flive-แพทช์เพื่อควบคุมการปรับให้เหมาะสมที่อาจเป็นอันตรายต่อไดนามิก การแทนที่โค้ด
- เพิ่มตัวเลือก --completion เพื่อรองรับการเติมข้อความอัตโนมัติในเชลล์คำสั่ง
- ขณะนี้การวินิจฉัยคอมไพเลอร์รวมหมายเลขบรรทัด (-fno-diagnostics-show-line-number) และ
ข้อมูลประเภท (fno-diagnostics-show-labels); - เพิ่มตัวเลือก -fdiagnostics-format=json เพื่อส่งออกการวินิจฉัยในรูปแบบ JSON
- ตัวเลือกสำหรับการระบุการจัดตำแหน่ง (-falign-ฟังก์ชั่นเช่น) ขณะนี้สามารถยอมรับตัวเลือกการจัดตำแหน่งสองสามตัวเลือกได้แล้ว
- เพิ่มตัวเลือกสำหรับการกรองรายการไฟล์ (-fprofile-กรองไฟล์, -fprofile-ไม่รวมไฟล์) ซึ่งควบคุมโดยผู้สร้างโปรไฟล์
- ตอนนี้ AddressSanitizer ใช้การจัดตำแหน่งที่กะทัดรัดมากขึ้นเพื่อตรวจจับการเข้าถึงตัวแปรบนสแต็กที่ไม่ถูกต้อง
- การปรับปรุงผลผลิตมากมาย -fopt-ข้อมูล;
- เพิ่มตัวเลือก -fsave-optimization-record เพื่อบันทึกรายงานการเพิ่มประสิทธิภาพลงในไฟล์
- เพิ่มตัวเลือก -fipa-stack-การจัดตำแหน่ง и -fipa-อ้างอิงที่อยู่ได้.
คุณสมบัติในตัวใหม่
คุณลักษณะใหม่
อื่น ๆ
การปรับปรุงการสร้างโค้ดจำนวนมากที่เกี่ยวข้องกับ:
- การสร้างโครงสร้างสวิตช์
- การเพิ่มประสิทธิภาพระหว่างขั้นตอน
- การเพิ่มประสิทธิภาพตามข้อมูลโปรไฟล์
- การเพิ่มประสิทธิภาพในขั้นตอนการประกอบ (LTO)
ขณะนี้รูปแบบภายในของ gcov คือ JSON และตัวเลือกใหม่ --ใช้ความร้อนสี เกี่ยวข้องกับการระบายสีบรรทัดของโค้ดตามความถี่ในการใช้งาน
ภาษา
คุณภาพและความสมบูรณ์ของการนำไปปฏิบัติ OpenACC ภาษา C, C++ และ Fortran ได้รับการปรับปรุงอย่างต่อเนื่อง
ภาษาที่เหมือนซี
- มีการรองรับ OpenMP 5.0 บางส่วนแล้ว
- เพิ่มคุณสมบัติแล้ว __builtin_convertvector;
- เพิ่มคำเตือน -Waddress ของสมาชิกที่อัดแน่น;
- การปรับปรุงคำเตือนที่มีอยู่จำนวนหนึ่ง
- ข้อความแสดงข้อผิดพลาดเมื่อส่งผ่านจำนวนอาร์กิวเมนต์ที่ไม่ถูกต้องไปยังแมโครตอนนี้มีการประกาศของแมโครด้วย
- การปรับปรุงข้อเสนอแนะการแก้ไขการพิมพ์ผิด
C
- สนับสนุน _Static_assert ด้วยหนึ่งอาร์กิวเมนต์สำหรับ -std=c2x (มาตรฐาน C ในอนาคต)
- คำเตือนใหม่ -Wabsolute ค่าซึ่งจับประเภทอาร์กิวเมนต์ที่ไม่ถูกต้องสำหรับฟังก์ชันเช่น abs()
C + +
- คำเตือนใหม่: -Wdeprecated-คัดลอก,
-Winit-รายการ-อายุการใช้งาน,
- การย้ายที่ไม่จำเป็น,
-Wpessimizing-ย้าย,
-Wclass-การแปลง; - งานกำลังดำเนินการเพื่อใช้คุณสมบัติใหม่จากมาตรฐานในอนาคต ค++2เอ;
- ขณะนี้ส่วนหน้าจัดเก็บข้อมูลที่แม่นยำมากขึ้นเกี่ยวกับองค์ประกอบซอร์สโค้ดจำนวนหนึ่ง ซึ่งช่วยให้คุณสามารถแสดงข้อมูลโดยละเอียดมากขึ้นในการวินิจฉัย
- ปรับปรุงการวินิจฉัยสำหรับฟังก์ชันโอเวอร์โหลด ตัวดำเนินการไบนารี การเรียกใช้ฟังก์ชัน และสตริงรูปแบบ
- เพิ่มการแก้ไขอัตโนมัติที่รองรับโดยสภาพแวดล้อมการพัฒนาบางอย่างสำหรับข้อผิดพลาดยอดนิยมจำนวนหนึ่ง (วงเล็บหายไป เนมสเปซ พิมพ์ผิด ฯลฯ)
libstdc ++
- การใช้งาน C++17 ไม่ใช่การทดลองอีกต่อไป
- เพิ่มอัลกอริธึมแบบขนาน , , ก ไม่ต้องการ -lstdc++fs อีกต่อไป
- ปรับปรุงการรองรับการทดลองสำหรับ C++2a ( , , std::bind_front ฯลฯ );
- รองรับการเปิดสตรีมไฟล์บน Windows ที่มีเส้นทางที่มีอักขระที่ไม่ใช่อักขระ
- การสนับสนุนเบื้องต้น บนวินโดวส์;
- การสนับสนุนเบื้องต้นสำหรับ Networking TS
D
ภาษา D เวอร์ชัน 2.076 รวมอยู่ใน GCC
ฟอร์แทรน
- รองรับ I/O แบบอะซิงโครนัสอย่างสมบูรณ์
- ใช้อาร์กิวเมนต์ BACK สำหรับ MINLOC และ MAXLOC;
- ใช้ฟังก์ชัน FINDLOC และ IS_CONTIGOUS
- มีการใช้ไวยากรณ์สำหรับการเข้าถึงส่วนประกอบของจำนวนเชิงซ้อน: c%re และ c%im;
- ใช้ไวยากรณ์ str%len และ a%kind;
- ใช้ C descriptor และส่วนหัว ISO_Fortran_binding.h
- ข้อกำหนดที่ผ่อนคลายสำหรับผลลัพธ์ของฟังก์ชัน MAX และ MIN เมื่อหนึ่งในอาร์กิวเมนต์คือ NaN
- เพิ่มตัวเลือก -fdec-รวม;
- เพิ่มคำสั่งแล้ว สร้างขึ้น.
libgccjit
- เพิ่มคุณสมบัติแล้ว gcc_jit_context_add_driver_option.
อื่น ๆ
การเปลี่ยนแปลงเฉพาะสถาปัตยกรรมและระบบปฏิบัติการหลายอย่าง
ที่มา: linux.org.ru