From: Richard Biener <richard.guenther@gmail.com>
To: Martin Sebor <msebor@gmail.com>
Cc: Jan Hubicka <hubicka@ucw.cz>, Jason Merrill <jason@redhat.com>,
Pedro Alves <palves@redhat.com>,
Gcc Patch List <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH] warn on mem calls modifying objects of non-trivial types (PR 80560)
Date: Fri, 30 Jun 2017 08:34:00 -0000 [thread overview]
Message-ID: <CAFiYyc1qMQd4PPU+-v+XMpH9iDOF_oJj=bX6Ln3+SaOkjhYVsA@mail.gmail.com> (raw)
In-Reply-To: <f43bf7aa-3f57-1b08-8ed2-96cbef51e89f@gmail.com>
On Thu, Jun 29, 2017 at 10:23 PM, Martin Sebor <msebor@gmail.com> wrote:
> On 06/29/2017 10:15 AM, Jan Hubicka wrote:
>>
>> Hello,
>>>
>>> diff --git a/gcc/hash-table.h b/gcc/hash-table.h
>>> index 0f7e21a..443d16c 100644
>>> --- a/gcc/hash-table.h
>>> +++ b/gcc/hash-table.h
>>> @@ -803,7 +803,10 @@ hash_table<Descriptor, Allocator>::empty_slow ()
>>> m_size_prime_index = nindex;
>>> }
>>> else
>>> - memset (entries, 0, size * sizeof (value_type));
>>> + {
>>> + for ( ; size; ++entries, --size)
>>> + *entries = value_type ();
>>> + }
>>> m_n_deleted = 0;
>>> m_n_elements = 0;
>>> }
>>
>>
>> This change sends our periodic testers into an infinite loop. It is fault
>> of gcc 4.2 being used
>> as bootstrap compiler, but perhaps that can be worked around?
>
>
> The warning in the original code could have been suppressed (by
> casting the pointer to char*), but it was valid so I opted not
> to. I'd expect it to be possible to work around the bug but
> I don't have easy access to GCC 4.2 to reproduce it or verify
> the fix.
>
> FWIW, after looking at the function again, I wondered if zeroing
> out the elements (either way) was the right thing to do and if
> they shouldn't be cleared by calling Descriptor::mark_empty()
> instead, like in alloc_entries(), but making that change broke
> a bunch of ipa/ipa-pta-*.c tests. It's not really clear to me
> what this code is supposed to do.
>
> Martin
>
> PS Does this help at all?
>
> @@ -804,8 +804,8 @@ hash_table<Descriptor, Allocator>::empty_slow ()
> }
> else
> {
> - for ( ; size; ++entries, --size)
> - *entries = value_type ();
> + for (size_t i = 0; i != size; ++i)
> + entries[i] = value_type ();
>
> }
> m_n_deleted = 0;
> m_n_elements = 0;
alloc_entries uses mark_empty. untested:
Index: gcc/hash-table.h
===================================================================
--- gcc/hash-table.h (revision 249780)
+++ gcc/hash-table.h (working copy)
@@ -804,8 +804,8 @@ hash_table<Descriptor, Allocator>::empty
}
else
{
- for ( ; size; ++entries, --size)
- *entries = value_type ();
+ for (size_t i = 0; i < size; ++i)
+ mark_empty (entries[i]);
}
m_n_deleted = 0;
m_n_elements = 0;
next prev parent reply other threads:[~2017-06-30 8:34 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-29 22:10 Martin Sebor
[not found] ` <656ca1db-1082-b1ed-a911-ba7bf48f09c0@redhat.com>
2017-05-01 15:49 ` Jason Merrill
2017-05-11 20:03 ` Martin Sebor
2017-05-12 2:43 ` Martin Sebor
2017-05-17 11:53 ` Pedro Alves
2017-06-29 16:15 ` Jan Hubicka
2017-06-29 20:23 ` Martin Sebor
2017-06-29 22:34 ` Jan Hubicka
2017-06-30 0:16 ` Martin Sebor
2017-06-30 8:34 ` Richard Biener [this message]
2017-06-30 14:29 ` Martin Sebor
2017-07-04 9:33 ` Richard Earnshaw (lists)
2017-05-11 16:34 ` Martin Sebor
2017-05-11 16:57 ` Jakub Jelinek
2017-05-11 17:17 ` Martin Sebor
2017-05-16 19:46 ` Jason Merrill
2017-05-16 22:28 ` Martin Sebor
2017-05-19 19:14 ` Jason Merrill
2017-05-19 21:11 ` Martin Sebor
2017-05-19 21:56 ` Jason Merrill
2017-05-22 2:07 ` Martin Sebor
2017-05-22 6:07 ` Jason Merrill
2017-05-24 20:28 ` Martin Sebor
2017-05-24 20:48 ` Martin Sebor
2017-05-24 21:36 ` Jason Merrill
2017-05-28 5:02 ` Martin Sebor
[not found] ` <cc62e93c-3b49-8e2f-70b9-acdd013fe760@redhat.com>
2017-06-02 21:28 ` Martin Sebor
2017-06-05 2:02 ` Jason Merrill
2017-06-05 7:53 ` Jason Merrill
2017-06-05 16:07 ` Martin Sebor
2017-06-05 19:13 ` Martin Sebor
2017-06-06 1:53 ` Martin Sebor
2017-06-06 22:24 ` Martin Sebor
2017-06-08 1:09 ` Jason Merrill
2017-06-08 20:25 ` Martin Sebor
2017-06-12 21:36 ` Jason Merrill
2017-06-15 16:26 ` Martin Sebor
2017-06-15 21:31 ` Jason Merrill
2017-06-16 7:38 ` Richard Biener
2017-06-16 7:40 ` Richard Biener
2017-05-17 1:01 ` Pedro Alves
2017-05-17 1:57 ` Martin Sebor
2017-05-17 11:23 ` Pedro Alves
2017-07-05 20:58 ` Andrew Pinski
2017-07-05 22:33 ` Martin Sebor
[not found] ` <alpine.DEB.2.20.1704302338540.1461@digraph.polyomino.org.uk>
2017-05-03 16:18 ` Martin Sebor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAFiYyc1qMQd4PPU+-v+XMpH9iDOF_oJj=bX6Ln3+SaOkjhYVsA@mail.gmail.com' \
--to=richard.guenther@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=hubicka@ucw.cz \
--cc=jason@redhat.com \
--cc=msebor@gmail.com \
--cc=palves@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).