r223455 - Driver: Objective-C should respect -fno-exceptions

Nico Weber thakis at chromium.org
Fri Dec 5 17:12:34 PST 2014


On Fri, Dec 5, 2014 at 1:00 PM, David Majnemer <david.majnemer at gmail.com>
wrote:

>
>
> On Fri, Dec 5, 2014 at 12:37 PM, Nico Weber <thakis at chromium.org> wrote:
>
>> On Fri, Dec 5, 2014 at 11:55 AM, David Majnemer <david.majnemer at gmail.com
>> > wrote:
>>
>>>
>>>
>>> On Fri, Dec 5, 2014 at 11:47 AM, Nico Weber <thakis at chromium.org> wrote:
>>>
>>>> On Fri, Dec 5, 2014 at 11:41 AM, David Majnemer <
>>>> david.majnemer at gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Fri, Dec 5, 2014 at 11:25 AM, Nico Weber <thakis at chromium.org>
>>>>> wrote:
>>>>>
>>>>>> On Fri, Dec 5, 2014 at 12:56 AM, David Majnemer <
>>>>>> david.majnemer at gmail.com> wrote:
>>>>>>
>>>>>>> Author: majnemer
>>>>>>> Date: Fri Dec  5 02:56:55 2014
>>>>>>> New Revision: 223455
>>>>>>>
>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=223455&view=rev
>>>>>>> Log:
>>>>>>> Driver: Objective-C should respect -fno-exceptions
>>>>>>>
>>>>>>> Clang attempted to replicate a GCC bug: -fobjc-exceptions forces
>>>>>>> -fexceptions to be enabled.  However, this has unintended effects and
>>>>>>> other awkard side effects that Clang doesn't "correctly" ape (e.g.
>>>>>>> it's
>>>>>>> impossible to turn off C++ exceptions in ObjC++ mode
>>>>>>
>>>>>>
>>>>>> What does "impossible to turn off exceptions" mean here?
>>>>>>
>>>>>> $ clang -c test.mm -fno-exceptions
>>>>>> test.mm:2:3: error: cannot use 'try' with exceptions disabled
>>>>>>   try {} catch (...) {}
>>>>>>   ^
>>>>>> 1 error generated.
>>>>>>
>>>>>
>>>>> You should try that with GCC, not clang :)
>>>>>
>>>>>
>>>>>>
>>>>>> ).
>>>>>>>
>>>>>>> Instead, -f[no]objc-exceptions and -f[no]cxx-exceptions now have an
>>>>>>> identical relationship with -f[no]exceptions.
>>>>>>>
>>>>>>
>>>>>> Did anyone from Apple review this? I thought the intention was that
>>>>>> -fno-exceptions disables c++ exceptions but keeps objc exceptions enabled,
>>>>>> since a) many people don't want c++ exceptions so they use -fno-exceptions
>>>>>> but b) cocoa uses exceptions so you can't really build without objc
>>>>>> exceptions.
>>>>>>
>>>>>> (I'm guessing I'm misunderstanding the patch somehow.)
>>>>>>
>>>>>
>>>>> The original code was trying to mimic GCC's behavior where
>>>>> -fobjc-exceptions _ignores_ -fno-exceptions.
>>>>> In GCC, this means that ObjC++ code cannot _ever_ opt out of C++
>>>>> exceptions because they don't have a -fcxx-exceptions, they just have
>>>>> -fexceptions.  Clang has a different dichotomy of exception
>>>>> enabling/disabling flags and it doesn't make sense to copy GCC's arbitrary
>>>>> behavior.
>>>>>
>>>>> If you want Objective-C exceptions but not C++ exceptions,
>>>>> -fobjc-exceptions -fno-cxx-exceptions should do the trick.
>>>>>
>>>>
>>>> I'm somewhat sure that when these flags got added they were explicitly
>>>> put in a state where -fno-exceptions disables c++ exceptions but not objc
>>>> exceptions, for the reason I mentioned above. I don't remember anything
>>>> about gcc compatibility.
>>>>
>>>
>>>
>>> http://llvm.org/klaus/clang/commit/d47ea693706f7b0ffa68e879b73a71609a337786/
>>>
>>> "Be compatible with GCC behavior in that -fno-exceptions *does not*
>>> disable Obj-C exceptions."
>>> "This is not necessarily sensible, but follows GCC."
>>>
>>>
>>>>
>>>> Most software doesn't use Objective-C, and when folks say
>>>> -fno-exceptions they mean "no c++ exceptions".
>>>>
>>>
>>> Sure, but that's not what -fno-exceptions does in GCC.
>>>
>>> In C, it disables -fexceptions; this will ensure that calls to
>>> __gcc_personality_v0 will not occur.  It also changes the behavior of
>>> __attribute__((cleanup)).
>>> In Objective C, it does nothing.
>>> In C++, it disables -fexceptions; this will ensure that calls to
>>> __gxx_personality_v0 will not occur. It makes it illegal to mention 'try'
>>> and 'catch'.
>>> In Objective C++, it does nothing.
>>>
>>
>> What gcc does for Objective-C nowadays doesn't matter much, almost
>> everyone building Objective-C code uses clang. The gcc behavior is
>> nonsensical, clang's previous behavior wasn't.
>>
>> This commit changes behavior fairly severely, without much of a
>> motivation from what I understand.
>>
>> I think clang's previous behavior makes a lot of sense: You have
>> -fno-exceptions in all your build files, and you want that to disable c++
>> exceptions on linux. You want the same flag mean the same thing on OS X in
>> .mm files. If you're writing regular mac apps, you can't realistically
>> disable objc exceptions as some framework apis use them.
>>
>> Having said that, from what I can tell this commit doesn't help with what
>> I think it was supposed to help with:
>>
>> $ ~/src/llvm-build/bin/clang -fno-exceptions -fobjc-exceptions
>> -fno-cxx-exceptions -E -dM -x objective-c++ /dev/null | grep EXCEP
>> #define OBJC_ZEROCOST_EXCEPTIONS 1
>> #define __EXCEPTIONS 1
>>
>
> The only thing __EXCEPTIONS really *reliably* corresponds to whether or
> not __attribute__((cleanup)) does special stuff if an exception is thrown.
> Why? Because __EXCEPTIONS *must* be set to 1 in 'C' mode if -fexceptions is
> enabled.
>

