remapper: do not eliminate interface variables in dce by default

this is done by counting op_entrypoint as a use/def
This commit is contained in:
GregF 2016-06-03 09:53:47 -06:00
Родитель 85b52f304d
Коммит 39d5e711a7
1 изменённых файлов: 11 добавлений и 2 удалений

Просмотреть файл

@ -926,8 +926,17 @@ namespace spv {
// Count function variable use // Count function variable use
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; } if (opCode == spv::OpVariable) {
return false; ++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]; } [&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }