https://sourceware.org/bugzilla/show_bug.cgi?id=26685
--- Comment #14 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Jan Beulich from comment #13) > (In reply to H.J. Lu from comment #12) > > (In reply to Jan Beulich from comment #11) > > > (In reply to H.J. Lu from comment #10) > > > > symbol(%rip) is similar to symbol and DISP. There is no real register > > > > in memory operand. > > > > > > I disagree - the compiler ought to emit > > > > > > movdir64b foo(%eip), %eax This isn't necessary for x32. > > > > > > or > > > > > > movdir64b foo(%rip), %rax > > > > This is wrong for x32. > > You mean both, or (I assume) just the latter? > > > > in this case, whatever fits the x32 model better. The compiler ought to in > > > particular be aware that the register operand of this insn is > > > address-size-prefix, not operand-size-/REX-prefix controlled. > > > > There is no RIP register in GCC. It isn't a real register. GCC always > > generate foo(%rip). > > That's not interesting, it's a gcc internal thing how to arrange for correct > code to be generated. At the insn template level it's only %<number> anyway. > What is needed is some sort of flag to indicate that in this specific case > it needs to be foo(%eip). No, we don't want 0x67 prefix for RIP-relative addressing for x32. -- You are receiving this mail because: You are on the CC list for the bug.
