From c3e18e3a904d83d0ea2f14fbce9bc18f6e327b79 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 20 Feb 2017 13:47:45 +0700 Subject: [PATCH 1/3] Omit leaf frame pointers on i686 architectures This is x86. See the root CMakeLists.txt file ``` elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") set(SWIFT_HOST_VARIANT_ARCH_default "i686") ``` --- cmake/modules/AddSwift.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index 68c501b650eeb..6dfbf966fd291 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -182,7 +182,7 @@ function(_add_variant_c_compile_flags) list(APPEND result "-O2") # Add -momit-leaf-frame-pointer on x86. - if("${CFLAGS_ARCH}" STREQUAL "i386" OR "${CFLAGS_ARCH}" STREQUAL "x86_64") + if("${CFLAGS_ARCH}" STREQUAL "i386" OR "${CFLAGS_ARCH}" STREQUAL "i686" OR "${CFLAGS_ARCH}" STREQUAL "x86_64") list(APPEND result "-momit-leaf-frame-pointer") endif() else() From dea14122a77cb57bdcf4bb1d36c3dd62d4fb09a8 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 20 Feb 2017 13:48:28 +0700 Subject: [PATCH 2/3] Use the correct flags to omit leaf frame pointers with clang-cl and MSVC --- cmake/modules/AddSwift.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index 6dfbf966fd291..b908b941351a2 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -181,9 +181,13 @@ function(_add_variant_c_compile_flags) if(optimized OR CFLAGS_FORCE_BUILD_OPTIMIZED) list(APPEND result "-O2") - # Add -momit-leaf-frame-pointer on x86. + # Omit leaf frame pointers on x86. if("${CFLAGS_ARCH}" STREQUAL "i386" OR "${CFLAGS_ARCH}" STREQUAL "i686" OR "${CFLAGS_ARCH}" STREQUAL "x86_64") - list(APPEND result "-momit-leaf-frame-pointer") + if(NOT SWIFT_COMPILER_IS_MSVC_LIKE) + list(APPEND result "-momit-leaf-frame-pointer") + else() + list(APPEND result "/Oy") + endif() endif() else() list(APPEND result "-O0") From 0191dde4c35de742129fc3451e3feae98ae9c55c Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 20 Feb 2017 13:48:54 +0700 Subject: [PATCH 3/3] Don't omit leaf frame pointers on 64 bit architectures --- cmake/modules/AddSwift.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake index b908b941351a2..8d4b0ce000ff4 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -182,7 +182,7 @@ function(_add_variant_c_compile_flags) list(APPEND result "-O2") # Omit leaf frame pointers on x86. - if("${CFLAGS_ARCH}" STREQUAL "i386" OR "${CFLAGS_ARCH}" STREQUAL "i686" OR "${CFLAGS_ARCH}" STREQUAL "x86_64") + if("${CFLAGS_ARCH}" STREQUAL "i386" OR "${CFLAGS_ARCH}" STREQUAL "i686") if(NOT SWIFT_COMPILER_IS_MSVC_LIKE) list(APPEND result "-momit-leaf-frame-pointer") else()