On Mon, 30 Nov 2020 at 13:42, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > Hi Ard, > > On Mon, Nov 30, 2020 at 1:26 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > Geert reports that builds where CONFIG_CRYPTO_AEGIS128_SIMD is not set > > may still emit references to crypto_aegis128_update_simd(), which > > cannot be satisfied and therefore break the build. These references > > only exist in functions that can be optimized away, but apparently, > > the compiler is not always able to prove this. > > The code is not unreachable. Both crypto_aegis128_encrypt_simd() and > crypto_aegis128_decrypt_simd() call crypto_aegis128_process_ad(..., true); > Those functions themselves can be optimized away too, as well as struct aead_alg crypto_aegis128_alg_simd, which is the only thing that refers to those functions, and is itself only referenced inside a 'if (IS_ENABLED(CONFIG_CRYPTO_AEGIS128_SIMD))' conditional block. This is why it works fine most of the time.