brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 96416df Raw
32 lines · plain
1// RUN: fir-opt --split-input-file --stack-reclaim %s | FileCheck %s2 3func.func @alloca_in_loop(%lb : index, %ub : index, %step : index, %b : i1, %addr : !fir.ref<index>) {4  fir.do_loop %iv = %lb to %ub step %step unordered {5    %0 = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>6  }7  return8}9 10// CHECK-LABEL: func.func @alloca_in_loop11// CHECK: fir.do_loop12// CHECK: %[[STACKPTR:.*]] = llvm.intr.stacksave : !llvm.ptr13// CHECK: %{{.*}} = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>14// CHECK: llvm.intr.stackrestore %0 : !llvm.ptr15 16// -----17 18module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<"dlti.alloca_memory_space", 5 : ui64>>} {19  func.func @stack_restore_save_alloca_address(%lb : index, %ub : index, %step : index, %b : i1, %addr : !fir.ref<index>) {20    fir.do_loop %iv = %lb to %ub step %step unordered {21      %0 = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>22    }23    return24  }25}26 27// CHECK-LABEL: func.func @stack_restore_save_alloca_address28// CHECK: fir.do_loop29// CHECK: %[[STACKPTR:.*]] = llvm.intr.stacksave : !llvm.ptr<5>30// CHECK: %{{.*}} = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>31// CHECK: llvm.intr.stackrestore %0 : !llvm.ptr<5>32