[sanitizer] Improve FreeBSD ASLR detection
[llvm-project.git] / llvm / test / Analysis / CostModel / free-intrinsics-datalayout.ll
blob0883c3503a607e2a00ba913d51d5b2be16be5ef7
1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2 ; RUN: opt -analyze -cost-model -cost-kind=code-size %s -S -o - | FileCheck %s --check-prefix=CHECK-SIZE
3 ; RUN: opt -analyze -cost-model -cost-kind=throughput %s -S -o - | FileCheck %s --check-prefix=CHECK-THROUGHPUT
5 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
7 define i32 @trivially_free() {
8 ; CHECK-SIZE-LABEL: 'trivially_free'
9 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = call i32 @llvm.annotation.i32(i32 undef, i8* undef, i8* undef, i32 undef)
10 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.assume(i1 undef)
11 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.experimental.noalias.scope.decl(metadata !0)
12 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.sideeffect()
13 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = call {}* @llvm.invariant.start.p0i8(i64 1, i8* undef)
14 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.invariant.end.p0i8({}* undef, i64 1, i8* undef)
15 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = call i8* @llvm.launder.invariant.group.p0i8(i8* undef)
16 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = call i8* @llvm.strip.invariant.group.p0i8(i8* undef)
17 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef)
18 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0i8(i64 1, i8* undef)
19 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0i8(i64 1, i8* undef)
20 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0i8(i8* undef, i1 true, i1 true, i1 true)
21 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a6 = call i8* @llvm.ptr.annotation.p0i8(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
22 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
23 ; CHECK-SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
25 ; CHECK-THROUGHPUT-LABEL: 'trivially_free'
26 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a0 = call i32 @llvm.annotation.i32(i32 undef, i8* undef, i8* undef, i32 undef)
27 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.assume(i1 undef)
28 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.experimental.noalias.scope.decl(metadata !0)
29 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.sideeffect()
30 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = call {}* @llvm.invariant.start.p0i8(i64 1, i8* undef)
31 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.invariant.end.p0i8({}* undef, i64 1, i8* undef)
32 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = call i8* @llvm.launder.invariant.group.p0i8(i8* undef)
33 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = call i8* @llvm.strip.invariant.group.p0i8(i8* undef)
34 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef)
35 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0i8(i64 1, i8* undef)
36 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0i8(i64 1, i8* undef)
37 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0i8(i8* undef, i1 true, i1 true, i1 true)
38 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a6 = call i8* @llvm.ptr.annotation.p0i8(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
39 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
40 ; CHECK-THROUGHPUT-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef
42   %a0 = call i32 @llvm.annotation.i32(i32 undef, i8* undef, i8* undef, i32 undef)
43   call void @llvm.assume(i1 undef)
44   call void @llvm.experimental.noalias.scope.decl(metadata !4)
45   call void @llvm.sideeffect()
46   call void @llvm.dbg.declare(metadata i8** undef, metadata !0, metadata !DIExpression())
47   call void @llvm.dbg.value(metadata i64 undef, i64 undef, metadata !DIExpression(), metadata !DIExpression())
48   call void @llvm.dbg.label(metadata !2)
49   %a1 = call {}* @llvm.invariant.start.p0i8(i64 1, i8* undef)
50   call void @llvm.invariant.end.p0i8({}* undef, i64 1, i8* undef)
51   %a2 = call i8* @llvm.launder.invariant.group.p0i8(i8* undef)
52   %a3 = call i8* @llvm.strip.invariant.group.p0i8(i8* undef)
53   %a4 = call i1 @llvm.is.constant.i32(i32 undef)
54   call void @llvm.lifetime.start.p0i8(i64 1, i8* undef)
55   call void @llvm.lifetime.end.p0i8(i64 1, i8* undef)
56   %a5 = call i64 @llvm.objectsize.i64.p0i8(i8* undef, i1 1, i1 1, i1 1)
57   %a6 = call i8* @llvm.ptr.annotation.p0i8(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
58   call void @llvm.var.annotation(i8* undef, i8* undef, i8* undef, i32 undef, i8* undef)
59   ret i32 undef
62 declare i32 @llvm.annotation.i32(i32, i8*, i8*, i32)
63 declare void @llvm.assume(i1)
64 declare void @llvm.experimental.noalias.scope.decl(metadata)
65 declare void @llvm.sideeffect()
66 declare void @llvm.dbg.declare(metadata, metadata, metadata)
67 declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
68 declare void @llvm.dbg.label(metadata)
69 declare {}* @llvm.invariant.start.p0i8(i64, i8*)
70 declare void @llvm.invariant.end.p0i8({}*, i64, i8*)
71 declare i8* @llvm.launder.invariant.group.p0i8(i8*)
72 declare i8* @llvm.strip.invariant.group.p0i8(i8*)
73 declare i1 @llvm.is.constant.i32(i32)
74 declare void @llvm.lifetime.start.p0i8(i64, i8*)
75 declare void @llvm.lifetime.end.p0i8(i64, i8*)
76 declare i64 @llvm.objectsize.i64.p0i8(i8*, i1, i1, i1)
77 declare i8* @llvm.ptr.annotation.p0i8(i8*, i8*, i8*, i32, i8*)
78 declare void @llvm.var.annotation(i8*, i8*, i8*, i32, i8*)
81 !0 = !DILocalVariable(scope: !1)
82 !1 = distinct !DISubprogram(name: "dummy", line: 79, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true)
83 !2 = !DILabel(scope: !1, name: "label", file: !3, line: 7)
84 !3 = !DIFile(filename: "debug-label.c", directory: "./")
85 !4 = !{ !5 }
86 !5 = distinct !{ !5, !6, !"foo: var" }
87 !6 = distinct !{ !6, !"foo" }