From fbb819f555022d1cca8185404875582113480c09 Mon Sep 17 00:00:00 2001 From: Filipe Cabecinhas Date: Fri, 20 Mar 2015 23:33:23 +0000 Subject: [PATCH] Don't claim exception related arguments when looking at RTTIMode Summary: We were claiming the -f*exceptions arguments when looking for the RTTIMode. This makes us not warn about unused arguments if compiling a C file with -fcxx-exceptions. This patch fixes it by not claiming the exception-related arguments at that point. Reviewers: rsmith, samsonov Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D8507 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232860 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/ToolChain.cpp | 2 +- test/Driver/rtti-options.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp index d71b903ead..52e8603851 100644 --- a/lib/Driver/ToolChain.cpp +++ b/lib/Driver/ToolChain.cpp @@ -48,7 +48,7 @@ static ToolChain::RTTIMode CalculateRTTIMode(const ArgList &Args, // On the PS4, turning on c++ exceptions turns on rtti. // We're assuming that, if we see -fexceptions, rtti gets turned on. - Arg *Exceptions = Args.getLastArg( + Arg *Exceptions = Args.getLastArgNoClaim( options::OPT_fcxx_exceptions, options::OPT_fno_cxx_exceptions, options::OPT_fexceptions, options::OPT_fno_exceptions); if (Exceptions && diff --git a/test/Driver/rtti-options.cpp b/test/Driver/rtti-options.cpp index a14953ebfb..087ee21623 100644 --- a/test/Driver/rtti-options.cpp +++ b/test/Driver/rtti-options.cpp @@ -3,6 +3,10 @@ // No warnings/errors should be emitted for unknown, except if combining // the vptr sanitizer with -fno-rtti +// Special case: -fcxx-exceptions in C code should warn about unused arguments +// RUN: %clang -x c -### -c -fcxx-exceptions %s 2>&1 | FileCheck -check-prefix=CHECK-UNUSED %s +// CHECK-UNUSED: warning: argument unused during compilation: '-fcxx-exceptions' + // RUN: %clang -### -c -fno-rtti -frtti %s 2>&1 | FileCheck -check-prefix=CHECK-RTTI %s // RUN: %clang -### -c -frtti -fno-rtti %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RTTI %s -- 2.40.0