https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88965

--- Comment #1 from Anton Blanchard <anton at samba dot org> ---
Here's something more representative. Passing the address via an explicit
pointer makes the issue go away.


#include <stdint.h>
#include <altivec.h>

#define LOADU(p)        vec_vsx_ld(0, (vector unsigned long *)(p))

static uint64_t blake2b_IV[8] =
{
        0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL,
        0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL,
        0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL,
        0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL
};

vector unsigned long ret;

int main(void)
{
#ifdef GOOD
        unsigned long *p = &blake2b_IV[0];

        ret = LOADU(p);
#else
        ret = LOADU(&blake2b_IV[0]);
#endif
}

Reply via email to