annotate clang/test/CodeGen/builtins-bpf-preserve-field-info-3.c @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 // REQUIRES: bpf-registered-target
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 // RUN: %clang -target bpf -emit-llvm -S -g -Xclang -disable-llvm-passes %s -o - | FileCheck %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #define _(x, y) (__builtin_preserve_type_info((x), (y)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 struct s {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 char a;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 };
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 typedef int __int;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 enum AA {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 VAL1 = 1,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 VAL2 = 2,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 };
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 unsigned unit1() {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 struct s v = {};
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 return _(v, 0) + _(*(struct s *)0, 0);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 0, i64 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_S:[0-9]+]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 1, i64 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[STRUCT_S]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 unsigned unit2() {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 __int n;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 return _(n, 1) + _(*(__int *)0, 1);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 2, i64 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[TYPEDEF_INT:[0-9]+]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 3, i64 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[TYPEDEF_INT]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 unsigned unit3() {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 enum AA t;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 return _(t, 0) + _(*(enum AA *)0, 1);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 4, i64 0), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[ENUM_AA:[0-9]+]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 // CHECK: call i32 @llvm.bpf.preserve.type.info(i32 5, i64 1), !dbg !{{[0-9]+}}, !llvm.preserve.access.index ![[ENUM_AA]]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 // CHECK: ![[ENUM_AA]] = !DICompositeType(tag: DW_TAG_enumeration_type, name: "AA"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 // CHECK: ![[TYPEDEF_INT]] = !DIDerivedType(tag: DW_TAG_typedef, name: "__int"
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 // CHECK: ![[STRUCT_S]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s"