Skip to content

Commit 6e36719

Browse files
arndbherbertx
authored andcommitted
crypto: aes-generic - fix aes-generic regression on powerpc
My last bugfix added -Os on the command line, which unfortunately caused a build regression on powerpc in some configurations. I've done some more analysis of the original problem and found slightly different workaround that avoids this regression and also results in better performance on gcc-7.0: -fcode-hoisting is an optimization step that got added in gcc-7 and that for all gcc-7 versions causes worse performance. This disables -fcode-hoisting on all compilers that understand the option. For gcc-7.1 and 7.2 I found the same performance as my previous patch (using -Os), in gcc-7.0 it was even better. On gcc-8 I could see no change in performance from this patch. In theory, code hoisting should not be able make things better for the AES cipher, so leaving it disabled for gcc-8 only serves to simplify the Makefile change. Reported-by: kbuild test robot <[email protected]> Link: https://www.mail-archive.com/[email protected]/msg30418.html Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356 Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83651 Fixes: 148b974 ("crypto: aes-generic - build with -Os on gcc-7+") Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent 5abc8db commit 6e36719

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

crypto/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ obj-$(CONFIG_CRYPTO_TWOFISH_COMMON) += twofish_common.o
9999
obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o
100100
CFLAGS_serpent_generic.o := $(call cc-option,-fsched-pressure) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79149
101101
obj-$(CONFIG_CRYPTO_AES) += aes_generic.o
102-
CFLAGS_aes_generic.o := $(call cc-ifversion, -ge, 0701, -Os) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356
102+
CFLAGS_aes_generic.o := $(call cc-option,-fno-code-hoisting) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356
103103
obj-$(CONFIG_CRYPTO_AES_TI) += aes_ti.o
104104
obj-$(CONFIG_CRYPTO_CAMELLIA) += camellia_generic.o
105105
obj-$(CONFIG_CRYPTO_CAST_COMMON) += cast_common.o

0 commit comments

Comments
 (0)