diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-05-23 18:48:37 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-05-23 18:48:37 +0000 |
| commit | c3658d2f24ad7d64713ddf3b921de4f75b1838d3 (patch) | |
| tree | ced6f1d99ae747a3d5b3d23a3d45210c66d11b95 /clang/lib/Driver | |
| parent | 1577f1f484a21ed700327fd2b928097f6ffda021 (diff) | |
| download | bcm5719-llvm-c3658d2f24ad7d64713ddf3b921de4f75b1838d3.tar.gz bcm5719-llvm-c3658d2f24ad7d64713ddf3b921de4f75b1838d3.zip | |
[Driver] Handle -fno-signed-char and -fno-unsigned-char
GCC maps -fno-unsigned-char to -fsigned-char and -fno-signed-char to
-funsigned-char.
llvm-svn: 238105
Diffstat (limited to 'clang/lib/Driver')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9b25cab9705..19236ebd53b 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -4151,9 +4151,16 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-fshort-enums"); // -fsigned-char is default. - if (!Args.hasFlag(options::OPT_fsigned_char, options::OPT_funsigned_char, - isSignedCharDefault(getToolChain().getTriple()))) + if (Arg *A = Args.getLastArg( + options::OPT_fsigned_char, options::OPT_fno_signed_char, + options::OPT_funsigned_char, options::OPT_fno_unsigned_char)) { + if (A->getOption().matches(options::OPT_funsigned_char) || + A->getOption().matches(options::OPT_fno_signed_char)) { + CmdArgs.push_back("-fno-signed-char"); + } + } else if (!isSignedCharDefault(getToolChain().getTriple())) { CmdArgs.push_back("-fno-signed-char"); + } // -fuse-cxa-atexit is default. if (!Args.hasFlag(options::OPT_fuse_cxa_atexit, |

