Cleanup TODO for constant-expression handling.

Support for constant-expression function calls in SkSL now exists, and
support for abs() was added at http://review.skia.org/405676.

Change-Id: I3144af993db93a3d640971734d4cb03e0cfb8589
Bug: skia:10835
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/408642
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/resources/sksl/shared/ConstVariableComparison.sksl b/resources/sksl/shared/ConstVariableComparison.sksl
index 9ac0e45..860e593 100644
--- a/resources/sksl/shared/ConstVariableComparison.sksl
+++ b/resources/sksl/shared/ConstVariableComparison.sksl
@@ -3,9 +3,7 @@
 half4 main(float2 coords) {
   const float4 a = float4(0);
   const float4 b = float4(1);
-  // This is a constant-expression in GLSL, but not in SkSL (yet).
-  // We can't declare this const, and we can't eliminate it. skbug.com/10835
-  /*const*/ float4 c = abs(b);
+  const float4 c = abs(b * 1);
   if (a == b || b != c) {
       return colorRed;
   } else {
diff --git a/tests/sksl/shared/ConstVariableComparison.asm.frag b/tests/sksl/shared/ConstVariableComparison.asm.frag
index 0cd10e5..c5f68ea 100644
--- a/tests/sksl/shared/ConstVariableComparison.asm.frag
+++ b/tests/sksl/shared/ConstVariableComparison.asm.frag
@@ -10,8 +10,6 @@
 OpMemberName %_UniformBuffer 1 "colorRed"
 OpName %_entrypoint_v "_entrypoint_v"
 OpName %main "main"
-OpName %b "b"
-OpName %c "c"
 OpDecorate %sk_FragColor RelaxedPrecision
 OpDecorate %sk_FragColor Location 0
 OpDecorate %sk_FragColor Index 0
@@ -23,8 +21,7 @@
 OpDecorate %_UniformBuffer Block
 OpDecorate %10 Binding 0
 OpDecorate %10 DescriptorSet 0
-OpDecorate %43 RelaxedPrecision
-OpDecorate %46 RelaxedPrecision
+OpDecorate %30 RelaxedPrecision
 %float = OpTypeFloat 32
 %v4float = OpTypeVector %float 4
 %_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -42,13 +39,8 @@
 %19 = OpConstantComposite %v2float %float_0 %float_0
 %_ptr_Function_v2float = OpTypePointer Function %v2float
 %23 = OpTypeFunction %v4float %_ptr_Function_v2float
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-%float_1 = OpConstant %float 1
-%29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%v4bool = OpTypeVector %bool 4
 %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
 %int = OpTypeInt 32 1
-%int_1 = OpConstant %int 1
 %int_0 = OpConstant %int 0
 %_entrypoint_v = OpFunction %void None %15
 %16 = OpLabel
@@ -61,24 +53,7 @@
 %main = OpFunction %v4float None %23
 %24 = OpFunctionParameter %_ptr_Function_v2float
 %25 = OpLabel
-%b = OpVariable %_ptr_Function_v4float Function
-%c = OpVariable %_ptr_Function_v4float Function
-OpStore %b %29
-OpStore %c %29
-%31 = OpLoad %v4float %b
-%32 = OpLoad %v4float %c
-%33 = OpFOrdNotEqual %v4bool %31 %32
-%35 = OpAny %bool %33
-OpSelectionMerge %38 None
-OpBranchConditional %35 %36 %37
-%36 = OpLabel
-%39 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
-%43 = OpLoad %v4float %39
-OpReturnValue %43
-%37 = OpLabel
-%44 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
-%46 = OpLoad %v4float %44
-OpReturnValue %46
-%38 = OpLabel
-OpUnreachable
+%26 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
+%30 = OpLoad %v4float %26
+OpReturnValue %30
 OpFunctionEnd
diff --git a/tests/sksl/shared/ConstVariableComparison.glsl b/tests/sksl/shared/ConstVariableComparison.glsl
index 98599b0..e45e05e 100644
--- a/tests/sksl/shared/ConstVariableComparison.glsl
+++ b/tests/sksl/shared/ConstVariableComparison.glsl
@@ -3,11 +3,7 @@
 uniform vec4 colorGreen;
 uniform vec4 colorRed;
 vec4 main() {
-    const vec4 b = vec4(1.0);
-    vec4 c = vec4(1.0, 1.0, 1.0, 1.0);
-    if (b != c) {
-        return colorRed;
-    } else {
+    {
         return colorGreen;
     }
 }
diff --git a/tests/sksl/shared/ConstVariableComparison.metal b/tests/sksl/shared/ConstVariableComparison.metal
index 7ea6c6c..d9ff991 100644
--- a/tests/sksl/shared/ConstVariableComparison.metal
+++ b/tests/sksl/shared/ConstVariableComparison.metal
@@ -13,14 +13,8 @@
 fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
     Outputs _out;
     (void)_out;
-    const float4 b = float4(1.0);
-    float4 c = float4(1.0, 1.0, 1.0, 1.0);
-    if (any(b != c)) {
-        _out.sk_FragColor = _uniforms.colorRed;
-        return _out;
-    } else {
+    {
         _out.sk_FragColor = _uniforms.colorGreen;
         return _out;
     }
-    return _out;
 }