http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49832
--- Comment #1 from Uros Bizjak <ubizjak at gmail dot com> 2011-07-25 06:55:23
UTC ---
Please mark x32 bugs with [x32].
(In reply to comment #0)
> [hjl@gnu-6 ilp32-8]$ make x.o
> /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc
> -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -fPIC
> -dp x.i
> /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc
> -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -mx32 -O2 -fPIC -dp -c -o
> x.o x.s
> x.s: Assembler messages:
> x.s:18: Error: too many memory references for `lea'
> x.s:20: Error: too many memory references for `lea'
Works for me with current mainline + patch [1].
~/gcc-build/gcc/cc1 -O2 -fPIC -mx32 pr49832.c
bar:
.LFB0:
.cfi_startproc
subq $40, %rsp
.cfi_def_cfa_offset 48
movl %edi, 16(%rsp)
movq %rsp, %rdi
movl $.LC0, (%rsp)
movl $8, 4(%rsp)
movl $.LC1, 8(%rsp)
movl $16, 12(%rsp)
movl %esi, 20(%rsp)
call foo@PLT
addq $40, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE0:
Please rewrite PIC handling on top of patch [1].
[1] http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02089.html