From e3a5fc33bcba90ed44880000bacd30df0001cc53 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru <sylvestre@debian.org> Date: Tue, 1 Jul 2014 17:24:27 +0000 Subject: [PATCH] GCC compatibility: Ignore -finput_charset=UTF-8 argument. It is the default in Clang. Currently, we fail with an error. Reviewers: rafael Reviewed By: rafael Subscribers: rnk, cfe-commits Differential Revision: http://reviews.llvm.org/D4347 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212110 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Options.td | 1 + lib/Driver/Tools.cpp | 8 ++++++++ test/Driver/clang_f_opts.c | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 95f13cc3845..396b02fc67f 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -559,6 +559,7 @@ def filelist : Separate<["-"], "filelist">, Flags<[LinkerInput]>; def : Flag<["-"], "findirect-virtual-calls">, Alias<fapple_kext>; def finline_functions : Flag<["-"], "finline-functions">, Group<clang_ignored_f_Group>; def finline : Flag<["-"], "finline">, Group<clang_ignored_f_Group>; +def finput_charset_EQ : Joined<["-"], "finput-charset=">, Group<f_Group>; def finstrument_functions : Flag<["-"], "finstrument-functions">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Generate calls to instrument function entry and exit">; def : Flag<["-"], "fkeep-inline-functions">, Group<clang_ignored_f_Group>; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c7211686e94..82381679182 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3911,6 +3911,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, D.Diag(diag::err_drv_clang_unsupported) << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args); + // -finput_charset=UTF-8 is default. Reject others + if (Arg *inputCharset = Args.getLastArg( + options::OPT_finput_charset_EQ)) { + StringRef value = inputCharset->getValue(); + if (value != "UTF-8") + D.Diag(diag::err_drv_invalid_value) << inputCharset->getAsString(Args) << value; + } + // -fcaret-diagnostics is default. if (!Args.hasFlag(options::OPT_fcaret_diagnostics, options::OPT_fno_caret_diagnostics, true)) diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index c88ced05ac3..664ee8a3a4f 100644 --- a/test/Driver/clang_f_opts.c +++ b/test/Driver/clang_f_opts.c @@ -129,6 +129,9 @@ // RUN: %clang -S -O20 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-O %s // CHECK-INVALID-O: warning: optimization level '-O20' is unsupported; using '-O3' instead +// RUN: %clang -### -S -finput-charset=iso-8859-1 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-CHARSET %s +// CHECK-INVALID-CHARSET: error: invalid value 'iso-8859-1' in '-finput-charset=iso-8859-1' + // Test that we don't error on these. // RUN: %clang -### -S -Werror \ // RUN: -falign-functions -falign-functions=2 -fno-align-functions \ @@ -140,6 +143,7 @@ // RUN: -fgcse -fno-gcse \ // RUN: -fident -fno-ident \ // RUN: -fimplicit-templates -fno-implicit-templates \ +// RUN: -finput-charset=UTF-8 \ // RUN: -fivopts -fno-ivopts \ // RUN: -fnon-call-exceptions -fno-non-call-exceptions \ // RUN: -fpermissive -fno-permissive \ -- GitLab