1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs 2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s 3 4; Ensure that a function is not outlined if a function has the optnone 5; attribute. 6 7define void @outline_constants1() optnone noinline { 8entry: 9 %a = alloca i32, align 4 10 %b = alloca i32, align 4 11 %c = alloca i32, align 4 12 store i32 3, ptr %a, align 4 13 store i32 4, ptr %b, align 4 14 store i32 5, ptr %c, align 4 15 %al = load i32, ptr %a 16 %bl = load i32, ptr %b 17 %cl = load i32, ptr %c 18 ret void 19} 20 21define void @outline_constants2() optnone noinline { 22entry: 23 %a = alloca i32, align 4 24 %b = alloca i32, align 4 25 %c = alloca i32, align 4 26 store i32 2, ptr %a, align 4 27 store i32 3, ptr %b, align 4 28 store i32 4, ptr %c, align 4 29 %al = load i32, ptr %a 30 %bl = load i32, ptr %b 31 %cl = load i32, ptr %c 32 ret void 33} 34 35; CHECK-LABEL: @outline_constants1( 36; CHECK-NEXT: entry: 37; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 38; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 39; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 40; CHECK-NEXT: store i32 3, ptr [[A]], align 4 41; CHECK-NEXT: store i32 4, ptr [[B]], align 4 42; CHECK-NEXT: store i32 5, ptr [[C]], align 4 43; CHECK-NEXT: [[AL:%.*]] = load i32, ptr [[A]], align 4 44; CHECK-NEXT: [[BL:%.*]] = load i32, ptr [[B]], align 4 45; CHECK-NEXT: [[CL:%.*]] = load i32, ptr [[C]], align 4 46; CHECK-NEXT: ret void 47; 48; 49; CHECK-LABEL: @outline_constants2( 50; CHECK-NEXT: entry: 51; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 52; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 53; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 54; CHECK-NEXT: store i32 2, ptr [[A]], align 4 55; CHECK-NEXT: store i32 3, ptr [[B]], align 4 56; CHECK-NEXT: store i32 4, ptr [[C]], align 4 57; CHECK-NEXT: [[AL:%.*]] = load i32, ptr [[A]], align 4 58; CHECK-NEXT: [[BL:%.*]] = load i32, ptr [[B]], align 4 59; CHECK-NEXT: [[CL:%.*]] = load i32, ptr [[C]], align 4 60; CHECK-NEXT: ret void 61; 62