This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/63534] [5 Regression] Bootstrap failure on x86_64/i686-linux


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

--- Comment #4 from Stupachenko Evgeny <evstupac at gmail dot com> ---
Profiling implementation has hard coded "%ebx" use.
There are at least 2 quick solutions to resolve this:

1. Disable the changes for PIC profiling

Lead to different behavior with and without profiling of code with EBX asm
insertions. However could be applied as temporary solution as there are no EBX
asm insertions right now.

2.
print:
  push %ebx
  call    __x86.get_pc_thunk.bx
  addl    $_GLOBAL_OFFSET_TABLE_, %ebx

and pop %ebx at the end

Here:
  else if (flag_pic)
    {
#ifndef NO_PROFILE_COUNTERS
      fprintf (file, "\tleal\t%sP%d@GOTOFF(%%ebx),%%" PROFILE_COUNT_REGISTER
"\n",
               LPREFIX, labelno);
#endif
      fprintf (file, "1:\tcall\t*%s@GOT(%%ebx)\n", mcount_name);
    }

Lower profiling performance in PIC mode.

I vote for the second solution and can prepare patch for this.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]