r205095 - Driver: implement addClangWarningOptions

Richard Smith richard at metafoo.co.uk
Thu Apr 10 16:52:49 PDT 2014


On Sat, Mar 29, 2014 at 6:16 AM, Tim Northover <tnorthover at apple.com> wrote:

> Author: tnorthover
> Date: Sat Mar 29 08:16:12 2014
> New Revision: 205095
>
> URL: http://llvm.org/viewvc/llvm-project?rev=205095&view=rev
> Log:
> Driver: implement addClangWarningOptions
>
> This function allows certain platforms to enable or disable diagnostics
> by default.
>

Have you considered putting this information into the .td files for the
diagnostics? It doesn't seem worth doing so while we've only got a handful
of these, but if we're going to get many more, it seems like something to
consider.


> Modified:
>     cfe/trunk/include/clang/Driver/ToolChain.h
>     cfe/trunk/lib/Driver/ToolChain.cpp
>     cfe/trunk/lib/Driver/ToolChains.cpp
>     cfe/trunk/lib/Driver/ToolChains.h
>     cfe/trunk/lib/Driver/Tools.cpp
>
> Modified: cfe/trunk/include/clang/Driver/ToolChain.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/ToolChain.h?rev=205095&r1=205094&r2=205095&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/ToolChain.h (original)
> +++ cfe/trunk/include/clang/Driver/ToolChain.h Sat Mar 29 08:16:12 2014
> @@ -283,6 +283,9 @@ public:
>    virtual void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
>                                       llvm::opt::ArgStringList &CC1Args)
> const;
>
> +  /// \brief Add warning options that need to be passed to cc1 for this
> target.
> +  virtual void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args)
> const;
> +
>    // GetRuntimeLibType - Determine the runtime library type to use with
> the
>    // given compilation arguments.
>    virtual RuntimeLibType
>
> Modified: cfe/trunk/lib/Driver/ToolChain.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChain.cpp?rev=205095&r1=205094&r2=205095&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChain.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChain.cpp Sat Mar 29 08:16:12 2014
> @@ -250,6 +250,8 @@ void ToolChain::addClangTargetOptions(co
>                                        ArgStringList &CC1Args) const {
>  }
>
> +void ToolChain::addClangWarningOptions(ArgStringList &CC1Args) const {}
> +
>  ToolChain::RuntimeLibType ToolChain::GetRuntimeLibType(
>    const ArgList &Args) const
>  {
>
> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=205095&r1=205094&r2=205095&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChains.cpp Sat Mar 29 08:16:12 2014
> @@ -242,6 +242,20 @@ DarwinClang::DarwinClang(const Driver &D
>      getProgramPaths().push_back(getDriver().Dir);
>  }
>
> +void DarwinClang::addClangWarningOptions(ArgStringList &CC1Args) const {
> +  // For iOS, 64-bit, promote certain warnings to errors.
> +  if (!isTargetMacOS() && getTriple().isArch64Bit()) {
> +    // Always enable -Wdeprecated-objc-isa-usage and promote it
> +    // to an error.
> +    CC1Args.push_back("-Wdeprecated-objc-isa-usage");
> +    CC1Args.push_back("-Werror=deprecated-objc-isa-usage");
> +
> +    // Also error about implicit function declarations, as that
> +    // can impact calling conventions.
> +    CC1Args.push_back("-Werror=implicit-function-declaration");
> +  }
> +}
> +
>  /// \brief Determine whether Objective-C automated reference counting is
>  /// enabled.
>  static bool isObjCAutoRefCount(const ArgList &Args) {
>
> Modified: cfe/trunk/lib/Driver/ToolChains.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=205095&r1=205094&r2=205095&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.h (original)
> +++ cfe/trunk/lib/Driver/ToolChains.h Sat Mar 29 08:16:12 2014
> @@ -488,6 +488,8 @@ public:
>    AddCCKextLibArgs(const llvm::opt::ArgList &Args,
>                     llvm::opt::ArgStringList &CmdArgs) const override;
>
> +  virtual void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args)
> const;
> +
>    void
>    AddLinkARCArgs(const llvm::opt::ArgList &Args,
>                   llvm::opt::ArgStringList &CmdArgs) const override;
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=205095&r1=205094&r2=205095&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Sat Mar 29 08:16:12 2014
> @@ -2116,6 +2116,11 @@ void Clang::ConstructJob(Compilation &C,
>    std::string TripleStr =
> getToolChain().ComputeEffectiveClangTriple(Args);
>    CmdArgs.push_back(Args.MakeArgString(TripleStr));
>
> +  // Push all default warning arguments that are specific to
> +  // the given target.  These come before user provided warning options
> +  // are provided.
> +  getToolChain().addClangWarningOptions(CmdArgs);
> +
>    // Select the appropriate action.
>    RewriteKind rewriteKind = RK_None;
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140410/728130bd/attachment.html>


More information about the cfe-commits mailing list