Dmytro Kovalov via Gnupg-users wrote:
Hello,
I found a strange libgcrypt behavior on ARM with clang built.
There is a big gap in performance of libgcrypt, built by clang, in
comparison with gcc on my ARM target machine.
The simple profile test shows 100-500% advantage of gcc gcrypt.
I found an awkward workaround to beat this issue, but need your help
to find the best way to fix it.
The root cause is next:
Due to clang strict assembler syntax rules the unified assembler ARM
check doesn't pass.
Assembler check fails while ./configure for flags:
HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
HAVE_GCC_INLINE_ASM_NEON
As a workaround I remove '%' from registers names in
configure.ac <http://configure.ac/>,
arm mips lib *.S files,
cipher/*arm.S,*armv7-neon.S files.
Could you please help with a more correct - polite way to compile
libgcrypt with assembler code?
I would suggest using the GNU toolchain. :-)
The problem is that the GNU assembler traditionally expects register
names to be prefixed with %, using a syntax based on that of the old
AT&T assembler and known (simply enough) as "AT&T syntax" while many
vendor assemblers use a different syntax. Note that the configure tests
in question are for GCC-or-strictly-compatible. If clang does not
support the GNU assembler syntax, then it is not fully compatible with
GCC, and libgcrypt is being compiled correctly.
Since LLVM claims compatibility with GCC, you should direct your
complaints there: CLang apparently claims compatibility with the GNU
toolchain, but does not support GNU assembler syntax.
-- Jacob
_______________________________________________
Gnupg-users mailing list
Gnupg-users@gnupg.org
https://lists.gnupg.org/mailman/listinfo/gnupg-users