[C] c: Set attributes for fields when forming a composite type [PR117806]
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gcc_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gcc_check--master-arm |
success
|
Test passed
|
linaro-tcwg-bot/tcwg_gcc_check--master-aarch64 |
fail
|
Patch failed to apply
|
Commit Message
It seems we also miss a decl_attributes call for the fields
when building the composite type.
Bootstrapped and regression tested on x86_64.
c: Set attributes for fields when forming a composite type [PR117806]
We need to call decl_attributes when creating the fields for a composite
type.
PR c/117806
gcc/c/ChangeLog:
* c-typeck.cc (composite_type_internal): Call decl_attributes.
gcc/testsuite/ChangeLog:
* gcc.dg/pr117806.c: New test.
Comments
On Fri, 29 Nov 2024, Martin Uecker wrote:
> It seems we also miss a decl_attributes call for the fields
> when building the composite type.
>
>
> Bootstrapped and regression tested on x86_64.
>
>
> c: Set attributes for fields when forming a composite type [PR117806]
>
> We need to call decl_attributes when creating the fields for a composite
> type.
>
> PR c/117806
>
> gcc/c/ChangeLog:
> * c-typeck.cc (composite_type_internal): Call decl_attributes.
>
> gcc/testsuite/ChangeLog:
> * gcc.dg/pr117806.c: New test.
OK.
@@ -791,6 +791,8 @@ composite_type_internal (tree t1, tree t2, struct composite_cache* cache)
DECL_ATTRIBUTES (f) = DECL_ATTRIBUTES (a);
C_DECL_VARIABLE_SIZE (f) = C_TYPE_VARIABLE_SIZE (t);
+ decl_attributes (&f, DECL_ATTRIBUTES (f), 0);
+
finish_decl (f, input_location, NULL, NULL, NULL);
if (DECL_C_BIT_FIELD (a))
new file mode 100644
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c23" } */
+
+struct Test {
+ double D __attribute__((packed,aligned(4)));
+} x;
+struct Test {
+ double D __attribute__((packed,aligned(4)));
+} x;
+struct Test {
+ double D __attribute__((packed,aligned(4)));
+} x;
+