Quoted from https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html:Tại sao GCC cho phép tối ưu hóa tại O2/O3 khi nó rõ ràng nói rằng nó sẽ làm chậm chương trình?
-falign-nhãn
-falign-nhãn = n
Align tất cả các mục tiêu chi nhánh để một ranh giới điện-of-hai, bỏ qua lên đến n byte như - hàm falign. Tùy chọn này có thể dễ dàng làm cho mã chậm hơn, vì nó phải chèn hoạt động giả cho khi mục tiêu chi nhánh đạt được trong luồng thông thường của mã.
-fno-align-labels và -falign-label = 1 tương đương và có nghĩa là nhãn không được căn chỉnh.
Nếu các vòng lặp -falign hoặc -falign-jump được áp dụng và lớn hơn giá trị này, thì giá trị của chúng được sử dụng thay thế.
Nếu n không được chỉ định hoặc bằng 0, hãy sử dụng mặc định phụ thuộc máy rất có khả năng là ‘1’, nghĩa là không có căn chỉnh.
Được bật ở các mức -O2, -O3.
Suy nghĩ về lá cờ này nhiều hơn làm cho nó mất cảm giác nhiều hơn ... có những hậu quả của kích thích đang nhớ cache miss, và những gì thậm chí tạo điều kiện cho phương tiện khi tham số có giá trị số (1 ..)?
"Nếu n chưa được chỉ định hoặc bằng 0, sử dụng mặc định phụ thuộc vào máy rất có thể là '1'. Vì vậy, theo mặc định, gcc sử dụng giá trị phụ thuộc vào máy – Justin
IIRC, đây là một tối ưu hóa kích thước. – stybl
Đây là một câu hỏi thú vị; Cảm ơn vì đăng. –