summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-05-23 18:48:37 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-05-23 18:48:37 +0000
commitc3658d2f24ad7d64713ddf3b921de4f75b1838d3 (patch)
treeced6f1d99ae747a3d5b3d23a3d45210c66d11b95 /clang/lib/Driver
parent1577f1f484a21ed700327fd2b928097f6ffda021 (diff)
downloadbcm5719-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.cpp11
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,
OpenPOWER on IntegriCloud