65 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -enable-machine-outliner -mattr=+m -mtriple=riscv64 < %s | FileCheck %s3 4; Ensure that we won't outline CFIs when they are needed in unwinding.5 6define i32 @func1(i32 %x) #0 {7; CHECK-LABEL: func1:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: addi sp, sp, -1610; CHECK-NEXT: .cfi_def_cfa_offset 1611; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill12; CHECK-NEXT: sd s0, 0(sp) # 8-byte Folded Spill13; CHECK-NEXT: .cfi_offset ra, -814; CHECK-NEXT: .cfi_offset s0, -1615; CHECK-NEXT: mul a0, a0, a016; CHECK-NEXT: addi s0, a0, 117; CHECK-NEXT: li a0, 418; CHECK-NEXT: call __cxa_allocate_exception19; CHECK-NEXT: sw s0, 0(a0)20; CHECK-NEXT: lui a1, %hi(_ZTIi)21; CHECK-NEXT: addi a1, a1, %lo(_ZTIi)22; CHECK-NEXT: li a2, 023; CHECK-NEXT: call __cxa_throw24entry:25 %mul = mul i32 %x, %x26 %add = add i32 %mul, 127 %exception = tail call ptr @__cxa_allocate_exception(i64 4)28 store i32 %add, ptr %exception29 tail call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)30 unreachable31}32 33define i32 @func2(i32 %x) #0 {34; CHECK-LABEL: func2:35; CHECK: # %bb.0: # %entry36; CHECK-NEXT: addi sp, sp, -1637; CHECK-NEXT: .cfi_def_cfa_offset 1638; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill39; CHECK-NEXT: sd s0, 0(sp) # 8-byte Folded Spill40; CHECK-NEXT: .cfi_offset ra, -841; CHECK-NEXT: .cfi_offset s0, -1642; CHECK-NEXT: mul a0, a0, a043; CHECK-NEXT: addi s0, a0, 144; CHECK-NEXT: li a0, 445; CHECK-NEXT: call __cxa_allocate_exception46; CHECK-NEXT: sw s0, 0(a0)47; CHECK-NEXT: lui a1, %hi(_ZTIi)48; CHECK-NEXT: addi a1, a1, %lo(_ZTIi)49; CHECK-NEXT: li a2, 050; CHECK-NEXT: call __cxa_throw51entry:52 %mul = mul i32 %x, %x53 %add = add i32 %mul, 154 %exception = tail call ptr @__cxa_allocate_exception(i64 4)55 store i32 %add, ptr %exception56 tail call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)57 unreachable58}59 60@_ZTIi = external constant ptr61declare ptr @__cxa_allocate_exception(i64)62declare void @__cxa_throw(ptr, ptr, ptr)63 64attributes #0 = { minsize noreturn }65