Make ProgramImpl::compileProgramExecutables D3D-only.

Finally we can isolate this method into the D3D-only code, and
remove the interface from ProgramImpl.

BUG=angleproject:1123

Change-Id: I253b15d44d4cf8bbb5dbeaa78bbcc431a5267bf7
Reviewed-on: https://chromium-review.googlesource.com/293765
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp
index f470818..77ddc06 100644
--- a/src/libANGLE/Program.cpp
+++ b/src/libANGLE/Program.cpp
@@ -311,22 +311,11 @@
         return Error(GL_NO_ERROR);
     }
 
-    int registers;
-    rx::LinkResult result =
-        mProgram->link(data, mInfoLog, mData.mAttachedFragmentShader, mData.mAttachedVertexShader,
-                       &registers, &mOutputVariables);
-    if (result.error.isError() || !result.linkSuccess)
-    {
-        return result.error;
-    }
+    rx::LinkResult result = mProgram->link(data, mInfoLog, mData.mAttachedFragmentShader,
+                                           mData.mAttachedVertexShader, &mOutputVariables);
 
-    // TODO: The concept of "executables" is D3D only, and as such this belongs in ProgramD3D. It must be called,
-    // however, last in this function, so it can't simply be moved to ProgramD3D::link without further shuffling.
-    result = mProgram->compileProgramExecutables(mInfoLog, registers);
     if (result.error.isError() || !result.linkSuccess)
     {
-        mInfoLog << "Failed to create D3D shaders.";
-        unlink(false);
         return result.error;
     }