Code in the wild uses is to check if it's ok to use try / catch.


> -fobjc-exceptions enables this functionality in clang and gcc, both before
> *and* after my change.
>
> The best way to determine if C++ exceptions are available is
> __has_feature(cxx_exceptions).
>

>
>>
>>
>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Added:
>>>>>>>     cfe/trunk/test/Driver/exceptions.mm
>>>>>>> Removed:
>>>>>>>     cfe/trunk/test/Driver/exceptions.m
>>>>>>> Modified:
>>>>>>>     cfe/trunk/lib/Driver/Tools.cpp
>>>>>>>     cfe/trunk/test/Driver/rewrite-legacy-objc.m
>>>>>>>
>>>>>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=223455&r1=223454&r2=223455&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>>>>>>> +++ cfe/trunk/lib/Driver/Tools.cpp Fri Dec  5 02:56:55 2014
>>>>>>> @@ -1894,23 +1894,6 @@ static void getTargetFeatures(const Driv
>>>>>>>    }
>>>>>>>  }
>>>>>>>
>>>>>>> -static bool
>>>>>>> -shouldUseExceptionTablesForObjCExceptions(const ObjCRuntime
>>>>>>> &runtime,
>>>>>>> -                                          const llvm::Triple
>>>>>>> &Triple) {
>>>>>>> -  // We use the zero-cost exception tables for Objective-C if the
>>>>>>> non-fragile
>>>>>>> -  // ABI is enabled or when compiling for x86_64 and ARM on Snow
>>>>>>> Leopard and
>>>>>>> -  // later.
>>>>>>> -  if (runtime.isNonFragile())
>>>>>>> -    return true;
>>>>>>> -
>>>>>>> -  if (!Triple.isMacOSX())
>>>>>>> -    return false;
>>>>>>> -
>>>>>>> -  return (!Triple.isMacOSXVersionLT(10,5) &&
>>>>>>> -          (Triple.getArch() == llvm::Triple::x86_64 ||
>>>>>>> -           Triple.getArch() == llvm::Triple::arm));
>>>>>>> -}
>>>>>>> -
>>>>>>>  // exceptionSettings() exists to share the logic between -cc1 and
>>>>>>> linker
>>>>>>>  // invocations.
>>>>>>>  static bool exceptionSettings(const ArgList &Args, const
>>>>>>> llvm::Triple &Triple) {
>>>>>>> @@ -1947,15 +1930,21 @@ static void addExceptionArgs(const ArgLi
>>>>>>>    // Gather the exception settings from the command line arguments.
>>>>>>>    bool EH = exceptionSettings(Args, Triple);
>>>>>>>
>>>>>>> -  // Obj-C exceptions are enabled by default, regardless of
>>>>>>> -fexceptions. This
>>>>>>> -  // is not necessarily sensible, but follows GCC.
>>>>>>> -  if (types::isObjC(InputType) &&
>>>>>>> -      Args.hasFlag(options::OPT_fobjc_exceptions,
>>>>>>> -                   options::OPT_fno_objc_exceptions,
>>>>>>> -                   true)) {
>>>>>>> -    CmdArgs.push_back("-fobjc-exceptions");
>>>>>>> +  if (types::isObjC(InputType)) {
>>>>>>> +    bool ObjCExceptionsEnabled = true;
>>>>>>> +    if (Arg *A = Args.getLastArg(options::OPT_fobjc_exceptions,
>>>>>>> +                                 options::OPT_fno_objc_exceptions,
>>>>>>> +                                 options::OPT_fexceptions,
>>>>>>> +                                 options::OPT_fno_exceptions))
>>>>>>> +      ObjCExceptionsEnabled =
>>>>>>> +          A->getOption().matches(options::OPT_fobjc_exceptions) ||
>>>>>>> +          A->getOption().matches(options::OPT_fexceptions);
>>>>>>> +
>>>>>>> +    if (ObjCExceptionsEnabled) {
>>>>>>> +      CmdArgs.push_back("-fobjc-exceptions");
>>>>>>>
>>>>>>> -    EH |= shouldUseExceptionTablesForObjCExceptions(objcRuntime,
>>>>>>> Triple);
>>>>>>> +      EH = true;
>>>>>>> +    }
>>>>>>>    }
>>>>>>>
>>>>>>>    if (types::isCXX(InputType)) {
>>>>>>>
>>>>>>> Removed: cfe/trunk/test/Driver/exceptions.m
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/exceptions.m?rev=223454&view=auto
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/exceptions.m (original)
>>>>>>> +++ cfe/trunk/test/Driver/exceptions.m (removed)
>>>>>>> @@ -1,19 +0,0 @@
>>>>>>> -// RUN: %clang -target x86_64-apple-darwin9 \
>>>>>>> -// RUN:   -fsyntax-only -fno-exceptions %s
>>>>>>> -
>>>>>>> -void f1() {
>>>>>>> -  @throw @"A";
>>>>>>> -}
>>>>>>> -
>>>>>>> -void f0() {
>>>>>>> -  @try {
>>>>>>> -    f1();
>>>>>>> -  } @catch (id x) {
>>>>>>> -    ;
>>>>>>> -  }
>>>>>>> -}
>>>>>>> -
>>>>>>> -int main() {
>>>>>>> -  f0();
>>>>>>> -  return 0;
>>>>>>> -}
>>>>>>>
>>>>>>> Added: cfe/trunk/test/Driver/exceptions.mm
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/exceptions.mm?rev=223455&view=auto
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/exceptions.mm (added)
>>>>>>> +++ cfe/trunk/test/Driver/exceptions.mm Fri Dec  5 02:56:55 2014
>>>>>>> @@ -0,0 +1,6 @@
>>>>>>> +// RUN: %clang -target x86_64-apple-darwin11 -fno-exceptions %s -o
>>>>>>> - -### 2>&1 | \
>>>>>>> +// RUN:   FileCheck %s
>>>>>>> +
>>>>>>> +CHECK-NOT: "-fobjc-exceptions"
>>>>>>> +CHECK-NOT: "-fcxx-exceptions"
>>>>>>> +CHECK-NOT: "-fexceptions"
>>>>>>>
>>>>>>> Modified: cfe/trunk/test/Driver/rewrite-legacy-objc.m
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/rewrite-legacy-objc.m?rev=223455&r1=223454&r2=223455&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/rewrite-legacy-objc.m (original)
>>>>>>> +++ cfe/trunk/test/Driver/rewrite-legacy-objc.m Fri Dec  5 02:56:55
>>>>>>> 2014
>>>>>>> @@ -9,5 +9,5 @@
>>>>>>>  // RUN:   FileCheck -check-prefix=TEST1 %s
>>>>>>>  // RUN: %clang -no-canonical-prefixes -target
>>>>>>> i386-apple-macosx10.6.0 -rewrite-legacy-objc %s -o - -### 2>&1 | \
>>>>>>>  // RUN:   FileCheck -check-prefix=TEST2 %s
>>>>>>> -// TEST1: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fobjc-subscripting-legacy-runtime" "-fencode-extended-block-signature"
>>>>>>> "-fno-objc-infer-related-result-type" "-fobjc-exceptions"
>>>>>>> "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> -// TEST2: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type"
>>>>>>> "-fobjc-exceptions" "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> +// TEST1: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fobjc-subscripting-legacy-runtime" "-fencode-extended-block-signature"
>>>>>>> "-fno-objc-infer-related-result-type" "-fobjc-exceptions" "-fexceptions"
>>>>>>> "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> +// TEST2: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type"
>>>>>>> "-fobjc-exceptions" "-fexceptions" "-fmax-type-align=16"
>>>>>>> "-fdiagnostics-show-option"
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> cfe-commits mailing list
>>>>>>> cfe-commits at cs.uiuc.edu
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> On Fri, Dec 5, 2014 at 11:25 AM, Nico Weber <thakis at chromium.org>
>>>>> wrote:
>>>>>
>>>>>> On Fri, Dec 5, 2014 at 12:56 AM, David Majnemer <
>>>>>> david.majnemer at gmail.com> wrote:
>>>>>>
>>>>>>> Author: majnemer
>>>>>>> Date: Fri Dec  5 02:56:55 2014
>>>>>>> New Revision: 223455
>>>>>>>
>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=223455&view=rev
>>>>>>> Log:
>>>>>>> Driver: Objective-C should respect -fno-exceptions
>>>>>>>
>>>>>>> Clang attempted to replicate a GCC bug: -fobjc-exceptions forces
>>>>>>> -fexceptions to be enabled.  However, this has unintended effects and
>>>>>>> other awkard side effects that Clang doesn't "correctly" ape (e.g.
>>>>>>> it's
>>>>>>> impossible to turn off C++ exceptions in ObjC++ mode
>>>>>>
>>>>>>
>>>>>> What does "impossible to turn off exceptions" mean here?
>>>>>>
>>>>>> $ clang -c test.mm -fno-exceptions
>>>>>> test.mm:2:3: error: cannot use 'try' with exceptions disabled
>>>>>>   try {} catch (...) {}
>>>>>>   ^
>>>>>> 1 error generated.
>>>>>>
>>>>>> ).
>>>>>>>
>>>>>>> Instead, -f[no]objc-exceptions and -f[no]cxx-exceptions now have an
>>>>>>> identical relationship with -f[no]exceptions.
>>>>>>>
>>>>>>
>>>>>> Did anyone from Apple review this? I thought the intention was that
>>>>>> -fno-exceptions disables c++ exceptions but keeps objc exceptions enabled,
>>>>>> since a) many people don't want c++ exceptions so they use -fno-exceptions
>>>>>> but b) cocoa uses exceptions so you can't really build without objc
>>>>>> exceptions.
>>>>>>
>>>>>> (I'm guessing I'm misunderstanding the patch somehow.)
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Added:
>>>>>>>     cfe/trunk/test/Driver/exceptions.mm
>>>>>>> Removed:
>>>>>>>     cfe/trunk/test/Driver/exceptions.m
>>>>>>> Modified:
>>>>>>>     cfe/trunk/lib/Driver/Tools.cpp
>>>>>>>     cfe/trunk/test/Driver/rewrite-legacy-objc.m
>>>>>>>
>>>>>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=223455&r1=223454&r2=223455&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>>>>>>> +++ cfe/trunk/lib/Driver/Tools.cpp Fri Dec  5 02:56:55 2014
>>>>>>> @@ -1894,23 +1894,6 @@ static void getTargetFeatures(const Driv
>>>>>>>    }
>>>>>>>  }
>>>>>>>
>>>>>>> -static bool
>>>>>>> -shouldUseExceptionTablesForObjCExceptions(const ObjCRuntime
>>>>>>> &runtime,
>>>>>>> -                                          const llvm::Triple
>>>>>>> &Triple) {
>>>>>>> -  // We use the zero-cost exception tables for Objective-C if the
>>>>>>> non-fragile
>>>>>>> -  // ABI is enabled or when compiling for x86_64 and ARM on Snow
>>>>>>> Leopard and
>>>>>>> -  // later.
>>>>>>> -  if (runtime.isNonFragile())
>>>>>>> -    return true;
>>>>>>> -
>>>>>>> -  if (!Triple.isMacOSX())
>>>>>>> -    return false;
>>>>>>> -
>>>>>>> -  return (!Triple.isMacOSXVersionLT(10,5) &&
>>>>>>> -          (Triple.getArch() == llvm::Triple::x86_64 ||
>>>>>>> -           Triple.getArch() == llvm::Triple::arm));
>>>>>>> -}
>>>>>>> -
>>>>>>>  // exceptionSettings() exists to share the logic between -cc1 and
>>>>>>> linker
>>>>>>>  // invocations.
>>>>>>>  static bool exceptionSettings(const ArgList &Args, const
>>>>>>> llvm::Triple &Triple) {
>>>>>>> @@ -1947,15 +1930,21 @@ static void addExceptionArgs(const ArgLi
>>>>>>>    // Gather the exception settings from the command line arguments.
>>>>>>>    bool EH = exceptionSettings(Args, Triple);
>>>>>>>
>>>>>>> -  // Obj-C exceptions are enabled by default, regardless of
>>>>>>> -fexceptions. This
>>>>>>> -  // is not necessarily sensible, but follows GCC.
>>>>>>> -  if (types::isObjC(InputType) &&
>>>>>>> -      Args.hasFlag(options::OPT_fobjc_exceptions,
>>>>>>> -                   options::OPT_fno_objc_exceptions,
>>>>>>> -                   true)) {
>>>>>>> -    CmdArgs.push_back("-fobjc-exceptions");
>>>>>>> +  if (types::isObjC(InputType)) {
>>>>>>> +    bool ObjCExceptionsEnabled = true;
>>>>>>> +    if (Arg *A = Args.getLastArg(options::OPT_fobjc_exceptions,
>>>>>>> +                                 options::OPT_fno_objc_exceptions,
>>>>>>> +                                 options::OPT_fexceptions,
>>>>>>> +                                 options::OPT_fno_exceptions))
>>>>>>> +      ObjCExceptionsEnabled =
>>>>>>> +          A->getOption().matches(options::OPT_fobjc_exceptions) ||
>>>>>>> +          A->getOption().matches(options::OPT_fexceptions);
>>>>>>> +
>>>>>>> +    if (ObjCExceptionsEnabled) {
>>>>>>> +      CmdArgs.push_back("-fobjc-exceptions");
>>>>>>>
>>>>>>> -    EH |= shouldUseExceptionTablesForObjCExceptions(objcRuntime,
>>>>>>> Triple);
>>>>>>> +      EH = true;
>>>>>>> +    }
>>>>>>>    }
>>>>>>>
>>>>>>>    if (types::isCXX(InputType)) {
>>>>>>>
>>>>>>> Removed: cfe/trunk/test/Driver/exceptions.m
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/exceptions.m?rev=223454&view=auto
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/exceptions.m (original)
>>>>>>> +++ cfe/trunk/test/Driver/exceptions.m (removed)
>>>>>>> @@ -1,19 +0,0 @@
>>>>>>> -// RUN: %clang -target x86_64-apple-darwin9 \
>>>>>>> -// RUN:   -fsyntax-only -fno-exceptions %s
>>>>>>> -
>>>>>>> -void f1() {
>>>>>>> -  @throw @"A";
>>>>>>> -}
>>>>>>> -
>>>>>>> -void f0() {
>>>>>>> -  @try {
>>>>>>> -    f1();
>>>>>>> -  } @catch (id x) {
>>>>>>> -    ;
>>>>>>> -  }
>>>>>>> -}
>>>>>>> -
>>>>>>> -int main() {
>>>>>>> -  f0();
>>>>>>> -  return 0;
>>>>>>> -}
>>>>>>>
>>>>>>> Added: cfe/trunk/test/Driver/exceptions.mm
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/exceptions.mm?rev=223455&view=auto
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/exceptions.mm (added)
>>>>>>> +++ cfe/trunk/test/Driver/exceptions.mm Fri Dec  5 02:56:55 2014
>>>>>>> @@ -0,0 +1,6 @@
>>>>>>> +// RUN: %clang -target x86_64-apple-darwin11 -fno-exceptions %s -o
>>>>>>> - -### 2>&1 | \
>>>>>>> +// RUN:   FileCheck %s
>>>>>>> +
>>>>>>> +CHECK-NOT: "-fobjc-exceptions"
>>>>>>> +CHECK-NOT: "-fcxx-exceptions"
>>>>>>> +CHECK-NOT: "-fexceptions"
>>>>>>>
>>>>>>> Modified: cfe/trunk/test/Driver/rewrite-legacy-objc.m
>>>>>>> URL:
>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/rewrite-legacy-objc.m?rev=223455&r1=223454&r2=223455&view=diff
>>>>>>>
>>>>>>> ==============================================================================
>>>>>>> --- cfe/trunk/test/Driver/rewrite-legacy-objc.m (original)
>>>>>>> +++ cfe/trunk/test/Driver/rewrite-legacy-objc.m Fri Dec  5 02:56:55
>>>>>>> 2014
>>>>>>> @@ -9,5 +9,5 @@
>>>>>>>  // RUN:   FileCheck -check-prefix=TEST1 %s
>>>>>>>  // RUN: %clang -no-canonical-prefixes -target
>>>>>>> i386-apple-macosx10.6.0 -rewrite-legacy-objc %s -o - -### 2>&1 | \
>>>>>>>  // RUN:   FileCheck -check-prefix=TEST2 %s
>>>>>>> -// TEST1: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fobjc-subscripting-legacy-runtime" "-fencode-extended-block-signature"
>>>>>>> "-fno-objc-infer-related-result-type" "-fobjc-exceptions"
>>>>>>> "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> -// TEST2: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type"
>>>>>>> "-fobjc-exceptions" "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> +// TEST1: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fobjc-subscripting-legacy-runtime" "-fencode-extended-block-signature"
>>>>>>> "-fno-objc-infer-related-result-type" "-fobjc-exceptions" "-fexceptions"
>>>>>>> "-fmax-type-align=16" "-fdiagnostics-show-option"
>>>>>>> +// TEST2: "-fmessage-length" "0" "-stack-protector" "1"
>>>>>>> "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile"
>>>>>>> "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type"
>>>>>>> "-fobjc-exceptions" "-fexceptions" "-fmax-type-align=16"
>>>>>>> "-fdiagnostics-show-option"
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> 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/20141205/05677a0b/attachment.html>


More information about the cfe-commits mailing list