diff options
| author | Reid Kleckner <reid@kleckner.net> | 2014-04-09 20:07:39 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2014-04-09 20:07:39 +0000 |
| commit | 2a24e3ad86224459449ee1006f9ef8c1062558ee (patch) | |
| tree | 24de1585b44e93c6fb2206dc2048a8703075e187 /clang/lib/Driver/Tools.cpp | |
| parent | 0b1a5584d6bb7794383ac5ca466868e92beb9eab (diff) | |
| download | bcm5719-llvm-2a24e3ad86224459449ee1006f9ef8c1062558ee.tar.gz bcm5719-llvm-2a24e3ad86224459449ee1006f9ef8c1062558ee.zip | |
clang-cl: Disable TBAA by default for MSVC compatibility
MSVC doesn't have an option to enable TBAA, so make -fstrict-aliasing
and -fno-strict-aliasing available in clang-cl.
llvm-svn: 205924
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index e65b6e1782c..28702836de1 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -2508,8 +2508,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // enabled. This alias option is being used to simplify the hasFlag logic. OptSpecifier StrictAliasingAliasOption = OFastEnabled ? options::OPT_Ofast : options::OPT_fstrict_aliasing; + // We turn strict aliasing off by default if we're in CL mode, since MSVC + // doesn't do any TBAA. + bool TBAAOnByDefault = !getToolChain().getDriver().IsCLMode(); if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption, - options::OPT_fno_strict_aliasing, true)) + options::OPT_fno_strict_aliasing, TBAAOnByDefault)) CmdArgs.push_back("-relaxed-aliasing"); if (!Args.hasFlag(options::OPT_fstruct_path_tbaa, options::OPT_fno_struct_path_tbaa)) |

