Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Don't apply the aligned attribute nedlessly

Đang mở
#714 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
rust
Lĩnh vực
compilers

Hướng nghiên cứu

Bắt đầu bằng cách lần theo Builder::load và lời gọi get_aligned, sau đó điều tra cách rustc cung cấp alignment được đảm bảo cho các kiểu số nguyên, số thực dấu phẩy động, vector và kiểu tổ hợp. Hoàn tất khi backend chỉ phát ra alignment khi nó khác với alignment được đảm bảo của kiểu, đồng thời tránh phát ra alignment này cho các kiểu có kích thước một byte và các cấu trúc được căn chỉnh tự nhiên.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement

Currently, we apply the aligned attribute to all integers, regardless of their actual aligement.

This leads to such gems as this:

__int8_t  __attribute__((aligned(1)))

Since a byte-sized type has a size of 1(by definition), it's alignment can be 1 and only 1.

This attribute is thus unneeded, and only leads to increased memory consumption, and more confusing debug strings. It could also inhibit some optimizations(no examples of that yet, but it is not hard to imagine some of them can't deal with under / over aligned types, and ignore types with explicit alignment altogether).

While removing this attribute for byte-sized types is an easy fix, other types pose a bigger challenge.

Ideally, we'd need an API to query GCC about the aligement of intigers / floats / vectors, and then use that API to not emit this attribute when not necessary(eg. a structure composed of floats with aligement 4 is alteady correctly aligned by the virtue of containing floats).

For example, Builder::load could check if the requested align: Align differs from the one already guaranteed for a type(by checking the aligement on the rustc side of things). We could then call get_aligned if and only if this aligement differs, reducing the usage of this attribute(thus reducing memory usage).

Ngôn ngữ chính
Rust
Star
1.2k
Fork
106
Merge trung bình
6 giờ 17 phút
Pull request đã merge (30 ngày)
21

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của rust-lang/rustc_codegen_gcc

Tất cả issue của rust-lang/rustc_codegen_gcc

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.