62 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; Ensure that a function is not outlined if a function has the optnone5; attribute.6 7define void @outline_constants1() optnone noinline {8entry:9 %a = alloca i32, align 410 %b = alloca i32, align 411 %c = alloca i32, align 412 store i32 3, ptr %a, align 413 store i32 4, ptr %b, align 414 store i32 5, ptr %c, align 415 %al = load i32, ptr %a16 %bl = load i32, ptr %b17 %cl = load i32, ptr %c18 ret void19}20 21define void @outline_constants2() optnone noinline {22entry:23 %a = alloca i32, align 424 %b = alloca i32, align 425 %c = alloca i32, align 426 store i32 2, ptr %a, align 427 store i32 3, ptr %b, align 428 store i32 4, ptr %c, align 429 %al = load i32, ptr %a30 %bl = load i32, ptr %b31 %cl = load i32, ptr %c32 ret void33}34 35; CHECK-LABEL: @outline_constants1(36; CHECK-NEXT: entry:37; CHECK-NEXT: [[A:%.*]] = alloca i32, align 438; CHECK-NEXT: [[B:%.*]] = alloca i32, align 439; CHECK-NEXT: [[C:%.*]] = alloca i32, align 440; CHECK-NEXT: store i32 3, ptr [[A]], align 441; CHECK-NEXT: store i32 4, ptr [[B]], align 442; CHECK-NEXT: store i32 5, ptr [[C]], align 443; CHECK-NEXT: [[AL:%.*]] = load i32, ptr [[A]], align 444; CHECK-NEXT: [[BL:%.*]] = load i32, ptr [[B]], align 445; CHECK-NEXT: [[CL:%.*]] = load i32, ptr [[C]], align 446; CHECK-NEXT: ret void47;48;49; CHECK-LABEL: @outline_constants2(50; CHECK-NEXT: entry:51; CHECK-NEXT: [[A:%.*]] = alloca i32, align 452; CHECK-NEXT: [[B:%.*]] = alloca i32, align 453; CHECK-NEXT: [[C:%.*]] = alloca i32, align 454; CHECK-NEXT: store i32 2, ptr [[A]], align 455; CHECK-NEXT: store i32 3, ptr [[B]], align 456; CHECK-NEXT: store i32 4, ptr [[C]], align 457; CHECK-NEXT: [[AL:%.*]] = load i32, ptr [[A]], align 458; CHECK-NEXT: [[BL:%.*]] = load i32, ptr [[B]], align 459; CHECK-NEXT: [[CL:%.*]] = load i32, ptr [[C]], align 460; CHECK-NEXT: ret void61;62