brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · a6c591b Raw
191 lines · plain
1// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -fobjc-runtime=ios -fobjc-exceptions -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-IR %s2// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -fobjc-runtime=gnustep-2.0 -fobjc-exceptions -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-NF %s3// RUN: %clang_cc1 -triple i686-windows-itanium -fms-extensions -fobjc-runtime=macosx -fdeclspec -fobjc-exceptions -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-IR %s4// RUN: %clang_cc1 -triple i686-windows-itanium -fms-extensions -fobjc-runtime=objfw -fdeclspec -fobjc-exceptions -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-FW %s5 6// CHECK-IR-DAG: @_objc_empty_cache = external dllimport global %struct._objc_cache7 8__declspec(dllimport)9@interface I10+ (instancetype) new;11@end12 13// CHECK-IR-DAG: @"OBJC_METACLASS_$_I" = external dllimport global %struct._class_t14// CHECK-IR-DAG: @"OBJC_CLASS_$_I" = external dllimport global %struct._class_t15 16// CHECK-NF-DAG: @"$_OBJC_CLASS_I" = external dllimport global ptr17 18__declspec(dllexport)19@interface J : I20@end21 22// CHECK-IR-DAG: @"OBJC_METACLASS_$_J" = dso_local dllexport global %struct._class_t23// CHECK-IR-DAG: @"OBJC_CLASS_$_J" = dso_local dllexport global %struct._class_t24 25// CHECK-FW-DAG: @_OBJC_METACLASS_J = dso_local dllexport global26// CHECK-FW-DAG: @_OBJC_CLASS_J = dso_local dllexport global27 28// CHECK-NF-DAG: @"$_OBJC_METACLASS_J" = internal global29// CHECK-NF-DAG: @"$_OBJC_CLASS_J" = dllexport global30 31@implementation J {32  id _ivar;33}34@end35 36// CHECK-IR-DAG: @"OBJC_IVAR_$_J._ivar" = global i3237 38// CHECK-NF-DAG: @"__objc_ivar_offset_J._ivar.@" = hidden global i3239 40@interface K : J41@end42 43// CHECK-IR-DAG: @"OBJC_METACLASS_$_K" = dso_local global %struct._class_t44// CHECK-IR-DAG: @"OBJC_CLASS_$_K" = dso_local global %struct._class_t45 46// CHECK-FW-DAG: @_OBJC_METACLASS_K = dso_local global47// CHECK-FW-DAG: @_OBJC_CLASS_K = dso_local global48 49// CHECK-NF-DAG: @"$_OBJC_METACLASS_K" = internal global50// CHECK-NF-DAG: @"$_OBJC_CLASS_K" = global51 52@implementation K {53  id _ivar;54}55@end56 57// CHECK-IR-DAG: @"OBJC_IVAR_$_K._ivar" = global i3258 59// CHECK-NF-DAG: @"__objc_ivar_offset_K._ivar.@" = hidden global i3260 61__declspec(dllexport)62@interface L : K63@end64 65// CHECK-IR-DAG: @"OBJC_METACLASS_$_L" = dso_local dllexport global %struct._class_t66// CHECK-IR-DAG: @"OBJC_CLASS_$_L" = dso_local dllexport global %struct._class_t67 68// CHECK-FW-DAG: @_OBJC_METACLASS_L = dso_local dllexport global69// CHECK-FW-DAG: @_OBJC_CLASS_L = dso_local dllexport global70 71// CHECK-NF-DAG: @"$_OBJC_METACLASS_L" = internal global72// CHECK-NF-DAG: @"$_OBJC_CLASS_L" = dllexport global73 74@implementation L {75  id _none;76 77  @public78  id _public;79 80  @protected81  id _protected;82 83  @package84  id _package;85 86  @private87  id _private;88}89@end90 91// CHECK-IR-DAG: @"OBJC_IVAR_$_L._none" = global i3292// CHECK-IR-DAG: @"OBJC_IVAR_$_L._public" = dllexport global i3293// CHECK-IR-DAG: @"OBJC_IVAR_$_L._protected" = dllexport global i3294// CHECK-IR-DAG: @"OBJC_IVAR_$_L._package" = global i3295// CHECK-IR-DAG: @"OBJC_IVAR_$_L._private" = global i3296 97// CHECK-NF-DAG: @"__objc_ivar_offset_L._none.@" = hidden global i3298// CHECK-NF-DAG: @"__objc_ivar_offset_L._public.@" = dso_local dllexport global i3299// CHECK-NF-DAG: @"__objc_ivar_offset_L._protected.@" = dso_local dllexport global i32100// CHECK-NF-DAG: @"__objc_ivar_offset_L._package.@" = hidden global i32101// CHECK-NF-DAG: @"__objc_ivar_offset_L._private.@" = hidden global i32102 103__declspec(dllimport)104@interface M : I {105  @public106  id _ivar;107}108@end109 110// CHECK-FW-DAG: @_OBJC_CLASS_M = external dllimport global i32111 112// CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32113 114// CHECK-NF-DAG: @"$_OBJC_REF_CLASS_M" = external dllimport global ptr115// CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external dllimport global i32116 117__declspec(dllexport)118__attribute__((__objc_exception__))119@interface N : I120@end121 122// CHECK-FW-DAG: @_OBJC_METACLASS_N = dso_local dllexport global123// CHECK-FW-DAG: @_OBJC_CLASS_N = dso_local dllexport global124 125// CHECK-NF-DAG: @"$_OBJC_CLASS_N" = dllexport global126 127@implementation N : I128@end129 130// CHECK-IR-DAG: @"OBJC_EHTYPE_$_N" = dso_local dllexport global %struct._objc_typeinfo131 132__declspec(dllimport)133__attribute__((__objc_exception__))134@interface O : I135@end136 137// CHECK-IR-DAG: @"OBJC_EHTYPE_$_O" = external dllimport global %struct._objc_typeinfo138 139__attribute__((__objc_exception__))140@interface P : I141@end142 143// CHECK-IR-DAG: @"OBJC_EHTYPE_$_P" = external dso_local global %struct._objc_typeinfo144 145@interface Q : M146@end147 148id f(Q *q) {149  return q->_ivar;150}151 152// CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32153 154// CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external dllimport global i32155 156int g(void) {157  @autoreleasepool {158    M *mi = [M new];159    @try {160      mi->_ivar = (void *)0;161      @throw(@"CFConstantString");162    } @catch (id) {163      return 1;164    } @catch (I *) {165      return 2;166    } @catch (J *) {167      return 3;168    } @catch (K *) {169      return 4;170    } @catch (L *) {171      return 5;172    } @catch (M *) {173      return 6;174    } @catch (N *) {175      return 7;176    } @catch (O *) {177      return 8;178    } @catch (P *) {179      return 9;180    }181  }182  return 0;183}184 185// CHECK-IR-DAG: @OBJC_EHTYPE_id = external dllimport global %struct._objc_typeinfo186// CHECK-IR-DAG: @"OBJC_EHTYPE_$_I" = weak global %struct._objc_typeinfo187// CHECK-IR-DAG: @"OBJC_EHTYPE_$_K" = weak global %struct._objc_typeinfo188// CHECK-IR-DAG: @"OBJC_EHTYPE_$_L" = weak global %struct._objc_typeinfo189// CHECK-IR-DAG: @"OBJC_EHTYPE_$_M" = weak global %struct._objc_typeinfo190 191