Fix test failures due to glslang behaviour change.

* Desktop shaders compiling to SPIR-V require version 330 or higher.
* A new control for reporting cascading errors is introduced.
diff --git a/glslc/test/assembly.py b/glslc/test/assembly.py
index d4bc025..2a0e47f 100644
--- a/glslc/test/assembly.py
+++ b/glslc/test/assembly.py
@@ -124,8 +124,10 @@
     glslc_args = ['-c', '-fshader-stage=vertex', shader]
 
     expected_error = [
+        shader, ": error: #version: Desktop shaders for Vulkan SPIR-V require "
+        "version 140 or higher\n",
         shader, ":2: error: '' :  syntax error\n",
-        '1 error generated.\n']
+        '2 errors generated.\n']
 
 
 @inside_glslc_testsuite('SpirvAssembly')
diff --git a/glslc/test/option_dash_E.py b/glslc/test/option_dash_E.py
index e35e22b..eca5e5a 100644
--- a/glslc/test/option_dash_E.py
+++ b/glslc/test/option_dash_E.py
@@ -350,10 +350,11 @@
 
 # OpenGL compatibility fragment shader. Can be compiled to SPIR-V successfully
 # when target environment is set to opengl_compat. Compilation will fail when
-# target environment is set to other values. But preprocessing should succeed
-# with any target environment values.
+# target environment is set to other values. (gl_FragColor is predefined only
+# in the compatibility profile.) But preprocessing should succeed with any
+# target environment values.
 def opengl_compat_frag_shader():
