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

            Bug ID: 71264
           Summary: ICE in convert_move
           Product: gcc
           Version: 4.8.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ikonomisma at googlemail dot com
  Target Milestone: ---

The following testcase causes an ICE on gcc 4.8.4 x86_64-linux-gnu.
Reproducible on gcc.godbolt.org for gcc versions since gcc 4.8, up to and
including gcc 6.1, also for gcc 4.8 AArch64.

#include <stdint.h>
#include <stddef.h>
#include <string.h>

//ICE for gcc -std=gnu11/c11/gnu99/c99 -O1 -ftree-vectorize -S
typedef uint8_t footype __attribute__((vector_size(4)));

void test(uint8_t *ptr, uint8_t *mask)
{
  footype mv;
  memcpy(&mv, mask, sizeof(mv));
  for (size_t i = 0; i < 16; i += 4)
    {
      footype temp;
      memcpy(&temp, &ptr[i], sizeof(temp));
      temp ^= mv;
      memcpy(&ptr[i], &temp, sizeof(temp));
    }
}

Reply via email to