Yonghong Song wrote: > > > On 9/1/20 1:07 PM, Andrii Nakryiko wrote: > > On Mon, Aug 24, 2020 at 11:47 PM Yonghong Song <yhs@xxxxxx> wrote: > >> > >> bpf selftest test_progs/test_sk_assign failed with llvm 11 and llvm 12. > >> Compared to llvm 10, llvm 11 and 12 generates xor instruction which > > > > Does this mean that some perfectly working BPF programs will now fail > > to verify on older kernels, if compiled with llvm 11 or llvm 12? If > > Right. > > > yes, is there something that one can do to prevent Clang from using > > xor in such situations? > > The xor is generated by the combination of llvm simplifyCFG and > instrCombine phase. Another option would be to move it out of the isAsCheapAsAMove on the llvm side. But, probably better to force the workaround until kernels get support. Even with it being more expensive it wouldn't mean we never get it so likely not a great idea. Just thought it might be worth mentioning. If you have your own llvm and don't have these kernels yet it looks like a win. > > The following is a hack to prevent compiler from generating xor's.