Message ID | ZXlqLxcI69T1ypbA@tucnak |
---|---|
State | New |
Headers | show |
Series | attribs: Fix valgrind failures on -Wno-attributes* tests [PR112953] | expand |
On Wed, 13 Dec 2023, Jakub Jelinek wrote: > Hi! > > 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: do_compile (toplev.cc:2150) > ==974681== by 0x704D23: toplev::main(int, char**) (toplev.cc:2306) > ==974681== by 0x7064BA: main (main.cc:39) > > Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for > trunk? OK. > 2023-12-13 Jakub Jelinek <jakub@redhat.com> > > PR middle-end/112953 > * attribs.cc (free_attr_data): Use delete x rather than delete[] x. > > --- gcc/attribs.cc.jj 2023-12-09 10:19:57.809813529 +0100 > +++ gcc/attribs.cc 2023-12-11 09:55:28.894461698 +0100 > @@ -315,7 +315,7 @@ void > free_attr_data () > { > for (auto x : ignored_attributes_table) > - delete[] x; > + delete x; > ignored_attributes_table.release (); > } > > > Jakub > >
--- gcc/attribs.cc.jj 2023-12-09 10:19:57.809813529 +0100 +++ gcc/attribs.cc 2023-12-11 09:55:28.894461698 +0100 @@ -315,7 +315,7 @@ void free_attr_data () { for (auto x : ignored_attributes_table) - delete[] x; + delete x; ignored_attributes_table.release (); }