RTS: Fix & refactor "portable inline" macros
authorHerbert Valerio Riedel <hvr@gnu.org>
Fri, 25 Mar 2016 23:59:31 +0000 (00:59 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Fri, 25 Mar 2016 23:59:31 +0000 (00:59 +0100)
commit882179de09f9bd466b0e7ca83522aee0d3d7144a
tree5558ebea1a0eadcf8827c67f3322d372a59ba19f
parent1b4d1201d6fe395db2b268ca111baa69d96ce211
RTS: Fix & refactor "portable inline" macros

Turns out the current macros for gnu90-style inline
semantics stopped working with GCC 5
(and possibly also with Apple's GCC) which switched on
`__GNUC_STDC_INLINE__` by default falling back to using the
suboptimal `static inline` mode.

However, C99 supports an equivalent (as far as our
use-case is concerned) `extern inline` mode.

See also
http://www.greenend.org.uk/rjk/tech/inline.html
for a write-up of gnu90 vs C99 semantics.

This patch also removes the MSVC case as VS2015 is supposed
to finally catch up to C99 (and C11), so we don't need any
special care for MSVC anymore.

Reviewed By: erikd, austin

Differential Revision: https://phabricator.haskell.org/D2039
includes/Stg.h