]> granicus.if.org Git - clang/commitdiff
Add DidCallStackSave variable to CodeGenFunction.
authorAnders Carlsson <andersca@mac.com>
Mon, 9 Feb 2009 20:20:56 +0000 (20:20 +0000)
committerAnders Carlsson <andersca@mac.com>
Mon, 9 Feb 2009 20:20:56 +0000 (20:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64156 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CodeGenFunction.cpp
lib/CodeGen/CodeGenFunction.h

index 5e005b4c55e17d8931e903abe398a1e5c38cb7b0..153fcc8ec478194582216fe5692e1656d9086e25 100644 (file)
@@ -144,6 +144,7 @@ void CodeGenFunction::StartFunction(const Decl *D, QualType RetTy,
                                     llvm::Function *Fn,
                                     const FunctionArgList &Args,
                                     SourceLocation StartLoc) {
+  DidCallStackSave = false;
   CurFuncDecl = D;
   FnRetTy = RetTy;
   CurFn = Fn;
index 58d3a73433be5152419d1a997aaa712f5277eb3d..03230949e5ace1aafc34808fb007f4ba00614778 100644 (file)
@@ -260,6 +260,10 @@ private:
   /// which the stack depth changes.
   llvm::Value *StackDepth;
 
+  /// DidCallStackSave - Whether llvm.stacksave has been called. Used to avoid
+  /// calling llvm.stacksave for multiple VLAs in the same scope.
+  bool DidCallStackSave;
+  
   /// StackSaveValues - A stack(!) of stack save values. When a new scope is
   /// entered, a null is pushed on this stack. If a VLA is emitted, then the
   /// return value of llvm.stacksave() is stored at the top of this stack.