diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-02-29 01:40:30 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-02-29 01:40:30 +0000 |
commit | 387fccd8dad1ab16f4d7332e8462b88bcbb2b26e (patch) | |
tree | fbce1addcd2348bd18fc5431bba2843d0a9464b2 /clang/lib/Driver/Tools.cpp | |
parent | 8b5a7419b85b1043c18b674271425a9f71c1dd1f (diff) | |
download | bcm5719-llvm-387fccd8dad1ab16f4d7332e8462b88bcbb2b26e.tar.gz bcm5719-llvm-387fccd8dad1ab16f4d7332e8462b88bcbb2b26e.zip |
[clang-cl] /EHc should not have an effect on /EHa
This matches behavior with MSVC.
llvm-svn: 262197
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index d81b0ae200c..2841dab169e 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -5829,12 +5829,16 @@ static EHFlags parseClangCLEHFlags(const Driver &D, const ArgList &Args) { switch (EHVal[I]) { case 'a': EH.Asynch = maybeConsumeDash(EHVal, I); + if (EH.Asynch) + EH.Synch = false; continue; case 'c': EH.NoUnwindC = maybeConsumeDash(EHVal, I); continue; case 's': EH.Synch = maybeConsumeDash(EHVal, I); + if (EH.Synch) + EH.Asynch = false; continue; default: break; @@ -5932,7 +5936,7 @@ void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs, if (EH.Synch || EH.Asynch) { CmdArgs.push_back("-fcxx-exceptions"); CmdArgs.push_back("-fexceptions"); - if (EH.NoUnwindC) + if (EH.Synch && EH.NoUnwindC) CmdArgs.push_back("-fexternc-nounwind"); } |