llvm-project/llvm/test/CodeGen/BPF
Yonghong Song 329abf2939 [BPF] fix typedef issue for offset relocation
Currently, the CO-RE offset relocation does not work
if any struct/union member or array element is a typedef.
For example,
  typedef const int arr_t[7];
  struct input {
      arr_t a;
  };
  func(...) {
       struct input *in = ...;
       ... __builtin_preserve_access_index(&in->a[1]) ...
  }
The BPF backend calculated default offset is 0 while
4 is the correct answer. Similar issues exist for struct/union
typedef's.

When getting struct/union member or array element type,
we should trace down to the type by skipping typedef
and qualifiers const/volatile as this is what clang did
to generate getelementptr instructions.
(const/volatile member type qualifiers are already
ignored by clang.)

This patch fixed this issue, for each access index,
skipping typedef and const/volatile/restrict BTF types.

Signed-off-by: Yonghong Song <yhs@fb.com>

Differential Revision: https://reviews.llvm.org/D65259

llvm-svn: 367062
2019-07-25 21:47:27 +00:00
..
BTF [BPF] Support for compile once and run everywhere 2019-07-09 15:28:41 +00:00
CORE [BPF] fix typedef issue for offset relocation 2019-07-25 21:47:27 +00:00
32-bit-subreg-alu.ll
32-bit-subreg-cond-select.ll
32-bit-subreg-load-store.ll
32-bit-subreg-peephole.ll
alu8.ll
atomics.ll
basictest.ll
byval.ll
cc_args.ll
cc_args_be.ll
cc_ret.ll
cmp.ll
dwarfdump.ll
elf-symbol-information.ll
ex1.ll
fi_ri.ll
inline_asm.ll
inlineasm-output-template.ll [AsmPrinter] refactor to support %c w/ GlobalAddress' 2019-04-26 18:45:04 +00:00
intrinsics.ll
lit.local.cfg
load.ll
loops.ll
many_args1.ll
many_args2.ll
mem_offset.ll
mem_offset_be.ll
memcpy-expand-in-order.ll
objdump_atomics.ll
objdump_cond_op.ll
objdump_cond_op_2.ll
objdump_imm_hex.ll
objdump_intrinsics.ll
objdump_static_var.ll [BPF] Don't fail for static variables 2019-02-27 05:36:15 +00:00
objdump_trivial.ll
reloc-btf-2.ll [BPF] Support for compile once and run everywhere 2019-07-09 15:28:41 +00:00
reloc-btf.ll [llvm-objdump] - Print relocation record in a GNU format. 2019-05-07 13:14:18 +00:00
reloc.ll [llvm-objdump] - Print relocation record in a GNU format. 2019-05-07 13:14:18 +00:00
remove_truncate_1.ll
remove_truncate_2.ll
remove_truncate_3.ll
remove_truncate_4.ll
remove_truncate_5.ll Revert r354244 "[DAGCombiner] Eliminate dead stores to stack." 2019-02-18 08:24:29 +00:00
rodata_1.ll
rodata_2.ll
rodata_3.ll
rodata_4.ll
sanity.ll
sdiv_error.ll
select_ri.ll
setcc.ll
shifts.ll
sockex2.ll
struct_ret1.ll
struct_ret2.ll
undef.ll [DAGCombiner] If a TokenFactor would be merged into its user, consider the user later. 2019-03-13 17:07:09 +00:00
vararg1.ll
warn-call.ll
warn-stack.ll
xadd.ll bpf: enable sub-register code-gen for XADD 2019-02-28 19:21:28 +00:00
xadd_legal.ll bpf: enable sub-register code-gen for XADD 2019-02-28 19:21:28 +00:00