Fix not rewriting else-if blocks.

We would miss expanding the else-if clauses in a chain
of selection statements.

BUG=346463
BUG=391697

Change-Id: Iee644b875cf68d0ed3dc0b73542efc49ecb23242
Reviewed-on: https://chromium-review.googlesource.com/206822
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/compiler/translator/RewriteElseBlocks.cpp b/src/compiler/translator/RewriteElseBlocks.cpp
index 48e87cd..8a9e29e 100644
--- a/src/compiler/translator/RewriteElseBlocks.cpp
+++ b/src/compiler/translator/RewriteElseBlocks.cpp
@@ -48,6 +48,14 @@
                 TIntermSelection *selection = statement->getAsSelectionNode();
                 if (selection && selection->getFalseBlock() != NULL)
                 {
+                    // Check for if / else if
+                    TIntermSelection *elseIfBranch = selection->getFalseBlock()->getAsSelectionNode();
+                    if (elseIfBranch)
+                    {
+                        selection->replaceChildNode(elseIfBranch, rewriteSelection(elseIfBranch));
+                        delete elseIfBranch;
+                    }
+
                     node->getSequence()[statementIndex] = rewriteSelection(selection);
                     delete selection;
                 }