bpf: add inline memset expansion
commiteae6b63b5b5426f943f58b5ae0bf0a6068ca8ad6
authorDavid Faust <david.faust@oracle.com>
Mon, 4 Mar 2024 17:35:01 +0000 (4 09:35 -0800)
committerDavid Faust <david.faust@oracle.com>
Mon, 4 Mar 2024 19:48:18 +0000 (4 11:48 -0800)
tree83c54d59af77c09a07b8161ca1c386850e5cf02a
parentaadb311c1a3712a1360a252ae21cf7f375959b5c
bpf: add inline memset expansion

Similar to memmove and memcpy, the BPF backend cannot fall back on a
library call to implement __builtin_memset, and should always expand
calls to it inline if possible.

This patch implements simple inline expansion of memset in the BPF
backend in a verifier-friendly way. Similar to memcpy and memmove, the
size must be an integer constant, as is also required by clang.

gcc/
* config/bpf/bpf-protos.h (bpf_expand_setmem): New prototype.
* config/bpf/bpf.cc (bpf_expand_setmem): New.
* config/bpf/bpf.md (setmemdi): New define_expand.

gcc/testsuite/
* gcc.target/bpf/memset-1.c: New test.
gcc/config/bpf/bpf-protos.h
gcc/config/bpf/bpf.cc
gcc/config/bpf/bpf.md
gcc/testsuite/gcc.target/bpf/memset-1.c [new file with mode: 0644]