summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2014-01-03 18:43:10 +0000
committerplanetmaker <planetmaker@openttd.org>2014-01-03 18:43:10 +0000
commit7b20da8a0aaad464e4b16942ef53140b44c92183 (patch)
tree8ea4178cf0a385564962bf6cfd429a0b8d451bfa
parent115c712f4ea2ee09c90ee3c0f04f4bfd70d00944 (diff)
downloadopenttd-7b20da8a0aaad464e4b16942ef53140b44c92183.tar.xz
(svn r26223) -Codechange: Silence some compile warnings about unititialized variables in the SSE blitters (MJP)
-rw-r--r--src/blitter/32bpp_anim_sse4.cpp9
-rw-r--r--src/blitter/32bpp_sse2.cpp4
-rw-r--r--src/blitter/32bpp_sse4.cpp11
-rw-r--r--src/blitter/32bpp_sse4.hpp10
-rw-r--r--src/stdafx.h17
5 files changed, 29 insertions, 22 deletions
diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp
index 27defd6de..a200d8d8c 100644
--- a/src/blitter/32bpp_anim_sse4.cpp
+++ b/src/blitter/32bpp_anim_sse4.cpp
@@ -19,10 +19,6 @@
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim;
-#if defined(__GNUC__)
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-variable"
-#endif
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
@@ -30,6 +26,7 @@ static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim;
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
+IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
@@ -356,9 +353,7 @@ bmcr_alpha_blend_single:
anim_line += this->anim_buf_width;
}
}
-#if defined(__GNUC__)
- #pragma GCC diagnostic pop
-#endif
+IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
diff --git a/src/blitter/32bpp_sse2.cpp b/src/blitter/32bpp_sse2.cpp
index d515d428d..137c91417 100644
--- a/src/blitter/32bpp_sse2.cpp
+++ b/src/blitter/32bpp_sse2.cpp
@@ -26,6 +26,7 @@ static FBlitter_32bppSSE2 iFBlitter_32bppSSE2;
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
+IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
@@ -188,6 +189,7 @@ inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel
dst_line += bp->pitch;
}
}
+IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
@@ -340,6 +342,7 @@ inline Colour Blitter_32bppSSE2::AdjustBrightness(Colour colour, uint8 brightnes
return Blitter_32bppSSE2::ReallyAdjustBrightness(colour, brightness);
}
+IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE2::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
@@ -371,5 +374,6 @@ inline Colour Blitter_32bppSSE2::AdjustBrightness(Colour colour, uint8 brightnes
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
+IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
diff --git a/src/blitter/32bpp_sse4.cpp b/src/blitter/32bpp_sse4.cpp
index 7d2bc91aa..357a587d9 100644
--- a/src/blitter/32bpp_sse4.cpp
+++ b/src/blitter/32bpp_sse4.cpp
@@ -19,10 +19,6 @@
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4 iFBlitter_32bppSSE4;
-#if defined(__GNUC__)
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-variable"
-#endif
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
@@ -30,6 +26,7 @@ static FBlitter_32bppSSE4 iFBlitter_32bppSSE4;
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
+IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
@@ -241,9 +238,7 @@ inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel
dst_line += bp->pitch;
}
}
-#if defined(__GNUC__)
- #pragma GCC diagnostic pop
-#endif
+IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
@@ -292,6 +287,7 @@ inline Colour Blitter_32bppSSE4::AdjustBrightness(Colour colour, uint8 brightnes
return Blitter_32bppSSE4::ReallyAdjustBrightness(colour, brightness);
}
+IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE4::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
@@ -323,5 +319,6 @@ inline Colour Blitter_32bppSSE4::AdjustBrightness(Colour colour, uint8 brightnes
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
+IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
diff --git a/src/blitter/32bpp_sse4.hpp b/src/blitter/32bpp_sse4.hpp
index 6545c1692..f3a24fa1e 100644
--- a/src/blitter/32bpp_sse4.hpp
+++ b/src/blitter/32bpp_sse4.hpp
@@ -22,11 +22,7 @@
#undef INSR32
#define INSR32(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, val, rank)
-#if defined(__GNUC__)
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wuninitialized"
- #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
-#endif
+IGNORE_UNINITIALIZED_WARNING_START
#ifdef _SQ64
#undef INSR64
#define INSR64(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi64((*(um128i*) &into).m128i, val, rank)
@@ -40,9 +36,7 @@
(*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, v.u32.high, (rank)*2 + 1); \
}
#endif
-#if defined(__GNUC__)
- #pragma GCC diagnostic pop
-#endif
+IGNORE_UNINITIALIZED_WARNING_STOP
/** The SSE4 32 bpp blitter (without palette animation). */
class Blitter_32bppSSE4 : public Blitter_32bppSSSE3 {
diff --git a/src/stdafx.h b/src/stdafx.h
index 5464c59fa..30facd337 100644
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -490,4 +490,21 @@ static inline void free(const void *ptr)
*/
#define MAX_UVALUE(type) ((type)~(type)0)
+#if defined(_MSC_VER) && !defined(_DEBUG)
+ #define IGNORE_UNINITIALIZED_WARNING_START __pragma(warning(push)) __pragma(warning(disable:4700))
+ #define IGNORE_UNINITIALIZED_WARNING_STOP __pragma(warning(pop))
+#elif defined(__GNUC__) && !defined(_DEBUG)
+ #define HELPER0(x) #x
+ #define HELPER1(x) HELPER0(GCC diagnostic ignored x)
+ #define HELPER2(y) HELPER1(#y)
+ #define IGNORE_UNINITIALIZED_WARNING_START \
+ _Pragma("GCC diagnostic push") \
+ _Pragma(HELPER2(-Wuninitialized)) \
+ _Pragma(HELPER2(-Wmaybe-uninitialized))
+ #define IGNORE_UNINITIALIZED_WARNING_STOP _Pragma("GCC diagnostic pop")
+#else
+ #define IGNORE_UNINITIALIZED_WARNING_START
+ #define IGNORE_UNINITIALIZED_WARNING_STOP
+#endif
+
#endif /* STDAFX_H */