Trong những ngày đầu của gcc (2.8, v.v.) và trong thời đại của egcs, và redhat 2,96 -O3 đôi khi khá lỗi. Nhưng điều này đã hơn một thập kỷ trước và -O3 không khác nhiều so với các mức tối ưu hóa khác (trong lỗi).
Tuy nhiên, nó có xu hướng tiết lộ các trường hợp mọi người dựa vào hành vi không xác định, do phụ thuộc chặt chẽ hơn vào các quy tắc và đặc biệt là các trường hợp góc, của ngôn ngữ.
Như một lưu ý cá nhân, tôi đang chạy phần mềm sản xuất trong lĩnh vực tài chính trong nhiều năm nay với -O3 và chưa gặp phải lỗi nào nếu tôi sử dụng -O2.
Theo nhu cầu phổ biến, đây là một bổ sung:
-O3 và đặc biệt là các cờ bổ sung như -funroll-loop (không được bật bởi -O3) đôi khi có thể dẫn đến nhiều mã máy được tạo. Trong một số trường hợp nhất định (ví dụ: trên một cpu có bộ đệm lệnh L1 đặc biệt nhỏ), điều này có thể gây ra sự chậm lại do tất cả các mã của ví dụ như một số vòng lặp bên trong bây giờ không còn phù hợp với L1I nữa. Nói chung gcc cố gắng khá nhiều để không tạo ra quá nhiều mã, nhưng vì nó thường tối ưu hóa trường hợp chung, điều này có thể xảy ra. Các tùy chọn đặc biệt thiên về điều này (như hủy đăng ký vòng lặp) thường không được bao gồm trong -O3 và được đánh dấu tương ứng trong trang chủ. Vì vậy, nói chung nên sử dụng -O3 để tạo mã nhanh và chỉ quay lại -O2 hoặc -Os (cố gắng tối ưu hóa cho kích thước mã) khi thích hợp (ví dụ: khi trình lược tả chỉ ra L1I bỏ lỡ).
Nếu bạn muốn tối ưu hóa đến mức tối đa, bạn có thể điều chỉnh trong gcc thông qua - thay đổi chi phí liên quan đến tối ưu hóa nhất định. Ngoài ra, lưu ý rằng gcc hiện có khả năng đặt các thuộc tính tại các chức năng kiểm soát cài đặt tối ưu hóa chỉ cho các chức năng này, vì vậy khi bạn thấy bạn gặp vấn đề với -O3 trong một chức năng (hoặc muốn thử các cờ đặc biệt cho chỉ chức năng đó), bạn không cần phải biên dịch toàn bộ tệp hoặc thậm chí toàn bộ dự án với O2.
otoh có vẻ như phải cẩn thận khi sử dụng -Ofast, trong đó nêu rõ:
-Ofast cho phép tối ưu hóa tất cả -O3. Nó cũng cho phép tối ưu hóa không hợp lệ cho tất cả các chương trình tuân thủ tiêu chuẩn.
điều này khiến tôi kết luận rằng -O3 được dự định là tuân thủ đầy đủ các tiêu chuẩn.