Skip to content

Commit

Permalink
[Driver] Automatically enable -munwind-tables if -fseh-exceptions is …
Browse files Browse the repository at this point in the history
…enabled

For targets where SEH exceptions are used by default (on MinGW,
only x86_64 so far), -munwind-tables are added automatically. If
-fseh-exeptions is enabled on a target where SEH exeptions are
availble but not enabled by default yet (aarch64), we need to
pass -munwind-tables if -fseh-exceptions was specified.

Differential Revision: https://reviews.llvm.org/D55749

llvm-svn: 349452
  • Loading branch information
mstorsjo committed Dec 18, 2018
1 parent 8f0cb9c commit 56f9c81
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
6 changes: 6 additions & 0 deletions clang/lib/Driver/ToolChains/MinGW.cpp
Expand Up @@ -429,6 +429,12 @@ bool toolchains::MinGW::HasNativeLLVMSupport() const {
}

bool toolchains::MinGW::IsUnwindTablesDefault(const ArgList &Args) const {
Arg *ExceptionArg = Args.getLastArg(options::OPT_fsjlj_exceptions,
options::OPT_fseh_exceptions,
options::OPT_fdwarf_exceptions);
if (ExceptionArg &&
ExceptionArg->getOption().matches(options::OPT_fseh_exceptions))
return true;
return getArch() == llvm::Triple::x86_64;
}

Expand Down
3 changes: 3 additions & 0 deletions clang/test/Driver/windows-exceptions.cpp
Expand Up @@ -2,8 +2,11 @@
// RUN: %clang -target x86_64-windows-msvc -c %s -### 2>&1 | FileCheck -check-prefix=MSVC %s
// RUN: %clang -target i686-windows-gnu -c %s -### 2>&1 | FileCheck -check-prefix=MINGW-DWARF %s
// RUN: %clang -target x86_64-windows-gnu -c %s -### 2>&1 | FileCheck -check-prefix=MINGW-SEH %s
// RUN: %clang -target aarch64-windows-gnu -c %s -### 2>&1 | FileCheck -check-prefix=MINGW-DWARF %s
// RUN: %clang -target aarch64-windows-gnu -fseh-exceptions -c %s -### 2>&1 | FileCheck -check-prefix=MINGW-SEH %s

MSVC-NOT: -fdwarf-exceptions
MSVC-NOT: -fseh-exceptions
MINGW-DWARF: -fdwarf-exceptions
MINGW-SEH: -munwind-tables
MINGW-SEH: -fseh-exceptions

0 comments on commit 56f9c81

Please sign in to comment.