[PATCH] Fix "#pragma clang __debug overflow_stack" for MSVC builds

Richard Smith richard at metafoo.co.uk
Thu Aug 28 14:39:45 PDT 2014


================
Comment at: lib/Lex/Pragma.cpp:928-932
@@ -927,6 +927,7 @@
 #endif
   static void DebugOverflowStack() {
+    void* StackUser = &StackUser;
     void (*volatile Self)() = DebugOverflowStack;
     Self();
   }
 #ifdef _MSC_VER
----------------
A smart compiler could still optimize out the stack usage here. How about using something that keeps all the stack memory live, such as:

  volatile void *Head;
  static void DebugOverflowStack(void *Curr = 0) {
    Head = Curr;
    DebugOverflowStack(&Curr);
  }

Hopefully MSVC doesn't optimize out stores to volatile globals...

http://reviews.llvm.org/D5109






More information about the cfe-commits mailing list