Merge branch 'HaydnTrigg-patch-1'
authorJohn Kessenich <cepheus@frii.com>
Mon, 2 Jul 2018 22:04:31 +0000 (16:04 -0600)
committerJohn Kessenich <cepheus@frii.com>
Mon, 2 Jul 2018 22:13:29 +0000 (16:13 -0600)
1  2 
Test/baseResults/constFold.frag.out
Test/constFold.frag
glslang/Include/revision.h
glslang/MachineIndependent/Constant.cpp

@@@ -179,6 -179,6 +179,10 @@@ ERROR: node is still EOpNull
  0:83        2147483647 (const int)
  0:84      Constant:
  0:84        +1.#INF
++0:84      Constant:
++0:84        -1.#INF
++0:84      Constant:
++0:84        1.#IND
  0:88      Constant:
  0:88        2 (const uint)
  0:88        3 (const uint)
index 7306078,7306078..daecaa2
mode 100644,100644..100755
@@@ -81,7 -81,7 +81,7 @@@ void foo(
      a[0] = s.m[1].z;     // 7.0
      b % 0;  // int
      b / 0;
--    e / 0;
++    e / 0;  -e / 0;  0.0 / 0.0;
      const uint ua = 5;
      const uvec2 ub = uvec2(6, 7);
      const uint uc = 8;
@@@ -1,3 -1,3 +1,3 @@@
  // This header is generated by the make-revision script.
  
--#define GLSLANG_PATCH_LEVEL 2787
++#define GLSLANG_PATCH_LEVEL 2793
@@@ -179,7 -179,27 +179,14 @@@ TIntermTyped* TIntermConstantUnion::fol
              case EbtDouble:
              case EbtFloat:
              case EbtFloat16:
-                 newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst());
 -                {
 -                    auto right = rightUnionArray[i].getDConst();
 -                    auto left = leftUnionArray[i].getDConst();
 -
 -                    if (right)
 -                    {
 -                        newConstArray[i].setDConst(left / right);
 -                    }
 -                    else if (left > 0)
 -                    {
 -                        newConstArray[i].setDConst((double)INFINITY);
 -                    }
 -                    else if (left < 0)
 -                    {
 -                        newConstArray[i].setDConst((double)-INFINITY);
 -                    }
 -                    else
 -                    {
 -                        newConstArray[i].setDConst((double)NAN);
 -                    }
 -                }
++                if (rightUnionArray[i].getDConst() != 0.0)
++                    newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst());
++                else if (leftUnionArray[i].getDConst() > 0.0)
++                    newConstArray[i].setDConst((double)INFINITY);
++                else if (leftUnionArray[i].getDConst() < 0.0)
++                    newConstArray[i].setDConst((double)-INFINITY);
++                else
++                    newConstArray[i].setDConst((double)NAN);
                  break;
              case EbtInt8:
                  if (rightUnionArray[i] == (signed char)0)