This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add a character size parameter to c_strlen/get_range_strlen

On 08/28/18 11:25, Bernd Edlinger wrote:
> On 08/28/18 04:55, Jeff Law wrote:
>> On 08/23/2018 08:48 AM, Bernd Edlinger wrote:
>>> On 08/23/18 16:24, Jeff Law wrote:
>>>>> Yes, and which one was the earlier, more controversial patch from me?
>>>> Which is the issue I'm working through right now :-)
>>> Okay, please note that a re-based patch is here:
>>> and if you want, you can split that patch in two parts:
>>> first:
>>> 86711 fix:
>>> 2018-08-17  Bernd Edlinger  <>
>>>           PR middle-end/86711
>>>           * expr.c (string_constant): Don't return truncated string literals.
>>>           * gcc.c-torture/execute/pr86711.c: New test.
>> Note that while this fixes your pr86711.c, it doesn't fix the larger set
>> of tests Martin has created for the issues in pr86711.
>> Sigh.
>> jeff
> Hmm.  which test do you mean?
> I just looked at the tests from part1/6.
> there I found test cases memchr-1.c, pr86714.c, strlenopt-56.c
> test them against trunk from yesterday (only build stage1):
> $ svn info
> Path: .
> Working Copy Root Path: /home/ed/gnu/gcc-trunk
> URL: svn+ssh://
> Relative URL: ^/trunk
> Repository Root: svn+ssh://
> Repository UUID: 138bc75d-0d04-0410-961f-82ee72b054a4
> Revision: 263893
> Node Kind: directory
> Schedule: normal
> Last Changed Author: jakub
> Last Changed Rev: 263891
> Last Changed Date: 2018-08-27 20:36:23 +0200 (Mon, 27 Aug 2018)
> memchr-1.c fail
> pr86714.c fail
> strlenopt-56.c pass
> I don't know what this test case is trying to test, sorry.
> What is obvious about it:
> static const wchar_t wsx[] = L"\x12345678";
> static const wchar_t ws4[] = L"\x00123456\x12005678\x12340078\x12345600";
> This will be one more failed test case on AIX, given it uses -Wall.
> Now I apply my pr86711 patch (only expr.c changed):
> result
> memchr-1.c pass
> pr86714.c pass

Wow, wait a moment.

When I wrote this:
with the original test results of the pr86711 patch I wrote:

"This time I attach the test results for your reference:
gcc-trunk-263644-test.txt: unchanged r263644
gcc-trunk-263644-0-test.txt: r263644 + this patch
gcc-trunk-263644-1-test.txt: r263644 + this patch without string_constant"

"this patch" means both parts,
"this patch without string_constant" means only fold-const.c changed.
string_constant is in expr.c.

I have mis-remembered that, deeply sorry about it.

So I try it the other way round:

apply pr86711 patch (only fold-const.c/h changed):

memchr-1.c pass
pr86714.c fail
strlenop-56.c pass (which probably disqualifies that test case)

So this would have been the correct changelog:

2018-08-17  Bernd Edlinger  <>

         PR middle-end/86711
         * fold-const.c (c_getstr): Fix function comment.  Remove unused third
         argument.  Fix range checks.
         * fold-const.h (c_getstr): Adjust prototype.

         * gcc.c-torture/execute/pr86711.c: New test.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]