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

            Bug ID: 78853
           Summary: aligned reads/writes (vmovdqa) emitted when no such
                    guarantee can be made
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gonnet at google dot com
  Target Milestone: ---

I have an example on https://godbolt.org/g/qZ4SuT, this produces incorrect code
since at least gcc-4.9.1 (didn't test earlier).

I have a function that swaps to pieces of memory using vectorized read/write
instructions. When I pass it a 28-byte struct that has been padded to 32 bytes,
it emits two vmovdqa reads and writes.

The problem is that it does this even when it can't guarantee that the pointers
provided to it are aligned correctly.

Reply via email to