http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49798

           Summary: .quad instead of .long is used for address for x32
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: hjl.to...@gmail.com


---
union U
{
  int *m;
  double d;
};

extern int xxxx;

int
foo (union U u)
{
  union U v = { &xxxx};
  return u.d == v.d;
}
---

I got

[hjl@gnu-6 gcc]$ ./xgcc -B./ -mx32 -O2 -S x.c 
[hjl@gnu-6 gcc]$ cat x.s
    .file    "x.c"
    .text
    .p2align 4,,15
    .globl    foo
    .type    foo, @function
foo:
.LFB0:
    .cfi_startproc
    movq    %rdi, -8(%rsp)
    movsd    .LC0(%rip), %xmm1
    movsd    -8(%rsp), %xmm0
    movl    $1, %eax
    ucomisd    %xmm1, %xmm0
    jp    .L3
    jne    .L3
    rep
    ret
    .p2align 4,,10
    .p2align 3
.L3:
    xorl    %eax, %eax
    .p2align 4,,9
    ret
    .cfi_endproc
.LFE0:
    .size    foo, .-foo
    .section    .rodata.cst8,"aM",@progbits,8
    .align 8
.LC0:
    .quad    xxxx
    .ident    "GCC: (GNU) 4.7.0 20110720 (experimental)"
    .section    .note.GNU-stack,"",@progbits
[hjl@gnu-6 gcc]$

Reply via email to