-    return '''#version 140
+    return '''#version 330
 uniform highp sampler2D tex;
 void main(){
   gl_FragColor = texture2D(tex, vec2(0.0, 0.0));
@@ -375,4 +376,4 @@
 
     shader = FileShader(opengl_compat_frag_shader(), '.frag')
     expected_stdout = opengl_compat_frag_shader()
-    glslc_args = ['-E', '--target-env=vulkan', shader]
+    glslc_args = ['-E', '--target-env=opengl_compat', shader]
diff --git a/glslc/test/option_std.py b/glslc/test/option_std.py
index cce0d81..9ad762b 100644
--- a/glslc/test/option_std.py
+++ b/glslc/test/option_std.py
@@ -52,6 +52,7 @@
     glslc_args = ['-c', '-std=', '450core', shader]
     expected_error = ["glslc: error: invalid value '' in '-std='\n"]
 
+
 # TODO(dneto): The error message changes with different versions of glslang.
 @inside_glslc_testsuite('OptionStd')
 class TestMissingVersionAndStd(expect.ErrorMessageSubstr):
diff --git a/glslc/test/option_target_env.py b/glslc/test/option_target_env.py
index 93b7be0..7c0b67a 100644
--- a/glslc/test/option_target_env.py
+++ b/glslc/test/option_target_env.py
@@ -18,7 +18,7 @@
 
 
 def opengl_compat_fragment_shader():
-    return """#version 140
+    return """#version 330
 uniform highp sampler2D tex;
 void main() {
   gl_FragColor = texture2D(tex, vec2(0.0, 0.0));
@@ -26,7 +26,7 @@
 
 
 def opengl_vertex_shader():
-    return """#version 150
+    return """#version 330
 void main() { int t = gl_VertexID; }"""
 
 
diff --git a/libshaderc/src/common_shaders_for_test.h b/libshaderc/src/common_shaders_for_test.h
index 07f6bf6..e297e8f 100644
--- a/libshaderc/src/common_shaders_for_test.h
+++ b/libshaderc/src/common_shaders_for_test.h
@@ -93,7 +93,7 @@
 
 // A shader that compiles under OpenGL core profile rules.
 const char kOpenGLVertexShader[] =
-    R"(#version 140
+    R"(#version 330
        void main() { int t = gl_VertexID; })";
 
 // Empty 310 es shader. It is valid for vertex, fragment, compute shader kind.
diff --git a/libshaderc/src/shaderc.cc b/libshaderc/src/shaderc.cc
index fe33f44..aa85bd3 100644
--- a/libshaderc/src/shaderc.cc
+++ b/libshaderc/src/shaderc.cc
@@ -72,20 +72,16 @@
 
 // Converts shaderc_target_env to EShMessages
 EShMessages GetMessageRules(shaderc_target_env target) {
-  EShMessages msgs = EShMsgDefault;
-
   switch (target) {
     case shaderc_target_env_opengl_compat:
       break;
     case shaderc_target_env_opengl:
-      msgs = EShMsgSpvRules;
-      break;
+      return static_cast<EShMessages>(EShMsgSpvRules | EShMsgCascadingErrors);
     case shaderc_target_env_vulkan:
-      msgs = static_cast<EShMessages>(EShMsgSpvRules | EShMsgVulkanRules);
-      break;
+      return static_cast<EShMessages>(EShMsgSpvRules | EShMsgVulkanRules |
+                                      EShMsgCascadingErrors);
   }
-
-  return msgs;
+  return EShMsgCascadingErrors;
 }
 
 // A wrapper functor class to be used as stage deducer for libshaderc_util
@@ -151,7 +147,7 @@
         return EShLangTessControl;
       case shaderc_glsl_default_tess_evaluation_shader:
         return EShLangTessEvaluation;
-    case shaderc_spirv_assembly:
+      case shaderc_spirv_assembly:
         return EShLangCount;
     }
     assert(0 && "Unhandled shaderc_shader_kind");
diff --git a/libshaderc/src/shaderc_cpp_test.cc b/libshaderc/src/shaderc_cpp_test.cc
index 0ba4c97..8f6a22a 100644
--- a/libshaderc/src/shaderc_cpp_test.cc
+++ b/libshaderc/src/shaderc_cpp_test.cc
@@ -535,7 +535,7 @@
   // 'SampleInputFile'
   EXPECT_FALSE(CompilationResultIsSuccess(compilation_result));
   EXPECT_THAT(compilation_result.GetErrorMessage(),
-              HasSubstr("SampleInputFile:4: error:"));
+              HasSubstr("SampleInputFile:3: error:"));
 }
 
 TEST_F(CppInterface, PreprocessingOnlyOption) {
diff --git a/libshaderc_util/include/libshaderc_util/compiler.h b/libshaderc_util/include/libshaderc_util/compiler.h
index b5f1273..149e2aa 100644
--- a/libshaderc_util/include/libshaderc_util/compiler.h
+++ b/libshaderc_util/include/libshaderc_util/compiler.h
@@ -99,7 +99,6 @@
         generate_debug_info_(false),
         message_rules_(GetDefaultRules()) {}
 
-
   // Requests that the compiler place debug information into the object code,
   // such as identifier names and line numbers.
   void SetGenerateDebugInfo();
@@ -172,7 +171,8 @@
       GlslInitializer* initializer) const;
 
   static EShMessages GetDefaultRules() {
-    return static_cast<EShMessages>(EShMsgSpvRules | EShMsgVulkanRules);
+    return static_cast<EShMessages>(EShMsgSpvRules | EShMsgVulkanRules |
+                                    EShMsgCascadingErrors);
   }
 
  protected:
@@ -252,7 +252,6 @@
   // When true, use the default version and profile from eponymous data members.
   bool force_version_profile_;
 
-
   // Macro definitions that must be available to reference in the shader source.
   MacroDictionary predefined_macros_;
 
diff --git a/libshaderc_util/src/compiler_test.cc b/libshaderc_util/src/compiler_test.cc
index 9614f5d..30d00de 100644
--- a/libshaderc_util/src/compiler_test.cc
+++ b/libshaderc_util/src/compiler_test.cc
@@ -58,13 +58,13 @@
 
 // A shader that compiles under OpenGL core profile rules.
 const char kOpenGLVertexShader[] =
-    R"(#version 150
+    R"(#version 330
        void main() { int t = gl_VertexID; })";
 
 // A shader that compiles under OpenGL core profile rules, even when
 // deducing the stage.
 const char kOpenGLVertexShaderDeducibleStage[] =
-    R"(#version 150
+    R"(#version 330
        #pragma shader_stage(vertex)
        void main() { int t = gl_VertexID; })";