diff options
author | Marek Polacek <polacek@redhat.com> | 2024-06-27 16:39:29 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2024-07-10 14:37:54 -0400 |
commit | 4c7009735f73f59c9a635d79c048c8981310e331 (patch) | |
tree | 39b2d1e10439f48566f4b221e1dd7ac68f392d5a /gcc/gcov.cc | |
parent | 4865a92b35054fdfaa1318a4c1f56d95d44012a2 (diff) | |
download | gcc-4c7009735f73f59c9a635d79c048c8981310e331.zip gcc-4c7009735f73f59c9a635d79c048c8981310e331.tar.gz gcc-4c7009735f73f59c9a635d79c048c8981310e331.tar.bz2 |
c: ICE on invalid with attribute optimize [PR115549]
I had this PR in my open tabs so why not go ahead and fix it.
decl_attributes gets last_decl, the last already pushed declaration,
to be used in common_handle_aligned_attribute. In C++, we look up
the decl via find_last_decl, which returns NULL_TREE if it finds
a decl that had not been declared. In C, we look up the decl via
lookup_last_decl which returns error_mark_node rather than NULL_TREE
in that case.
The error_mark_node causes a crash in common_handle_aligned_attribute.
We can fix this on the C FE side like in the patch below.
PR c/115549
gcc/c/ChangeLog:
* c-decl.cc (c_decl_attributes): If lookup_last_decl returns
error_mark_node, use NULL_TREE as last_decl.
gcc/testsuite/ChangeLog:
* c-c++-common/attr-aligned-2.c: New test.
Diffstat (limited to 'gcc/gcov.cc')
0 files changed, 0 insertions, 0 deletions