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?
Этот коммит содержится в:
родитель
0b8beb77c1
коммит
cb0a148cd7
1 изменённых файлов: 8 добавлений и 4 удалений
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче