Disable optimizations for shaders with conditional discard in D3D9, and
only use expanded short-circuiting conditionals for expressions with
potential side-effects.

Conservatively assume aggreate and selection operators have side effects for now.

BUG=
ANGLEBUG=486
R=geofflang@chromium.org, kbr@chromium.org, nicolas@transgaming.com, shannonwoods@chromium.org

Review URL: https://codereview.appspot.com/14441075

Conflicts:
	src/common/version.h
	src/compiler/translator.vcxproj
	src/compiler/translator.vcxproj.filters
	src/compiler/translator/OutputHLSL.cpp
	src/libGLESv2/ProgramBinary.cpp
	src/libGLESv2/Shader.cpp
	src/libGLESv2/Shader.h

Change-Id: Iaf9f10b5de7b33c927ef032f3c4fe9d5095f64dd
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index 7a7698c..18271e9 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -232,6 +232,7 @@
         mUsesPointCoord            = mHlsl.find("GL_USES_POINT_COORD")  != std::string::npos;
         mUsesDepthRange            = mHlsl.find("GL_USES_DEPTH_RANGE")  != std::string::npos;
         mUsesFragDepth             = mHlsl.find("GL_USES_FRAG_DEPTH")   != std::string::npos;
+        mUsesDiscardRewriting      = mHlsl.find("ANGLE_USES_DISCARD_REWRITING") != std::string::npos;
     }
 }
 
@@ -263,6 +264,7 @@
     mUsesDepthRange = false;
     mUsesFragDepth = false;
     mShaderVersion = 100;
+    mUsesDiscardRewriting = false;
 
     mActiveUniforms.clear();
     mActiveInterfaceBlocks.clear();