From 39d5e711a700170724352e09834108a0428e9ebf Mon Sep 17 00:00:00 2001
From: GregF <greg@LunarG.com>
Date: Fri, 3 Jun 2016 09:53:47 -0600
Subject: [PATCH] remapper: do not eliminate interface variables in dce by
 default

this is done by counting op_entrypoint as a use/def
---
 SPIRV/SPVRemapper.cpp | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 35dda17b7..1bbd58924 100755
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -926,8 +926,17 @@ namespace spv {
         // Count function variable use
         process(
             [&](spv::Op opCode, unsigned start) {
-                if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; }
-                return false;
+                if (opCode == spv::OpVariable) {
+                    ++varUseCount[asId(start+2)];
+                    return true;
+                } else if (opCode == spv::OpEntryPoint) {
+                    const int wordCount = asWordCount(start);
+                    for (int i = 4; i < wordCount; i++) {
+                        ++varUseCount[asId(start+i)];
+                    }
+                    return true;
+                } else
+                    return false;
             },
 
             [&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }
-- 
GitLab