aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkGradientShader.cpp
diff options
context:
space:
mode:
authorGravatar epoger@google.com <epoger@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-02-02 20:41:45 +0000
committerGravatar epoger@google.com <epoger@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-02-02 20:41:45 +0000
commit5468c9006e125a79f14a05e830dbf15a00661936 (patch)
treea369a18e0d37bd6f121b431cf5e28c4ba5c8d36e /src/effects/SkGradientShader.cpp
parentb02af6edf3f23948c6298e90113cd2b40fc5f2e0 (diff)
Disable optimization of certain bit-shift operations on Visual Studio 2010 only
Diffstat (limited to 'src/effects/SkGradientShader.cpp')
-rw-r--r--src/effects/SkGradientShader.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index ef3edc04f0..4bbc96c42f 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -71,6 +71,12 @@ static inline int repeat_8bits(int x) {
// Mirror
+// Visual Studio 2010 (MSC_VER=1600) optimizes bit-shift code incorrectly.
+// See http://code.google.com/p/skia/issues/detail?id=472
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+#pragma optimize("", off)
+#endif
+
static inline SkFixed mirror_tileproc(SkFixed x) {
int s = x << 15 >> 31;
return (x ^ s) & 0xFFFF;
@@ -99,6 +105,10 @@ static inline int mirror_8bits(int x) {
#endif
}
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+#pragma optimize("", on)
+#endif
+
///////////////////////////////////////////////////////////////////////////////
typedef SkFixed (*TileProc)(SkFixed);