void added a comment. In D110869#3295578 <https://reviews.llvm.org/D110869#3295578>, @nickdesaulniers wrote:
> In D110869#3295559 <https://reviews.llvm.org/D110869#3295559>, @void wrote: > >> Weird. We generate similar code to GCC: >> >> Clang: >> _paravirt_ident_64: # @_paravirt_ident_64 >> movq %rdi, %rax >> xorq %rdi, %rdi >> retq >> >> GCC: >> _paravirt_ident_64: >> movq %rdi, %rax # tmp85, x >> xorl %edi, %edi # >> ret > > Does `xorl` not zero the upper 32b? I'm thinking no. But it's odd, because both are using `%rdi` but GCC is only zeroing out the bottom 32-bits. Seems a bit counter-intuitive. > Definitely something magical about this function. Perhaps it should have the > function attribute to disable zeroing added to the kernel sources? > > tools/objtool/objtool.c mentions something about `_paravirt_ident_64` and > `paravirt_patch`. > > I'm curious @nathanchance if you move the definition of `_paravirt_ident_64` > to an external assembler file, and see whether the mere `xorl` vs `xorq` > makes a difference for some reason for boot? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D110869/new/ https://reviews.llvm.org/D110869 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits