[SIL] Key consume addr checking off var_decl attr.

Previously, the lexical attribute on allock_stack instructions was used.
This doesn't work for values without lexical lifetimes which are
consumed, e.g. stdlib CoW types.  Here, the new var_decl attribute on
alloc_stack is keyed off of instead.  This flag encodes exactly that a
value corresponds to a source-level VarDecl, which is the condition
under which checking needs to run.
This commit is contained in:
Nate Chandler
2024-03-08 21:12:00 -08:00
parent 08a832b803
commit a54a8ddaa3
5 changed files with 24 additions and 19 deletions

View File

@@ -9,7 +9,7 @@ func main() {
// CHECK-SIL-DAG: debug_value {{.*}}: $Int, let, name "x"
// CHECK-DAG: DILocalVariable(name: "x"
let x = 10
// CHECK-SIL-DAG: alloc_stack $Int, var, name "y"
// CHECK-SIL-DAG: alloc_stack [var_decl] $Int, var, name "y"
// CHECK-DAG: DILocalVariable(name: "y"
var y = 10
// The expression x+y may become constant folded.