// Symbols that are extern, but private to the RTS, are declared
// with visibility "hidden" to hide them outside the RTS shared
// library.
-#if !defined(mingw32_HOST_OS)
+#if defined(HAS_VISIBILITY_HIDDEN)
#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden"))
#else
#define RTS_PRIVATE /* disabled: RTS_PRIVATE */
#endif
-#if __GNUC__ > 4
-#define BEGIN_RTS_PRIVATE #pragma GCC visibility push(hidden)
-#define END_RTS_PRIVATE #pragma GCC visibility pop
-#else
-#define BEGIN_RTS_PRIVATE /* disabled: BEGIN_RTS_PRIVATE */
-#define END_RTS_PRIVATE /* disabled: END_RTS_PRIVATE */
-#endif
-
-#if __GNUC__ > 4
+#if __GNUC__ >= 4
#define RTS_UNLIKELY(p) __builtin_expect((p),0)
#else
#define RTS_UNLIKELY(p) p