From 57e1f39713a252a109d96817cc0c4ee1cff9fe68 Mon Sep 17 00:00:00 2001
From: Chris Lattner
+ declare sbyte *%llvm.stacksave() ++ +
+The 'llvm.stacksave' intrinsic is used to remember the current state of +the function stack, for use with +llvm.stackrestore. This is useful for implementing language +features like scoped automatic variable sized arrays in C99. +
+ ++This intrinsic returns a opaque pointer value that can be passed to llvm.stackrestore. When an +llvm.stackrestore intrinsic is executed with a value saved from +llvm.stacksave, it effectively restores the state of the stack to the +state it was in when the llvm.stacksave intrinsic executed. In +practice, this pops any alloca blocks from the stack +that were allocated after the llvm.stacksave was executed. +
+ ++ declare void %llvm.stackrestore(sbyte* %ptr) ++ +
+The 'llvm.stackrestore' intrinsic is used to restore the state of +the function stack to the state it was in when the corresponding llvm.stacksave intrinsic executed. This is +useful for implementing language features like scoped automatic variable sized +arrays in C99. +
+ ++See the description for llvm.stacksave. +
+ +