diff --git a/Test/420.tesc b/Test/420.tesc
index 432bb363a45d3fc457413701b60e3d1d01fd8eb4..93f2386a46f997008756671c2ad6377643650841 100644
--- a/Test/420.tesc
+++ b/Test/420.tesc
@@ -33,7 +33,7 @@ layout (location = 12) in dmat2x4 vs_tcs_last[];
 
 void foo()
 {
- if ((dmat2x4(dvec4(-0.625, -0.5, -0.375, -0.25), dvec4(-0.375, -0.25, -0.125, 0)) != vs_tcs_first[0]) ||
+ if ((dmat2x4(dvec4(-0.625, -0.5, -0.375lf, -0.25), dvec4(-0.375, -0.25, -0.125, 0)) != vs_tcs_first[0]) ||
         (dmat2x4(dvec4(0.375, 0.5, 0.625, 0.75), dvec4(0.625, 0.75, 0.875, -0.625)) != vs_tcs_last[0]))
     {
         ;
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 40da8d6760851b0145d55e853001ec4e1fa2c94b..e37830d81b66e3866cd3a776887f47676ca0a1ed 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -1065,7 +1065,8 @@ bool TIntermUnary::promote()
     case EOpPreDecrement:
         if (operand->getBasicType() != EbtInt && 
             operand->getBasicType() != EbtUint && 
-            operand->getBasicType() != EbtFloat)
+            operand->getBasicType() != EbtFloat &&
+            operand->getBasicType() != EbtDouble)
 
             return false;
         break;