1; RUN: llc -mtriple=i686-apple-macosx -o - %s | FileCheck %s 2 3; x86 doesn't normally use indirect symbols, particularly hidden ones, but it 4; can be tricked into it for exception-handling typeids. 5 6@hidden_typeid = external hidden constant i8* 7@normal_typeid = external constant i8* 8 9declare void @throws() 10 11define void @get_indirect_hidden() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { 12 invoke void @throws() to label %end unwind label %lpad 13lpad: 14 %tmp = landingpad { i8*, i32 } 15 catch i8* bitcast (i8** @hidden_typeid to i8*) 16 br label %end 17 18end: 19 ret void 20} 21 22define void @get_indirect() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { 23 invoke void @throws() to label %end unwind label %lpad 24lpad: 25 %tmp = landingpad { i8*, i32 } 26 catch i8* bitcast (i8** @normal_typeid to i8*) 27 br label %end 28 29end: 30 ret void 31} 32 33declare i32 @__gxx_personality_v0(...) 34 35; CHECK: .section __IMPORT,__pointers,non_lazy_symbol_pointers 36 37; CHECK-NOT: __DATA,__data 38; CHECK: .indirect_symbol _hidden_typeid 39; CHECK-NEXT: .long 0 40 41; CHECK-NOT: __DATA,__data 42; CHECK: .indirect_symbol _normal_typeid 43; CHECK-NEXT: .long 0 44