1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic | FileCheck %s 3 4@main_q = internal global ptr null ; <ptr> [#uses=1] 5 6define void @func2() nounwind { 7; CHECK-LABEL: func2: 8; CHECK: ## %bb.0: ## %entry 9; CHECK-NEXT: calll L0$pb 10; CHECK-NEXT: L0$pb: 11; CHECK-NEXT: popl %eax 12; CHECK-NEXT: leal _main_q-L0$pb(%eax), %eax 13; CHECK-NEXT: ## InlineAsm Start 14; CHECK-NEXT: movl %eax, %gs:152 15; CHECK-NEXT: ## InlineAsm End 16; CHECK-NEXT: retl 17entry: 18 tail call void asm "mov $1,%gs:$0", "=*m,ri,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(ptr) inttoptr (i32 152 to ptr), ptr @main_q) nounwind 19 ret void 20} 21 22; The intent of this test is to ensure that we handle blockaddress' correctly 23; with "i" constraints for -m32 -fPIC. 24 25define void @x() { 26; CHECK-LABEL: x: 27; CHECK: ## %bb.0: 28; CHECK-NEXT: ## InlineAsm Start 29; CHECK-NEXT: ## Ltmp0 30; CHECK-EMPTY: 31; CHECK-NEXT: ## InlineAsm End 32; CHECK-NEXT: ## %bb.2: ## %return 33; CHECK-NEXT: retl 34; CHECK-NEXT: Ltmp0: ## Block address taken 35; CHECK-NEXT: LBB1_1: ## %overflow 36; CHECK-NEXT: retl 37 callbr void asm "# ${0:l}\0A", "!i"() 38 to label %return [label %overflow] 39 40overflow: 41 br label %return 42 43return: 44 ret void 45} 46 47; Test unusual case of blockaddress from @x in @y's asm. 48define void @y() { 49; CHECK-LABEL: y: 50; CHECK: ## %bb.0: 51; CHECK-NEXT: ## InlineAsm Start 52; CHECK-NEXT: ## Ltmp0 53; CHECK-EMPTY: 54; CHECK-NEXT: ## InlineAsm End 55; CHECK-NEXT: retl 56 call void asm "# ${0:l}\0A", "i"(ptr blockaddress(@x, %overflow)) 57 ret void 58} 59