Update CHANGES
diff --git a/CHANGES b/CHANGES
index 9285dbf..050280e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,31 +12,69 @@
      attributes in the "unified1" SPIR-V core grammar.
    - Disassembler: Emit more digits on floating point, to reliably reproduce all
      significand bits.  (Use std::max_digits10 instead of std::digits10)
+   - Fix compilation for old XCode versions: Explicit construction required for std::set.
  - Optimizer:
    - Add --strip-reflect
    - Add --time-report
+   - Add --loop-fission
+   - Add lop fusion.
+   - Add loop peeling pass and internal utility.
+   - Improve optimizer runtime.
    - Merge-return now works with structured control flow.
    - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis.
      Can replace load/store elimination passes.
    - Fix instruction folding case: insertion that feeds and extract, when the extract
      remains.
+   - Fold OpDot.
+   - Fold OpFNegate.
+   - Fold multply and divide of same value.
+   - Fold FClamp feeding a compare.
+   - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547)
+   - Fold Fmix feeding an extract.
+   - Use simplification pass instead of insert-extract elimination.
+   - Constant fold OpVectorTimesScalar.
    - Copy propagate arrays, in simple cases.
+   - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives.
+   - Aggressive dead code elimination: Remove Workgroup variables that are written but not read.
    - Better handling of OpImageTexelPointer
-   - Add loop peeling internal utility.
    - Initial utilities for scalar evolution.
+   - Add Vector dead code elimination.
+   - Each pass can only run once.
+   - Allow code hosting in if-conversion.
+   - Add external interface for adding a PassToken, so external code can make their own
+     passes.
+   - Fixes:
+     #1404: Don't optimize away the compute compute workgroup size constant.
+     #1407: Remove a bad assertion
+     #1456: Fix bug in SSA rewriter related to variables updated in loops.
+     #1487: Fix long runtime in Dead insertion elimination: Don't revist select phi nodes.
+     #1492: Aggressive dead code elimination can remove OpDecorateStringGOOGLE.
+     #1527: Fix inlining of functions having OpKill and OpUnreachable.
+     #1559: Fix assert failure in reduce-load-size pass.
+     #1556: Aggressive dead code elimination: Fix handling of OpCopyMemory.
  - Validator:
    - Check Vulkan built-in variables
    - Check Vulkan-specific atomic result type rule.
    - Relax control barrier check for SPIR-V 1.3.  Fixes #1427
    - Check OpPhi.
+   - Check OpMemoryModel.
    - Stop checking sizes derived from spec-constants.
    - Re-enable checks for OpUConvert.
+   - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader.
+   - Validate binary version for the given target environment.
+   - Add tests for OpBranch checks.
+   - Vulkan 1.1: Check scope for non-uniform subgroup operations.
+   - Fix checks for SPV_AMD_gpu_shader_int16.
+   - Fix logical layout check for OpDecorateId.
+   - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer.
+   - Fixes:
+     #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class.
+     #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1.
+     #1472: Per-vertex variable validation fixes.
+     #1483: Valdiate barrier execution scopes for Vulkan 1.1.
  - Fixes:
    #898: Linker properly removes FuncParamAttr from imported symbols.
    #924, #1174: Fix handling of decoration groups in optimizer, linker.
-   #1404: Don't optimize away the compute compute workgroup size constant.
-   #1407: Remove a bad assertion
-   #1456: Fix bug in SSA rewriter related to variables updated in loops.
 
 v2018.2 2018-03-07
  - General: