brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · b085e34 Raw
87 lines · plain
1; RUN: opt < %s -S -passes=partial-inliner -skip-partial-inlining-cost-analysis=true | FileCheck %s2 3 4define i32 @callee_most(i32 %v) unnamed_addr  #0 #1 {5entry:6  %cmp = icmp sgt i32 %v, 20007  br i1 %cmp, label %if.then, label %if.end8 9if.then:10  br label %if.then211 12if.then2:13  %sub = sub i32 %v, 1014  br label %if.end15 16if.end:17  %v2 = phi i32 [ %v, %entry ], [ %sub, %if.then2 ]18  %add = add nsw i32 %v2, 20019  ret i32 %add20}21 22define i32 @callee_noinline(i32 %v) optnone noinline {23entry:24  %cmp = icmp sgt i32 %v, 200025  br i1 %cmp, label %if.then, label %if.end26 27if.then:28  br label %if.then229 30if.then2:31  %sub = sub i32 %v, 1032  br label %if.end33 34if.end:35  %v2 = phi i32 [ %v, %entry ], [ %sub, %if.then2 ]36  %add = add nsw i32 %v2, 20037  ret i32 %add38}39 40define i32 @callee_writeonly(i32 %v) writeonly ssp {41entry:42  %cmp = icmp sgt i32 %v, 200043  br i1 %cmp, label %if.then, label %if.end44 45if.then:46  br label %if.then247 48if.then2:49  %sub = sub i32 %v, 1050  br label %if.end51 52if.end:53  %v2 = phi i32 [ %v, %entry ], [ %sub, %if.then2 ]54  %add = add nsw i32 %v2, 20055  ret i32 %add56}57; CHECK-LABEL: @caller58; CHECK: call void @callee_most.2.if.then(i32 %v59; CHECK: call i32 @callee_noinline(i32 %v)60; CHECK: call void @callee_writeonly.1.if.then(i32 %v61define i32 @caller(i32 %v) ssp {62entry:63  %c1 = call i32 @callee_most(i32 %v)64  %c2 = call i32 @callee_noinline(i32 %v)65  %c3 = call i32 @callee_writeonly(i32 %v)66  ret i32 %c367}68 69; CHECK: define internal void @callee_writeonly.1.if.then(i32 %v, ptr %sub.out) [[FN_ATTRS0:#[0-9]+]]70; CHECK: define internal void @callee_most.2.if.then(i32 %v, ptr %sub.out)  [[FN_ATTRS:#[0-9]+]]71 72; attributes to preserve73attributes #0 = {74  inlinehint minsize noduplicate noimplicitfloat norecurse noredzone nounwind75  nonlazybind optsize safestack sanitize_address sanitize_hwaddress sanitize_memory76  sanitize_thread ssp sspreq sspstrong uwtable "foo"="bar"77  "patchable-function"="prologue-short-redirect" "probe-stack"="_foo_guard" "stack-probe-size"="4096" }78 79; CHECK: attributes [[FN_ATTRS0]] = { ssp80; CHECK: attributes [[FN_ATTRS]] = { inlinehint minsize noduplicate noimplicitfloat norecurse noredzone nounwind nonlazybind optsize safestack sanitize_address sanitize_hwaddress sanitize_memory sanitize_thread ssp sspreq sspstrong uwtable "foo"="bar" "patchable-function"="prologue-short-redirect" "probe-stack"="_foo_guard" "stack-probe-size"="4096" }81 82; attributes to drop83attributes #1 = {84  alignstack=16 convergent inaccessiblememonly inaccessiblemem_or_argmemonly85  noreturn readonly argmemonly returns_twice speculatable "thunk"86}87