brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 1ad1282 Raw
103 lines · plain
1; RUN: llc %s -o - | FileCheck %s2; RUN: llc < %s -stop-after=prologepilog | FileCheck %s --check-prefix=PEI3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-linux-gnu"6 7$__clang_call_terminate = comdat any8 9@_ZL11ShouldThrow = internal unnamed_addr global i1 false, align 110@_ZTIi = external constant ptr11@str = private unnamed_addr constant [20 x i8] c"Threw an exception!\00"12 13; Function Attrs: uwtable14define void @_Z6throwsv() #0 personality ptr @__gxx_personality_v0 {15 16; CHECK-LABEL:   _Z6throwsv:17; CHECK:         popq %rbp18; CHECK-NEXT:    .cfi_def_cfa %rsp, 819; CHECK-NEXT:    retq20; CHECK-NEXT:    .LBB0_1:21; CHECK-NEXT:    .cfi_def_cfa %rbp, 1622 23; PEI-LABEL: name: _Z6throwsv24; PEI:         frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp25; PEI-NEXT:    frame-setup CFI_INSTRUCTION def_cfa_offset 1626; PEI-NEXT:    frame-setup CFI_INSTRUCTION offset $rbp, -1627; PEI-NEXT:    $rbp = frame-setup MOV64rr $rsp28; PEI-NEXT:    frame-setup CFI_INSTRUCTION def_cfa_register $rbp29; PEI-NEXT:    frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp30; PEI-NEXT:    frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp31; PEI-NEXT:    {{^ +}}CFI_INSTRUCTION offset $rbx, -2432; PEI:         bb.4.try.cont:33; PEI-NEXT:      $rsp = frame-destroy ADD64ri32 $rsp, 8, implicit-def dead $eflags34; PEI-NEXT:      $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp35; PEI-NEXT:      $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp36; PEI-NEXT:      frame-destroy CFI_INSTRUCTION def_cfa $rsp, 837; PEI-NEXT:      RET 038 39entry:40  %.b5 = load i1, ptr @_ZL11ShouldThrow, align 141  br i1 %.b5, label %if.then, label %try.cont42 43if.then:                                          ; preds = %entry44  %exception = tail call ptr @__cxa_allocate_exception(i64 4)45  store i32 1, ptr %exception, align 1646  invoke void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)47          to label %unreachable unwind label %lpad48 49lpad:                                             ; preds = %if.then50  %0 = landingpad { ptr, i32 }51          catch ptr null52  %1 = extractvalue { ptr, i32 } %0, 053  %2 = tail call ptr @__cxa_begin_catch(ptr %1)54  %puts = tail call i32 @puts(ptr @str)55  invoke void @__cxa_rethrow()56          to label %unreachable unwind label %lpad157 58lpad1:                                            ; preds = %lpad59  %3 = landingpad { ptr, i32 }60          cleanup61  invoke void @__cxa_end_catch()62          to label %eh.resume unwind label %terminate.lpad63 64try.cont:                                         ; preds = %entry65  ret void66 67eh.resume:                                        ; preds = %lpad168  resume { ptr, i32 } %369 70terminate.lpad:                                   ; preds = %lpad171  %4 = landingpad { ptr, i32 }72          catch ptr null73  %5 = extractvalue { ptr, i32 } %4, 074  tail call void @__clang_call_terminate(ptr %5)75  unreachable76 77unreachable:                                      ; preds = %lpad, %if.then78  unreachable79}80 81declare ptr @__cxa_allocate_exception(i64)82 83declare void @__cxa_throw(ptr, ptr, ptr)84 85declare i32 @__gxx_personality_v0(...)86 87declare ptr @__cxa_begin_catch(ptr)88 89declare void @__cxa_rethrow()90 91declare void @__cxa_end_catch()92 93; Function Attrs: noinline noreturn nounwind94declare void @__clang_call_terminate(ptr)95 96declare void @_ZSt9terminatev()97 98; Function Attrs: nounwind99declare i32 @puts(ptr nocapture readonly)100 101attributes #0 = { "frame-pointer"="all" }102 103