CMake: set stack size to 2MB for MSVC builds
authorHans Wennborg <hans@hanshq.net>
Thu, 17 Oct 2013 17:49:57 +0000 (17:49 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 17 Oct 2013 17:49:57 +0000 (17:49 +0000)
Compiling under Visual C++ 2012 with the default stack size of 1MB, the stack
overflows at a depth of 216 template instantiations, well before the 256
default limit. This patch modifies the default MSVC stack size to 2MB.

Patch by Yaron Keren!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192904 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/HandleLLVMOptions.cmake

index 2cec270e96ddb63a2fdc3eb20aad463c74e5307c..406342940618168f340ced3cb4f048af6125abc6 100644 (file)
@@ -153,6 +153,10 @@ endif()
 if( MSVC )
   include(ChooseMSVCCRT)
 
+  # Visual C++ default stack size is 1MB. This is not enough for clang to
+  # instantiate templates up to the default maximum depth allowed, 256.
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -STACK:2097152")
+
   if( MSVC10 )
     # MSVC 10 will complain about headers in the STL not being exported, but
     # will not complain in MSVC 11.