compiler: imporove escape analysis to allow icmp
The icmp instruction is often used in nil checks, so this instruction happens very frequently now that TinyGo automatically inserts nil checks everywhere. Escape analysis would conservatively mark such pointers as escaping, which they obviously don't. This commit improves escape analysis to allow icmp instructions.
Этот коммит содержится в:
родитель
f484dddbc2
коммит
38f8cf7bee
1 изменённых файлов: 3 добавлений и 0 удалений
|
@ -281,6 +281,9 @@ func (c *Compiler) doesEscape(value llvm.Value) bool {
|
|||
if !c.hasFlag(use, value, "nocapture") {
|
||||
return true
|
||||
}
|
||||
} else if use.IsAICmpInst() != nilValue {
|
||||
// Comparing pointers don't let the pointer escape.
|
||||
// This is often a compiler-inserted nil check.
|
||||
} else {
|
||||
// Unknown instruction, might escape.
|
||||
return true
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче