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

--- Comment #97 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
I thought that at that point t is the type of to the outer reference.

thus in this example:
cat t1.c
#include <x86intrin.h>

union xx {
  __m64 m;
  long long l;
};

union xx t;

__m64
test(long long x)
{
 t.l=x;
 return t.m;
}

gcc -S t1.c -fdump-rtl-final

I see this in t1.c.309r.final

(insn 7 6 8 2 (set (mem/j/c:DI (symbol_ref:DI ("t") [flags 0x2]  <var_decl
0x7fe3bff8a090 t>) [1 t.l+0 S8 A64])
        (reg:DI 0 ax [89])) "t1.c":13 81 {*movdi_internal}
     (nil))
(insn 8 7 11 2 (set (reg:V2SI 0 ax [orig:87 _4 ] [87])
        (mem/j/c:V2SI (symbol_ref:DI ("t") [flags 0x2]  <var_decl
0x7fe3bff8a090 t>) [1 t.m+0 S8 A64])) "t1.c":14 1100 {*movv2si_internal}
     (nil))

Reply via email to