Hi Maxim,
short after the initial commit there came two more fix-ups in the same function:
$ svn log -r263896
------------------------------------------------------------------------
r263896 | law | 2018-08-27 22:31:14 +0200 (Mon, 27 Aug 2018) | 4 lines
* tree-ssa-dse.c (compute_trims): Handle case where the reference's
type does not have a TYPE_SIZE_UNIT.
* gcc.c-torture/compile/dse.c: New test.
------------------------------------------------------------------------
$ svn log -r263906
------------------------------------------------------------------------
r263906 | law | 2018-08-28 06:02:11 +0200 (Tue, 28 Aug 2018) | 6 lines
PR tree-optimization/87110
* tree-ssa-dse.c (compute_trims): Handle non-constant
TYPE_SIZE_UNIT.
PR tree-optimization/87110
* gcc.c-torture/compile/pr87110.c: New test.
------------------------------------------------------------------------
I believe not having those applied is causing the segfault you are seeing.
Bernd.
On 10/24/18 7:46 AM, Maxim Kuvyrkov wrote:
> Hi Jeff,
> Hi Bernd,
>
> This change (git commit d0eb64b248a9e40dfa633c4e4baebc3b238fd6eb / svn rev.
> 263793) causes a segfault when build Linux kernel for AArch64. The exact
> configuration is
> ===
> git_repo[linux]=https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
> git_branch[linux]=linux-4.14.y
> git_repo[gcc]=git://gcc.gnu.org/git/gcc.git
> git_branch[gcc]=master
> linux_config=allmodconfig
> ===
>
> The bisection artifacts point at this exact commit:
> Parent commit 0584c3707994997f5dc9fa79732d01a53c25db6a can build 18083
> objects.
> This commit d0eb64b248a9e40dfa633c4e4baebc3b238fd6eb can build 18076 objects
> from the same linux tree.
>
> The relevant error (see [1]):
> ==
> during GIMPLE pass: dse
> drivers/md/dm-mpath.c: In function 'multipath_init_per_bio_data':
> drivers/md/dm-mpath.c:2032:1: internal compiler error: Segmentation fault
> ==
>
> Full bisection artifacts are at [2].
>
> Bernd, would you please investigate?
>
> IMO, this should be easy to reproduce from the bisection logs, but let me
> know if it's not straightforward. Best ping on IRC (I'm maximk) or follow up
> here.
>
> FYI, there is another regression (either caused or unmasked by Kugan's gcc
> commit b88c25691cf8b153db44108935db871e1d40db89), but it appears orthogonal
> to this one.
>
> [1]
> https://ci.linaro.org/view/tcwg_kernel-gnu/job/tcwg_kernel-bisect-gnu-master-aarch64-lts-allmodconfig/8/artifact/artifacts/build-d0eb64b248a9e40dfa633c4e4baebc3b238fd6eb/5-count_linux_objs/console.log/*view*/
>
> [2]
> https://ci.linaro.org/view/tcwg_kernel-gnu/job/tcwg_kernel-bisect-gnu-master-aarch64-lts-allmodconfig/8/artifact/artifacts/
>
> Regards,
>
> --
> Maxim Kuvyrkov
> www.linaro.org
>
>
>
>> On Aug 22, 2018, at 2:43 AM, Jeff Law <[email protected]> wrote:
>>
>> [ I'm still digesting, but saw something in this that ought to be broken
>> out... ]
>>
>> On 08/19/2018 09:55 AM, Bernd Edlinger wrote:
>>> diff -Npur gcc/tree-ssa-dse.c gcc/tree-ssa-dse.c
>>> --- gcc/tree-ssa-dse.c 2018-07-18 21:21:34.000000000 +0200
>>> +++ gcc/tree-ssa-dse.c 2018-08-19 14:29:32.344498771 +0200
>>> @@ -248,6 +248,12 @@ compute_trims (ao_ref *ref, sbitmap live
>>> residual handling in mem* and str* functions is usually
>>> reasonably efficient. */
>>> *trim_tail = last_orig - last_live;
>>> + /* Don't fold away an out of bounds access, as this defeats proper
>>> + warnings. */
>>> + if (*trim_tail
>>> + && compare_tree_int (TYPE_SIZE_UNIT (TREE_TYPE (ref->base)),
>>> + last_orig) <= 0)
>>> + *trim_tail = 0;
>>> }
>>> else
>>> *trim_tail = 0;
>> This seems like a good change in and of itself and should be able to go
>> forward without further review work. Consider this hunk approved,
>> along with any testsuite you have which tickles this code (I didn't
>> immediately see one attached to this patch. But I could have missed it).
>>
>> Jeff
>