brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.7 KiB · 49709cb Raw
163 lines · plain
1; RUN: llc < %s -mtriple=i686-windows-gnu | FileCheck %s --check-prefix=CHECK-MINGW-X862 3%struct.as = type { ptr }4 5@_ZZ2amiE2au = internal unnamed_addr global %struct.as zeroinitializer, align 46@_ZGVZ2amiE2au = internal global i64 0, align 87@_ZTIi = external constant ptr8 9define void @_Z2ami(i32) #0 personality ptr @__gxx_personality_v0 {10; CHECK-MINGW-X86-LABEL: _Z2ami:11; CHECK-MINGW-X86:       # %bb.0: # %entry12; CHECK-MINGW-X86-NEXT:    pushl %edi13; CHECK-MINGW-X86-NEXT:    .cfi_def_cfa_offset 814; CHECK-MINGW-X86-NEXT:    pushl %esi15; CHECK-MINGW-X86-NEXT:    .cfi_def_cfa_offset 1216; CHECK-MINGW-X86-NEXT:    .cfi_offset %esi, -1217; CHECK-MINGW-X86-NEXT:    .cfi_offset %edi, -818; CHECK-MINGW-X86-NEXT:    movzbl __ZGVZ2amiE2au, %eax19; CHECK-MINGW-X86-NEXT:    testb %al, %al20; CHECK-MINGW-X86-NEXT:    jne LBB0_421; CHECK-MINGW-X86-NEXT:  # %bb.1: # %init.check22; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0423; CHECK-MINGW-X86-NEXT:    pushl $__ZGVZ2amiE2au24; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 425; CHECK-MINGW-X86-NEXT:    calll ___cxa_guard_acquire26; CHECK-MINGW-X86-NEXT:    addl $4, %esp27; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -428; CHECK-MINGW-X86-NEXT:    testl %eax, %eax29; CHECK-MINGW-X86-NEXT:    je LBB0_430; CHECK-MINGW-X86-NEXT:  # %bb.2: # %init31; CHECK-MINGW-X86-NEXT:  Ltmp0:32; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0433; CHECK-MINGW-X86-NEXT:    pushl $434; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 435; CHECK-MINGW-X86-NEXT:    calll __Znwj36; CHECK-MINGW-X86-NEXT:    addl $4, %esp37; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -438; CHECK-MINGW-X86-NEXT:  Ltmp1:39; CHECK-MINGW-X86-NEXT:  # %bb.3: # %invoke.cont40; CHECK-MINGW-X86-NEXT:    movl %eax, __ZZ2amiE2au41; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0442; CHECK-MINGW-X86-NEXT:    pushl $__ZGVZ2amiE2au43; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 444; CHECK-MINGW-X86-NEXT:    calll ___cxa_guard_release45; CHECK-MINGW-X86-NEXT:    addl $4, %esp46; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -447; CHECK-MINGW-X86-NEXT:  LBB0_4: # %init.end48; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0449; CHECK-MINGW-X86-NEXT:    pushl $450; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 451; CHECK-MINGW-X86-NEXT:    calll __Znwj52; CHECK-MINGW-X86-NEXT:    addl $4, %esp53; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -454; CHECK-MINGW-X86-NEXT:    movl %eax, %esi55; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0456; CHECK-MINGW-X86-NEXT:    pushl $457; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 458; CHECK-MINGW-X86-NEXT:    calll ___cxa_allocate_exception59; CHECK-MINGW-X86-NEXT:    addl $4, %esp60; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -461; CHECK-MINGW-X86-NEXT:    movl $0, (%eax)62; CHECK-MINGW-X86-NEXT:  Ltmp3:63; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0c64; CHECK-MINGW-X86-NEXT:    movl .refptr.__ZTIi, %ecx65; CHECK-MINGW-X86-NEXT:    pushl $066; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 467; CHECK-MINGW-X86-NEXT:    pushl %ecx68; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 469; CHECK-MINGW-X86-NEXT:    pushl %eax70; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 471; CHECK-MINGW-X86-NEXT:    calll ___cxa_throw72; CHECK-MINGW-X86-NEXT:    addl $12, %esp73; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -1274; CHECK-MINGW-X86-NEXT:  Ltmp4:75; CHECK-MINGW-X86-NEXT:  # %bb.8: # %unreachable76; CHECK-MINGW-X86-NEXT:  LBB0_5: # %lpad77; CHECK-MINGW-X86-NEXT:  Ltmp2:78; CHECK-MINGW-X86-NEXT:    movl %eax, %edi79; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0480; CHECK-MINGW-X86-NEXT:    pushl $__ZGVZ2amiE2au81; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 482; CHECK-MINGW-X86-NEXT:    calll ___cxa_guard_abort83; CHECK-MINGW-X86-NEXT:    jmp LBB0_784; CHECK-MINGW-X86-NEXT:  LBB0_6: # %lpad185; CHECK-MINGW-X86-NEXT:    .cfi_def_cfa_offset 1286; CHECK-MINGW-X86-NEXT:  Ltmp5:87; CHECK-MINGW-X86-NEXT:    movl %eax, %edi88; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0489; CHECK-MINGW-X86-NEXT:    pushl %esi90; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 491; CHECK-MINGW-X86-NEXT:    calll __ZdlPv92; CHECK-MINGW-X86-NEXT:  LBB0_7: # %eh.resume93; CHECK-MINGW-X86-NEXT:    addl $4, %esp94; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset -495; CHECK-MINGW-X86-NEXT:    .cfi_escape 0x2e, 0x0496; CHECK-MINGW-X86-NEXT:    pushl %edi97; CHECK-MINGW-X86-NEXT:    .cfi_adjust_cfa_offset 498; CHECK-MINGW-X86-NEXT:    calll __Unwind_Resume99; CHECK-MINGW-X86-NEXT:  Lfunc_end0:100entry:101  %1 = load atomic i8, ptr @_ZGVZ2amiE2au acquire, align 8102  %guard.uninitialized = icmp eq i8 %1, 0103  br i1 %guard.uninitialized, label %init.check, label %init.end104 105init.check:                                       ; preds = %entry106  %2 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ2amiE2au)107  %tobool = icmp eq i32 %2, 0108  br i1 %tobool, label %init.end, label %init109 110init:                                             ; preds = %init.check111  %call.i3 = invoke ptr @_Znwj(i32 4)112          to label %invoke.cont unwind label %lpad113 114invoke.cont:                                      ; preds = %init115  store ptr %call.i3, ptr @_ZZ2amiE2au, align 4116  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZ2amiE2au)117  br label %init.end118 119init.end:                                         ; preds = %init.check, %invoke.cont, %entry120  %call.i = tail call ptr @_Znwj(i32 4)121  %exception = tail call ptr @__cxa_allocate_exception(i32 4)122  store i32 0, ptr %exception, align 16123  invoke void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)124          to label %unreachable unwind label %lpad1125 126lpad:                                             ; preds = %init127  %3 = landingpad { ptr, i32 }128          cleanup129  %4 = extractvalue { ptr, i32 } %3, 0130  %5 = extractvalue { ptr, i32 } %3, 1131  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZ2amiE2au) #1132  br label %eh.resume133 134lpad1:                                            ; preds = %init.end135  %6 = landingpad { ptr, i32 }136          cleanup137  %7 = extractvalue { ptr, i32 } %6, 0138  %8 = extractvalue { ptr, i32 } %6, 1139  tail call void @_ZdlPv(ptr nonnull %call.i)140  br label %eh.resume141 142eh.resume:                                        ; preds = %lpad1, %lpad143  %exn.slot.0 = phi ptr [ %7, %lpad1 ], [ %4, %lpad ]144  %ehselector.slot.0 = phi i32 [ %8, %lpad1 ], [ %5, %lpad ]145  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn.slot.0, 0146  %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %ehselector.slot.0, 1147  resume { ptr, i32 } %lpad.val2148 149unreachable:                                      ; preds = %init.end150  unreachable151}152 153declare i32 @__cxa_guard_acquire(ptr)154declare i32 @__gxx_personality_v0(...)155declare void @__cxa_guard_abort(ptr)156declare void @__cxa_guard_release(ptr)157declare ptr @__cxa_allocate_exception(i32)158declare void @__cxa_throw(ptr, ptr, ptr)159declare noalias nonnull ptr @_Znwj(i32)160declare ptr @__cxa_begin_catch(ptr)161declare void @__cxa_end_catch()162declare void @_ZdlPv(ptr)163