aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2023-12-13 11:35:20 +0100
committerJakub Jelinek <jakub@redhat.com>2023-12-13 11:35:20 +0100
commitbb600f9822fb8b73d75df2b3fa7a0fab391254fa (patch)
treee54db64891e1738616fe8b0edc0195b30bdfa55d
parent02c30fdad2f46a1f7b4e30d0eff0ac275cd108a5 (diff)
downloadgcc-bb600f9822fb8b73d75df2b3fa7a0fab391254fa.zip
gcc-bb600f9822fb8b73d75df2b3fa7a0fab391254fa.tar.gz
gcc-bb600f9822fb8b73d75df2b3fa7a0fab391254fa.tar.bz2
attribs: Fix valgrind failures on -Wno-attributes* tests [PR112953]
The r14-6076 change changed the allocation of attribute tables from table = new attribute_spec[2]; to table = new attribute_spec { ... }; with ignored_attributes_table.safe_push (table); later in both cases, but didn't change the corresponding delete in free_attr_data, which means valgrind is unhappy about that: FAIL: c-c++-common/Wno-attributes-2.c -Wc++-compat (test for excess errors) Excess errors: ==974681== Mismatched free() / delete / delete [] ==974681== at 0x484965B: operator delete[](void*) (vg_replace_malloc.c:1103) ==974681== by 0x707434: free_attr_data() (attribs.cc:318) ==974681== by 0xCFF8A4: compile_file() (toplev.cc:454) ==974681== by 0x704D23: do_compile (toplev.cc:2150) ==974681== by 0x704D23: toplev::main(int, char**) (toplev.cc:2306) ==974681== by 0x7064BA: main (main.cc:39) ==974681== Address 0x51dffa0 is 0 bytes inside a block of size 40 alloc'd ==974681== at 0x4845FF5: operator new(unsigned long) (vg_replace_malloc.c:422) ==974681== by 0x70A040: handle_ignored_attributes_option(vec<char*, va_heap, vl_ptr>*) (attribs.cc:301) ==974681== by 0x7FA089: handle_pragma_diagnostic_impl<false, false> (c-pragma.cc:934) ==974681== by 0x7FA089: handle_pragma_diagnostic(cpp_reader*) (c-pragma.cc:1028) ==974681== by 0x75814F: c_parser_pragma(c_parser*, pragma_context, bool*) (c-parser.cc:14707) ==974681== by 0x784A85: c_parser_external_declaration(c_parser*) (c-parser.cc:2027) ==974681== by 0x785223: c_parser_translation_unit (c-parser.cc:1900) ==974681== by 0x785223: c_parse_file() (c-parser.cc:26713) ==974681== by 0x7F6331: c_common_parse_file() (c-opts.cc:1301) ==974681== by 0xCFF87D: compile_file() (toplev.cc:446) ==974681== by 0x704D23: toplev::main(int, char**) (toplev.cc:2306) ==974681== by 0x7064BA: main (main.cc:39) 2023-12-13 Jakub Jelinek <jakub@redhat.com> PR middle-end/112953 * attribs.cc (free_attr_data): Use delete x rather than delete[] x.
-rw-r--r--gcc/attribs.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/attribs.cc b/gcc/attribs.cc
index 776655d..4e313d3 100644
--- a/gcc/attribs.cc
+++ b/gcc/attribs.cc
@@ -315,7 +315,7 @@ void
free_attr_data ()
{
for (auto x : ignored_attributes_table)
- delete[] x;
+ delete x;
ignored_attributes_table.release ();
}