GCC 11.1 đã được phát hành, đây là những tin tức và thay đổi quan trọng nhất của nó

Sau một năm phát triển, Bộ biên dịch GCC 11.1 phiên bản mới được phát hành, bản phát hành quan trọng đầu tiên trong nhánh GCC 11.x mới. Theo sơ đồ đánh số phiên bản mới, phiên bản 11.0 đã được sử dụng trong quá trình phát triển và ngay trước khi phát hành GCC 11.1, một nhánh của GCC 12.0 đã được chia nhỏ để tạo thành phiên bản chính tiếp theo của GCC 12.1.

GCC 11.1 nổi bật với việc chuyển đổi sang định dạng tệp gỡ lỗi mặc định DWARF 5, bao gồm mặc định của tiêu chuẩn C ++ 17 ("-std = gnu ++ 17"), cải tiến đáng kể về khả năng tương thích với tiêu chuẩn C ++ 20, hỗ trợ thử nghiệm cho C ++ 23, các cải tiến liên quan đến tiêu chuẩn tương lai của ngôn ngữ C (C2x), tối ưu hóa hiệu suất mới.

GCC 11.1 Các tính năng mới chính

Chế độ mặc định cho ngôn ngữ C ++ được thay đổi để sử dụng tiêu chuẩn C ++ 17, thay vì C ++ 14 được đề xuất trước đó. Có thể vô hiệu hóa một cách chọn lọc hành vi C ++ 17 mới khi xử lý các mẫu sử dụng các mẫu khác làm tham số (-fno-new-ttp-match).

Đã thêm hỗ trợ để tăng tốc phần cứng của công cụ AddressSanitizer, cho phép bạn xác định dữ kiện của việc truy cập các vùng bộ nhớ được giải phóng, vượt quá giới hạn của bộ đệm được cấp phát và một số loại lỗi khác khi làm việc với bộ nhớ. Hiện tại, tính năng tăng tốc phần cứng chỉ có sẵn cho kiến ​​trúc AArch64 và tập trung vào việc sử dụng nó khi biên dịch hạt nhân Linux.

Một tính năng mới khác được trình bày là tối ưu hóa và cải tiến giữa các thủ tục, như một thẻ IPA-modref mới được thêm vào (-fipa-modref) để theo dõi các tác dụng phụ trong các lệnh gọi hàm và cải thiện độ chính xác của phân tích. Bên cạnh đó cũng là một cải thiện việc triển khai thẻ IPA-ICF (-fipa-icf), làm giảm mức tiêu thụ bộ nhớ biên dịch và tăng số lượng chức năng hợp nhất mà các khối mã giống hệt nhau được hợp nhất.

El công cụ tối ưu hóa dựa trên cấu hình (PGO), chế độ "-fprofile-values" được cải thiện bằng cách theo dõi nhiều tham số hơn cho các cuộc gọi gián tiếp.

cũng Tiếp tục triển khai tiêu chuẩn OpenMP 5.0 được đánh dấu (Mở đa xử lý), trong đó thêm hỗ trợ ban đầu cho chỉ thị phân công và khả năng sử dụng các vòng lặp không thống nhất trong các bản dựng OpenMP. Biến môi trường OMP_TARGET_OFFLOAD hiện đã được hỗ trợ.

Việc triển khai đặc tả lập trình song song OpenACC 2.6 được cung cấp cho các ngôn ngữ C, C ++ và Fortran, xác định các công cụ để giảm tải hoạt động cho GPU và các bộ xử lý chuyên dụng như NVIDIA PTX, đã được cải thiện.

Đối với các ngôn ngữ thuộc họ C, một thuộc tính mới "no_stack_protector" đã được triển khai, được thiết kế để đánh dấu các chức năng không nên bật tính năng bảo vệ ngăn xếp ("-fstack-protectionor"). Thuộc tính "malloc" đã được mở rộng với hỗ trợ xác định các cặp lệnh gọi để cấp phát và giải phóng bộ nhớ, được sử dụng trong trình phân tích cú pháp tĩnh để phát hiện các lỗi bộ nhớ điển hình (rò rỉ bộ nhớ, sử dụng sau khi miễn phí, cuộc gọi gấp đôi đến hàm miễn phí, v.v.) và cảnh báo trình biên dịch "-Wmismatch-dealloc", "-Wmismatches- new-delete" và " -Wfree-nonheap-object "báo cáo hoạt động phân bổ và phân bổ giao dịch không nhất quán.

Khi tạo thông tin gỡ lỗi, định dạng DWARF 5 được sử dụng theo mặc định, so với các phiên bản trước, định dạng này cho phép tạo dữ liệu gỡ lỗi nhỏ gọn hơn 25%. Hỗ trợ đầy đủ DWARF 5 yêu cầu binutils ít nhất là phiên bản 2.35.2.

Các khả năng của chế độ ThreadSanitizer nâng cao (-fsanized = chủ đề), vì cóe thêm hỗ trợ cho các môi trường và thời gian chạy thay thế, cũng như hỗ trợ công cụ gỡ lỗi Kernel Concurrency Sanitizer (KCSAN) để phát hiện động các điều kiện chủng tộc trong nhân Linux. Các tùy chọn mới "–param tsan-difference-variable" và "–param tsan-tools-func-entry-exit" đã được thêm vào.

Vectorizer cung cấp tính toán của tất cả nội dung của chức năng và xử lý bổ sung các khả năng liên quan đến các giao điểm và tham chiếu đến các khối trước đó trong lưu đồ kiểm soát (CFG).

Trình tối ưu hóa có khả năng chuyển đổi một loạt các hoạt động có điều kiện thành một biểu thức thay đổi, trong đó cùng một biến được so sánh. Trong tương lai, biểu thức thay đổi có thể được mã hóa bằng hướng dẫn kiểm tra bit (để kiểm soát việc chuyển đổi này, tùy chọn "-fbit-tests" đã được thêm vào).

Đối với C ++, một phần các thay đổi và đổi mới được đề xuất trong tiêu chuẩn C ++ 20 đã được thực hiện, bao gồm các hàm ảo "consteval virtual", giả hủy để kết thúc vòng đời của đối tượng, sử dụng lớp enum và tính toán. kích thước của một mảng trong biểu thức "mới".

Nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết sau. 


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.