Author: hans Date: Wed Jul 31 15:51:53 2013 New Revision: 187527 URL: http://llvm.org/viewvc/llvm-project?rev=187527&view=rev Log: clang-cl: add the /c, /W0 and /W1 options
This adds a few more clang-cl options. It also exposes two core clang options to the clang-cl mode: we need to be able to claim --driver_mode so it doesn't show up as unused in cl mode, and we need -### for tests. Differential Revision: http://llvm-reviews.chandlerc.com/D1232 Added: cfe/trunk/test/Driver/cl-options.c Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td cfe/trunk/include/clang/Driver/Options.h cfe/trunk/include/clang/Driver/Options.td cfe/trunk/lib/Driver/Driver.cpp Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CLCompatOptions.td?rev=187527&r1=187526&r2=187527&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/CLCompatOptions.td (original) +++ cfe/trunk/include/clang/Driver/CLCompatOptions.td Wed Jul 31 15:51:53 2013 @@ -12,10 +12,14 @@ //===----------------------------------------------------------------------===// def cl_Group : OptionGroup<"<clang-cl options>">, - HelpText<"CL.EXE COMPATIBILITY OPTIONS">; + HelpText<"CL.EXE COMPATIBILITY OPTIONS">; class CLFlag<string name> : Option<["/", "-"], name, KIND_FLAG>, - Group<cl_Group>, Flags<[CLOption]>; + Group<cl_Group>, Flags<[CLOption, DriverOption]>; def _QUESTION : CLFlag<"?">, Alias<help>, HelpText<"Display available options">; -def cl_help : CLFlag<"help">, Alias<help>, HelpText<"Display available options">; +def _SLASH_c : CLFlag<"c">, HelpText<"Compile only">, Alias<c>; +def _SLASH_help : CLFlag<"help">, Alias<help>, + HelpText<"Display available options">; +def _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">, Alias<w>; +def _SLASH_W1 : CLFlag<"W1">, HelpText<"Enable -Wall">, Alias<Wall>; Modified: cfe/trunk/include/clang/Driver/Options.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.h?rev=187527&r1=187526&r2=187527&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.h (original) +++ cfe/trunk/include/clang/Driver/Options.h Wed Jul 31 15:51:53 2013 @@ -27,9 +27,10 @@ enum ClangFlags { LinkerInput = (1 << 5), NoArgumentUnused = (1 << 6), Unsupported = (1 << 7), - CLOption = (1 << 8), - CC1Option = (1 << 9), - NoDriverOption = (1 << 10) + CoreOption = (1 << 8), + CLOption = (1 << 9), + CC1Option = (1 << 10), + NoDriverOption = (1 << 11) }; enum ID { Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=187527&r1=187526&r2=187527&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Wed Jul 31 15:51:53 2013 @@ -33,6 +33,10 @@ def NoArgumentUnused : OptionFlag; // lines that use it. def Unsupported : OptionFlag; +// CoreOption - This is considered a "core" Clang option, available in both +// clang and clang-cl modes. +def CoreOption : OptionFlag; + // CLOption - This is a cl.exe compatibility option. Options with this flag // are made available when the driver is running in CL compatibility mode. def CLOption : OptionFlag; @@ -98,6 +102,7 @@ def clang_ignored_m_Group : OptionGroup< // substitutions: // _ => __ // - => _ +// / => _SLASH // # => _HASH // ? => _QUESTION // , => _COMMA @@ -116,7 +121,8 @@ def internal_debug_Group : class InternalDriverOpt : Group<internal_driver_Group>, Flags<[DriverOption, HelpHidden]>; -def driver_mode : Joined<["--"], "driver-mode=">, InternalDriverOpt, +def driver_mode : Joined<["--"], "driver-mode=">, Group<internal_driver_Group>, + Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', or 'cl'">; def ccc_gcc_name : Separate<["-"], "ccc-gcc-name">, InternalDriverOpt, HelpText<"Name for native GCC compiler">, @@ -171,7 +177,7 @@ def ccc_ : Joined<["-"], "ccc-">, Group< // Standard Options -def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption]>, +def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>, HelpText<"Print the commands to run for this compilation">; // The '--' option is here for the sake of compatibility with gcc, but is // being ignored by the driver. Modified: cfe/trunk/lib/Driver/Driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=187527&r1=187526&r2=187527&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Driver.cpp (original) +++ cfe/trunk/lib/Driver/Driver.cpp Wed Jul 31 15:51:53 2013 @@ -1883,9 +1883,9 @@ std::pair<unsigned, unsigned> Driver::ge unsigned ExcludedFlagsBitmask = 0; if (Mode == CLMode) { - // Only allow CL options. - // FIXME: Also allow "core" Clang options. - IncludedFlagsBitmask = options::CLOption; + // Include CL and Core options. + IncludedFlagsBitmask |= options::CLOption; + IncludedFlagsBitmask |= options::CoreOption; } else { ExcludedFlagsBitmask |= options::CLOption; } Added: cfe/trunk/test/Driver/cl-options.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=187527&view=auto ============================================================================== --- cfe/trunk/test/Driver/cl-options.c (added) +++ cfe/trunk/test/Driver/cl-options.c Wed Jul 31 15:51:53 2013 @@ -0,0 +1,10 @@ +// Don't attempt slash switches on msys bash. +// REQUIRES: shell-preserves-root + +// RUN: %clang_cl /c /W0 %s -### 2>&1 | FileCheck -check-prefix=W0 %s +// W0-DAG: -c +// W0-DAG: -w + +// RUN: %clang_cl /c /W1 %s -### 2>&1 | FileCheck -check-prefix=W1 %s +// W1-DAG: -c +// W1-DAG: -Wall _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
