Thread (9 messages) 9 messages, 2 authors, 2018-08-10

Re: [PATCH v6 4/4] MIPS: Workaround GCC __builtin_unreachable reordering bug

From: Paul Burton <hidden>
Date: 2018-08-09 21:22:23
Also in: linux-arch, linux-um

Hi Arnd,

On Thu, Aug 09, 2018 at 08:12:27PM +0200, Arnd Bergmann wrote:
On Thu, Aug 9, 2018 at 7:45 PM Paul Burton [off-list ref] wrote:
quoted
+/*
+ * With GCC v4.5 onwards can use __builtin_unreachable to indicate to the
+ * compiler that a particular code path will never be hit. This allows it to be
+ * optimised out of the generated binary.
+ *
+ * Unfortunately GCC from at least v4.9.2 to current head of tree as of May
+ * 2016 suffer from a bug that can lead to instructions from beyond an
Has anything happened to address this in gcc in the meantime?
Could you update this text to reflect whatever is in current gcc-9?
Good question. I can reproduce the problem using the test case from [1]
using both GCC 6.4.0 & 7.3.0, but 8.1.0 generates wildly different code
which looks good.

Nothing relevant is listed in the release notes for GCC 8.x though, and
I can't see anything obvious in gcc's commit logs. It doesn't looks like
the fix Robert suggested went in. So I don't know whether current GCC's
have resolved the problem or just get lucky enough not to hit it with
the existing testcase.

I've copied Matthew (GCC MIPS maintainer) in case he has any relevant
information.

Thanks,
    Paul

[1] https://gcc.gnu.org/ml/gcc-patches/2015-09/msg00360.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help