xref: /llvm-project/llvm/test/Verifier/memprof-metadata-good.ll (revision c820f2a43eaba02db97c4ff60c58a58e6bdd391d)
1; Test that well-formed memprof and callsite metadata pass verification.
2; RUN: llvm-as -disable-output < %s 2>&1
3
4define ptr @test1() {
5entry:
6  %call = call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40), !memprof !0, !callsite !5
7  ret ptr %call
8}
9
10define ptr @test2() {
11entry:
12  %call = call noundef ptr @test1(), !callsite !6
13  ret ptr %call
14}
15
16define ptr @test3() {
17entry:
18  %call = call noundef ptr @test1(), !callsite !7
19  ret ptr %call
20}
21
22declare dso_local noalias noundef ptr @malloc(i64 noundef)
23
24!0 = !{!1, !3}
25; !memprof metadata should be able to support an arbitrary list of string tags.
26!1 = !{!2, !"default", !"tag2"}
27!2 = !{i64 123, i64 456}
28!3 = !{!4, !"cold", !"tag3", !"tag4"}
29!4 = !{i64 123, i64 789, i64 678}
30!5 = !{i64 123}
31!6 = !{i64 456}
32; Inlined callsites will have more than one call stack id.
33!7 = !{i64 789, i64 678}
34