Looks like this broke the Windows bot: http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/9365 Can you fix or revert, please?
On Fri, Mar 9, 2018 at 2:06 AM, Saleem Abdulrasool via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: compnerd > Date: Thu Mar 8 23:06:42 2018 > New Revision: 327105 > > URL: http://llvm.org/viewvc/llvm-project?rev=327105&view=rev > Log: > CodeGen: simplify and validate exception personalities > > Simplify the dispatching for the personality routines. This really had > no test coverage previously, so add test coverage for the various cases. > This turns out to be pretty complicated as the various languages and > models interact to change personalities around. > > You really should feel bad for the compiler if you are using exceptions. > There is no reason for this type of cruelty. > > Added: > cfe/trunk/test/CodeGen/personality.c > cfe/trunk/test/CodeGenCXX/personality.cpp > cfe/trunk/test/CodeGenObjC/personality.m > cfe/trunk/test/CodeGenObjCXX/personality.mm > Modified: > cfe/trunk/lib/CodeGen/CGException.cpp > > Modified: cfe/trunk/lib/CodeGen/CGException.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ > CGException.cpp?rev=327105&r1=327104&r2=327105&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/CodeGen/CGException.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGException.cpp Thu Mar 8 23:06:42 2018 > @@ -116,6 +116,10 @@ static const EHPersonality &getCPersonal > const LangOptions &L) { > if (L.SjLjExceptions) > return EHPersonality::GNU_C_SJLJ; > + if (L.DWARFExceptions) > + return EHPersonality::GNU_C; > + if (T.isWindowsMSVCEnvironment()) > + return EHPersonality::MSVC_CxxFrameHandler3; > if (L.SEHExceptions) > return EHPersonality::GNU_C_SEH; > return EHPersonality::GNU_C; > @@ -129,6 +133,8 @@ static const EHPersonality &getObjCPerso > case ObjCRuntime::MacOSX: > case ObjCRuntime::iOS: > case ObjCRuntime::WatchOS: > + if (T.isWindowsMSVCEnvironment()) > + return EHPersonality::MSVC_CxxFrameHandler3; > return EHPersonality::NeXT_ObjC; > case ObjCRuntime::GNUstep: > if (L.ObjCRuntime.getVersion() >= VersionTuple(1, 7)) > @@ -149,6 +155,10 @@ static const EHPersonality &getCXXPerson > const LangOptions &L) { > if (L.SjLjExceptions) > return EHPersonality::GNU_CPlusPlus_SJLJ; > + if (L.DWARFExceptions) > + return EHPersonality::GNU_CPlusPlus; > + if (T.isWindowsMSVCEnvironment()) > + return EHPersonality::MSVC_CxxFrameHandler3; > if (L.SEHExceptions) > return EHPersonality::GNU_CPlusPlus_SEH; > return EHPersonality::GNU_CPlusPlus; > @@ -199,25 +209,9 @@ const EHPersonality &EHPersonality::get( > if (FD && FD->usesSEHTry()) > return getSEHPersonalityMSVC(T); > > - // Try to pick a personality function that is compatible with MSVC if > we're > - // not compiling Obj-C. Obj-C users better have an Obj-C runtime that > supports > - // the GCC-style personality function. > - if (T.isWindowsMSVCEnvironment() && !L.ObjC1) { > - if (L.SjLjExceptions) > - return EHPersonality::GNU_CPlusPlus_SJLJ; > - if (L.DWARFExceptions) > - return EHPersonality::GNU_CPlusPlus; > - return EHPersonality::MSVC_CxxFrameHandler3; > - } > - > - if (L.CPlusPlus && L.ObjC1) > - return getObjCXXPersonality(T, L); > - else if (L.CPlusPlus) > - return getCXXPersonality(T, L); > - else if (L.ObjC1) > - return getObjCPersonality(T, L); > - else > - return getCPersonality(T, L); > + if (L.ObjC1) > + return L.CPlusPlus ? getObjCXXPersonality(T, L) : > getObjCPersonality(T, L); > + return L.CPlusPlus ? getCXXPersonality(T, L) : getCPersonality(T, L); > } > > const EHPersonality &EHPersonality::get(CodeGenFunction &CGF) { > > Added: cfe/trunk/test/CodeGen/personality.c > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > CodeGen/personality.c?rev=327105&view=auto > ============================================================ > ================== > --- cfe/trunk/test/CodeGen/personality.c (added) > +++ cfe/trunk/test/CodeGen/personality.c Thu Mar 8 23:06:42 2018 > @@ -0,0 +1,46 @@ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions -fblocks > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GNU > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fblocks -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fblocks -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fblocks -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fblocks -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fblocks -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -D > __SEH_EXCEPTIONS__ -fms-extensions -fexceptions -fblocks -fseh-exceptions > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-SEH > -check-prefix CHECK-WIN-SEH-X86 > +// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -D > __SEH_EXCEPTIONS__ -fms-extensions -fexceptions -fblocks -fseh-exceptions > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-SEH > -check-prefix CHECK-WIN-SEH-X64 > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fblocks -fsjlj-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -D __SEH_EXCEPTIONS__ > -fms-extensions -fexceptions -fblocks -fseh-exceptions -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-MINGW-SEH -check-prefix > CHECK-WIN-SEH-X86 > +// RUN: %clang_cc1 -triple x86_64-unknown-windows-gnu -D > __SEH_EXCEPTIONS__ -fms-extensions -fexceptions -fblocks -fseh-exceptions > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MINGW-SEH > -check-prefix CHECK-WIN-SEH-X64 > + > + > +extern void g(void (^)(void)); > +extern void i(void); > + > +// CHECK-GNU: personality i8* bitcast (i32 (...)* @__gcc_personality_v0 > to i8*) > +// CHECK-DWARF: personality i8* bitcast (i32 (...)* @__gcc_personality_v0 > to i8*) > +// CHECK-SEH: personality i8* bitcast (i32 (...)* @__gcc_personality_seh0 > to i8*) > +// CHECK-SJLJ: personality i8* bitcast (i32 (...)* @__gcc_personality_sj0 > to i8*) > + > +// CHECK-WIN: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to > i8*) > +// CHECK-WIN-DWARF: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > +// CHECK-WIN-SEH: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 > to i8*) > +// CHECK-MINGW-SEH: personality i8* bitcast (i32 (...)* > @__gcc_personality_seh0 to i8*) > +// CHECK-WIN-SJLJ: personality i8* bitcast (i32 (...)* > @__gcc_personality_sj0 to i8*) > + > +void f(void) { > + __block int i; > + g(^ { }); > +} > + > +#if defined(__SEH_EXCEPTIONS__) > +// CHECK-WIN-SEH-X86: personality i8* bitcast (i32 (...)* > @_except_handler3 to i8*) > +// CHECK-WIN-SEH-X64: personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > + > +void h(void) { > + __try { > + i(); > + } __finally { > + } > +} > +#endif > + > > Added: cfe/trunk/test/CodeGenCXX/personality.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > CodeGenCXX/personality.cpp?rev=327105&view=auto > ============================================================ > ================== > --- cfe/trunk/test/CodeGenCXX/personality.cpp (added) > +++ cfe/trunk/test/CodeGenCXX/personality.cpp Thu Mar 8 23:06:42 2018 > @@ -0,0 +1,48 @@ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-GNU > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GNU-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GNU-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GNU-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN > +// %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-SEH > +// %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -D > __SEH_EXCEPTIONS__ -fms-extensions -fexceptions -fseh-exceptions > -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN-SEH-X86 > +// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -D > __SEH_EXCEPTIONS__ -fms-extensions -fexceptions -fseh-exceptions > -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN-SEH-X64 > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-GNU > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GNU-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fcxx-exceptions -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GNU-SJLJ > + > +extern void g(); > + > +// CHECK-GNU: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > +// CHECK-GNU-DWARF: personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK-GNU-SEH: personality i8* bitcast (i32 (...)* > @__gxx_personality_seh0 to i8*) > +// CHECK-GNU-SJLJ: personality i8* bitcast (i32 (...)* > @__gxx_personality_sj0 to i8*) > + > +// CHECK-WIN: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to > i8*) > +// CHECK-WIN-DWARF: personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK-WIN-SEH: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 > to i8*) > +// CHECK-WIN-SJLJ: personality i8* bitcast (i32 (...)* > @__gxx_personality_sj0 to i8*) > + > +void f() { > + try { > + g(); > + } catch (...) { > + } > +} > + > +#if defined(__SEH_EXCEPTIONS__) > +// CHECK-WIN-SEH-X86: personality i8* bitcast (i32 (...)* > @_except_handler3 to i8*) > +// CHECK-WIN-SEH-X64: personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > + > +void h(void) { > + __try { > + g(); > + } __finally { > + } > +} > +#endif > + > > Added: cfe/trunk/test/CodeGenObjC/personality.m > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > CodeGenObjC/personality.m?rev=327105&view=auto > ============================================================ > ================== > --- cfe/trunk/test/CodeGenObjC/personality.m (added) > +++ cfe/trunk/test/CodeGenObjC/personality.m Thu Mar 8 23:06:42 2018 > @@ -0,0 +1,87 @@ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-WIN-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN-MACOSX-FRAGILE-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-MACOSX-FRAGILE-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN-MACOSX-FRAGILE-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE-MINGW- > DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-MACOSX-FRAGILE-MINGW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE-MINGW- > SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=macosx -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm %s -o - | > FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s -o - | FileCheck > %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fobjc-runtime=objfw -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +void g(void); > + > +// CHECK-MACOSX-FRAGILE: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > +// CHECK-NS: personality i8* bitcast (i32 (...)* @__objc_personality_v0 > to i8*) > +// CHECK-GNUSTEP-1_7: personality i8* bitcast (i32 (...)* > @__gnustep_objc_personality_v0 to i8*) > +// CHECK-GNUSTEP: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > +// CHECK-GCC: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > +// CHECK-GCC-SEH: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_seh0 to i8*) > +// CHECK-GCC-SJLJ: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_sj0 to i8*) > +// CHECK-OBJFW: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > +// CHECK-OBJFW-SEH: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_seh0 to i8*) > +// CHECK-OBJFW-SJLJ: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_sj0 to i8*) > + > +// CHECK-WIN-MACOSX-FRAGILE: personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-DWARF: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-SEH: personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-SJLJ: personality i8* bitcast (i32 (...)* > @__gcc_personality_sj0 to i8*) > +// CHECK-WIN-NS: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 > to i8*) > + > +// CHECK-MACOSX-FRAGILE-MINGW-DWARF: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > +// CHECK-MACOSX-FRAGILE-MINGW-SEH: personality i8* bitcast (i32 (...)* > @__gcc_personality_seh0 to i8*) > +// CHECK-MACOSX-FRAGILE-MINGW-SJLJ: personality i8* bitcast (i32 (...)* > @__gcc_personality_sj0 to i8*) > + > +void f(void) { > + @try { > + g(); > + } @catch (...) { > + } > +} > + > +#if defined(__SEH_EXCEPTIONS__) > +// CHECK-WIN-SEH-X86: personality i8* bitcast (i32 (...)* > @_except_handler3 to i8*) > +// CHECK-WIN-SEH-X64: personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > + > +void h(void) { > + __try { > + i(); > + } __finally { > + } > +} > +#endif > + > > Added: cfe/trunk/test/CodeGenObjCXX/personality.mm > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > CodeGenObjCXX/personality.mm?rev=327105&view=auto > ============================================================ > ================== > --- cfe/trunk/test/CodeGenObjCXX/personality.mm (added) > +++ cfe/trunk/test/CodeGenObjCXX/personality.mm Thu Mar 8 23:06:42 2018 > @@ -0,0 +1,129 @@ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm > %s -o - | FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-MACOSX-FRAGILE-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-MACOSX-FRAGILE-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-WIN-MACOSX-FRAGILE-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-WIN-NS-DWARF > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-WIN-NS-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm > %s -o - | FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx-fragile -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=macosx-fragile -S -emit-llvm %s -o - | FileCheck %s > -check-prefix CHECK-MACOSX-FRAGILE-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=macosx > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=ios -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions > -fobjc-runtime=watchos -S -emit-llvm %s -o - | FileCheck %s -check-prefix > CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=watchos > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-NS > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep-1.7 -S -emit-llvm > %s -o - | FileCheck %s -check-prefix CHECK-GNUSTEP-1_7 > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gnustep -S -emit-llvm %s > -o - | FileCheck %s -check-prefix CHECK-GNUSTEP > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S -emit-llvm %s -o - > | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=gcc -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-GCC-SJLJ > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S -emit-llvm %s -o > - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fdwarf-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fseh-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw -S > -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SEH > +// RUN: %clang_cc1 -triple i686-unknown-windows-gnu -fexceptions > -fsjlj-exceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime=objfw > -S -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-OBJFW-SJLJ > + > +void g(void); > + > +@interface use > ++ (void)e:(id)xception; > +@end > + > +// CHECK-MACOSX-FRAGILE: personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK-MACOSX-FRAGILE-SEH: personality i8* bitcast (i32 (...)* > @__gxx_personality_seh0 to i8*) > +// CHECK-MACOSX-FRAGILE-SJLJ: personality i8* bitcast (i32 (...)* > @__gxx_personality_sj0 to i8*) > +// CHECK-NS: personality i8* bitcast (i32 (...)* @__objc_personality_v0 > to i8*) > +// CHECK-GNUSTEP-1_7: personality i8* bitcast (i32 (...)* > @__gnustep_objcxx_personality_v0 to i8*) > +// CHECK-GNUSTEP: personality i8* bitcast (i32 (...)* > @__gnustep_objcxx_personality_v0 to i8*) > +// CHECK-GCC: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > +// CHECK-GCC-SEH: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_seh0 to i8*) > +// CHECK-GCC-SJLJ: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_sj0 to i8*) > +// CHECK-OBJFW: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > +// CHECK-OBJFW-SEH: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_seh0 to i8*) > +// CHECK-OBJFW-SJLJ: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_sj0 to i8*) > + > +// CHECK-WIN-MACOSX-FRAGILE: personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-DWARF: personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-SEH: personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CHECK-WIN-MACOSX-FRAGILE-SJLJ: personality i8* bitcast (i32 (...)* > @__gxx_personality_sj0 to i8*) > +// CHECK-WIN-NS: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 > to i8*) > +// CHECK-WIN-NS-DWARF: personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK-WIN-NS-SJLJ: personality i8* bitcast (i32 (...)* > @__gxx_personality_sj0 to i8*) > + > +void f(void) { > + @try { > + g(); > + } @catch (id xception) { > + [use e:xception]; > + } > +} > + > +#if defined(__SEH_EXCEPTIONS__) > +// CHECK-WIN-SEH-X86: personality i8* bitcast (i32 (...)* > @_except_handler3 to i8*) > +// CHECK-WIN-SEH-X64: personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > + > +void h(void) { > + __try { > + i(); > + } __finally { > + } > +} > +#endif > + > + > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits