cp/decl.c: Set DECL_INITIAL before attribute processing
Attribute handlers may want to examine DECL_INITIAL for a decl, to validate the attribute being applied. For C++, DECL_INITIAL is currently not set until cp_finish_decl, by which time attribute validation has already been performed. For msp430-elf this causes the "persistent" attribute to always be rejected for C++, since DECL_INITIAL must be non-null for the attribute to be applied to a decl. This patch ensures DECL_INITIAL is set for initialized decls early in start_decl, before attribute handlers run. This allows the initialization status of the decl to be examined by the handlers. DECL_INITIAL must be restored to it's initial value after attribute validation is performed, so as to not interfere with later decl processing. gcc/cp/ChangeLog: * decl.c (start_decl): Set DECL_INITIAL for initialized decls before attribute processing. gcc/testsuite/ChangeLog: * gcc.target/msp430/data-attributes-2.c: Adjust test. * g++.target/msp430/data-attributes.C: New test. * g++.target/msp430/msp430.exp: New test.
Showing
- gcc/cp/decl.c 13 additions, 0 deletionsgcc/cp/decl.c
- gcc/testsuite/g++.target/msp430/data-attributes.C 52 additions, 0 deletionsgcc/testsuite/g++.target/msp430/data-attributes.C
- gcc/testsuite/g++.target/msp430/msp430.exp 44 additions, 0 deletionsgcc/testsuite/g++.target/msp430/msp430.exp
- gcc/testsuite/gcc.target/msp430/data-attributes-2.c 1 addition, 0 deletionsgcc/testsuite/gcc.target/msp430/data-attributes-2.c
Loading
Please register or sign in to comment