Re: h8300 build failures in linux-next (in rcu code, gcc 5.x related, not limited to h8300)

From: Oleg Nesterov
Date: Tue Aug 25 2015 - 12:14:20 EST


On 08/25, Guenter Roeck wrote:
>
> Hi Mark,
>
> On 08/25/2015 07:27 AM, Mark Salter wrote:
>> On Tue, 2015-08-25 at 14:56 +0900, Yoshinori Sato wrote:
>>> On Tue, 25 Aug 2015 03:34:20 +0900,
>>> Guenter Roeck wrote:
>>>>
>>>> Hi,
>>>>
>>>> In linux-next as of today (0824), all h8300 builds fail for me with an
>>>> internal
>>>> compiler error.
>>>>
>>>> Building h8300:allnoconfig ... failed
>>>> --------------
>>>> Error log:
>>>>
>>>> In file included from include/linux/rcupdate.h:429:0,
>>>> from include/linux/rcusync.h:5,
>>>> from kernel/rcu/sync.c:1:
>>>> include/linux/rcutiny.h: In function ârcu_barrier_schedâ:
>>>> include/linux/rcutiny.h:55:20: internal compiler error: Segmentation
>>>> fault
>>>> static inline void rcu_barrier_sched(void)
>>>> ^
>>>>
>>>> I tried both gcc 5.1 and 5.2, built with the patch set available to me.
>>>>
>>>> Is there a more recent compiler / patch set available that might fix
>>>> the problem ?
>>>>
>>>
>>> No.
>>> I tried gcc 6.0. It got same error.
>>> It looks optimization problem on h8300 target.
>>> I will investigate it.
>>
>> I get the same ICE with c6x gcc 5.1
>>
>
> Interesting. h8300 was the only gcc 5+ compiler I had used so far.
> Just for fun, I built an alpha toolchain with gcc 5.1. Same problem there.
> So it looks like it isn't a h8300 problem after all, it is a gcc problem.
>
> Updated subject line, and copied rcu maintainers.

Damn. This was caused by my patch, I need to react, and I do not know
what to say ;)

OK, this is gcc bug. But we probably need the workaround, and I don't
have a h8300 machine so I can't test the fix.

Could you please try to compile kernel/rcu/sync.o with the patch below?
Just to know how "stable" this bug is. I expect the compilation should
fail again, rcutiny.h:rcu_barrier() is "inline" too.

Oleg.


--- a/kernel/rcu/sync.c
+++ b/kernel/rcu/sync.c
@@ -24,7 +24,6 @@ static const struct {
[RCU_SCHED_SYNC] = {
.sync = synchronize_sched,
.call = call_rcu_sched,
- .wait = rcu_barrier_sched,
__INIT_HELD(rcu_read_lock_sched_held)
},
[RCU_BH_SYNC] = {

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/