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

llvm-svn: 232860
This commit is contained in:
Filipe Cabecinhas 2015-03-20 23:33:23 +00:00
parent 008067aca9
commit 3e707d98ee
2 changed files with 5 additions and 1 deletions

View File

@ -48,7 +48,7 @@ static ToolChain::RTTIMode CalculateRTTIMode(const ArgList &Args,
// On the PS4, turning on c++ exceptions turns on rtti. // On the PS4, turning on c++ exceptions turns on rtti.
// We're assuming that, if we see -fexceptions, rtti gets turned on. // 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_fcxx_exceptions, options::OPT_fno_cxx_exceptions,
options::OPT_fexceptions, options::OPT_fno_exceptions); options::OPT_fexceptions, options::OPT_fno_exceptions);
if (Exceptions && if (Exceptions &&

View File

@ -3,6 +3,10 @@
// No warnings/errors should be emitted for unknown, except if combining // No warnings/errors should be emitted for unknown, except if combining
// the vptr sanitizer with -fno-rtti // 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 -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 // RUN: %clang -### -c -frtti -fno-rtti %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RTTI %s