From 100901574b90d9ef0ee9edc49fd896a47bb716c0 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Fri, 16 Nov 2018 23:02:09 +0100 Subject: [PATCH] compiler: let escape analysis look across bitcasts This is necessary to avoid memory allocation in the math packages in some functions. --- compiler/optimizer.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/optimizer.go b/compiler/optimizer.go index 2e3aabfe..06c0aae6 100644 --- a/compiler/optimizer.go +++ b/compiler/optimizer.go @@ -207,6 +207,11 @@ func (c *Compiler) doesEscape(value llvm.Value) bool { if c.doesEscape(use) { return true } + } else if use.IsABitCastInst() != nilValue { + // A bitcast escapes if the casted-to value escapes. + if c.doesEscape(use) { + return true + } } else if use.IsALoadInst() != nilValue { // Load does not escape. } else if use.IsAStoreInst() != nilValue {