brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 5fc8684 Raw
75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s3 4; Show that we do extract phi nodes from the regions.5 6define void @function1(ptr %a, ptr %b) {7entry:8  %0 = alloca i32, align 49  %c = load i32, ptr %0, align 410  br label %test111test1:12  %e = load i32, ptr %0, align 413  br label %first14test:15  %d = load i32, ptr %0, align 416  br label %first17first:18  %1 = phi i32 [ %c, %test ], [ %e, %test1 ]19  store i32 2, ptr %a, align 420  store i32 3, ptr %b, align 421  ret void22}23 24define void @function2(ptr %a, ptr %b) {25entry:26  %0 = alloca i32, align 427  %c = load i32, ptr %0, align 428  br label %test129test1:30  %e = load i32, ptr %0, align 431  br label %first32test:33  %d = load i32, ptr %0, align 434  br label %first35first:36  %1 = phi i32 [ %c, %test ], [ %e, %test1 ]37  store i32 2, ptr %a, align 438  store i32 3, ptr %b, align 439  ret void40}41; CHECK-LABEL: @function1(42; CHECK-NEXT:  entry:43; CHECK-NEXT:    [[TMP0:%.*]] = alloca i32, align 444; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[A:%.*]], ptr [[B:%.*]])45; CHECK-NEXT:    ret void46;47;48; CHECK-LABEL: @function2(49; CHECK-NEXT:  entry:50; CHECK-NEXT:    [[TMP0:%.*]] = alloca i32, align 451; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[A:%.*]], ptr [[B:%.*]])52; CHECK-NEXT:    ret void53;54;55; CHECK: define internal void @outlined_ir_func_0(56; CHECK-NEXT:  newFuncRoot:57; CHECK-NEXT:    br label [[ENTRY_TO_OUTLINE:%.*]]58; CHECK:       entry_to_outline:59; CHECK-NEXT:    [[C:%.*]] = load i32, ptr [[TMP0:%.*]], align 460; CHECK-NEXT:    br label [[TEST1:%.*]]61; CHECK:       test1:62; CHECK-NEXT:    [[E:%.*]] = load i32, ptr [[TMP0]], align 463; CHECK-NEXT:    br label [[FIRST:%.*]]64; CHECK:       test:65; CHECK-NEXT:    [[D:%.*]] = load i32, ptr [[TMP0]], align 466; CHECK-NEXT:    br label [[FIRST]]67; CHECK:       first:68; CHECK-NEXT:    [[TMP3:%.*]] = phi i32 [ [[C]], [[TEST:%.*]] ], [ [[E]], [[TEST1]] ]69; CHECK-NEXT:    store i32 2, ptr [[TMP1:%.*]], align 470; CHECK-NEXT:    store i32 3, ptr [[TMP2:%.*]], align 471; CHECK-NEXT:    br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]]72; CHECK:       entry_after_outline.exitStub:73; CHECK-NEXT:    ret void74;75