compiler: fix map optimization

Not all uses of a map are call instructions. Don't assume they are.
TODO: investigate these uses and see whether they might be eliminated?
Этот коммит содержится в:
Ayke van Laethem 2018-10-24 12:37:47 +02:00
родитель 0b8beb77c1
коммит cb0a148cd7
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED

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

@ -69,10 +69,14 @@ func (c *Compiler) OptimizeMaps() {
unknownUses := false // are there any uses other than setting a value?
for _, use := range getUses(makeInst) {
switch use.CalledValue() {
case hashmapBinarySet, hashmapStringSet:
updateInsts = append(updateInsts, use)
default:
if use := use.IsACallInst(); !use.IsNil() {
switch use.CalledValue() {
case hashmapBinarySet, hashmapStringSet:
updateInsts = append(updateInsts, use)
default:
unknownUses = true
}
} else {
unknownUses = true
}
}