FailedChanges

Summary

  1. [BPF] Add preserve_access_index attribute for record definition (details)
Commit 4a5aa1a7bf8b1714b817ede8e09cd28c0784228a by yhs
[BPF] Add preserve_access_index attribute for record definition
This patch introduced a new bpf specific attribute which can be added to
struct or union definition. For example,
struct s { ... } __attribute__((preserve_access_index));
union u { ... } __attribute__((preserve_access_index)); The goal is to
simplify user codes for cases where preserve access index happens for
certain struct/union, so user does not need to use clang
__builtin_preserve_access_index for every members.
The attribute has no effect if -g is not specified.
When the attribute is specified and -g is specified, any member access
defined by that structure or union, including array subscript access and
inner records, will be preserved through
__builtin_preserve_{array,struct,union}_access_index() IR intrinsics,
which will enable relocation generation in bpf backend.
The following is an example to illustrate the usage:
-bash-4.4$ cat t.c
#define __reloc__ __attribute__((preserve_access_index))
struct s1 {
   int c;
} __reloc__;
  struct s2 {
   union {
     struct s1 b[3];
   };
} __reloc__;
  struct s3 {
   struct s2 a;
} __reloc__;
  int test(struct s3 *arg) {
   return arg->a.b[2].c;
}
-bash-4.4$ clang -target bpf -g -S -O2 t.c
A relocation with access string "0:0:0:0:2:0" will be generated
representing access offset of arg->a.b[2].c.
forward declaration with attribute is also handled properly such that
the attribute is copied and populated in real record definition.
Differential Revision: https://reviews.llvm.org/D69759
The file was modifiedclang/include/clang/Basic/Attr.td
The file was addedclang/test/Sema/bpf-attr-preserve-access-index.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-4.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-3.c
The file was modifiedclang/lib/CodeGen/CGExpr.cpp
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-2.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-1.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-6.c
The file was modifiedclang/include/clang/Basic/DiagnosticSemaKinds.td
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-8.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-7.c
The file was addedclang/test/CodeGen/bpf-attr-preserve-access-index-5.c
The file was modifiedclang/include/clang/Basic/AttrDocs.td
The file was modifiedclang/lib/Sema/SemaDeclAttr.cpp