mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-03 10:37:46 +00:00
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.
This commit is contained in:
committed by
Ron Evans
parent
f484dddbc2
commit
38f8cf7bee
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user