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



--- Comment #3 from Alexander Kobets <akobets at mail dot ru> 2013-01-26 
14:30:42 UTC ---

(In reply to comment #2)

> Proposed patch:

It is correcting this code, but break another. For example (-mcmodel=large):

--cut here--

long* p1;



long foo2 (void)

{

    p1 = (long*)0x123;

    return 5;

}

--cut here--

$ x86_64-linux-gnu-gcc -c -mcmodel=large -save-temps l.c -O1 -masm=intel

l.s: Assembler messages:

l.s:10: Error: operand type mismatch for `movabs'



$ cat l.s

    .file    "l.c"

    .intel_syntax noprefix

    .text

    .globl    foo2

    .type    foo2, @function

foo2:

.LFB0:

    .cfi_startproc

    mov    eax, 291

    movabs    [OFFSET FLAT:p1], rax

    mov    ax, 5

    ret

    .cfi_endproc

.LFE0:

    .size    foo2, .-foo2

    .comm    p1,8,8

    .ident    "GCC: (GNU) 4.7.2"

    .section    .note.GNU-stack,"",@progbits



The instruction movabs [OFFSET FLAT:p1], rax

before patch was without square brackets and normal compiled.

Reply via email to