c-family: attribute ((aligned, mode)) [PR100545]
The problem here was that handle_mode_attribute clobbered the changes of any previous attribute, only copying type qualifiers to the new type. And common_handle_aligned_attribute had previously set up the typedef, so when we later called set_underlying_type it saw DECL_ORIGINAL_TYPE set and just returned, even though handle_mode_attribute had messed up the TREE_TYPE. So, let's fix handle_mode_attribute to copy attributes, alignment, and typedefness to the new type. PR c/100545 gcc/c-family/ChangeLog: * c-attribs.cc (handle_mode_attribute): Copy attributes, aligned, and typedef. * c-common.cc (set_underlying_type): Add assert. gcc/testsuite/ChangeLog: * c-c++-common/attr-mode-1.c: New test. * c-c++-common/attr-mode-2.c: New test.
Showing
- gcc/c-family/c-attribs.cc 15 additions, 1 deletiongcc/c-family/c-attribs.cc
- gcc/c-family/c-common.cc 4 additions, 3 deletionsgcc/c-family/c-common.cc
- gcc/testsuite/c-c++-common/attr-mode-1.c 4 additions, 0 deletionsgcc/testsuite/c-c++-common/attr-mode-1.c
- gcc/testsuite/c-c++-common/attr-mode-2.c 4 additions, 0 deletionsgcc/testsuite/c-c++-common/attr-mode-2.c
Loading
Please register or sign in to comment