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 bootstrap/67789] Bootstrap failure with java starting at rev 228022


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

--- Comment #2 from Michael Meissner <meissner at gcc dot gnu.org> ---
I see similar failures, except it is in building the 32-bit module fpu.o in the
libgfortran library on a 64-bit big endian power7 box. It is failing in
building the 32-bit libraries. This is not seen in building little endian
power8, since that system no longer does not have 32-bit support.

I believe the issue is the prologue for -fpic/-fPIC is not expecting the
prologue to be cloned. It sets up the TOC address by calling to a label and
then adjusting the address to get the TOC pointer. The label is created
multiple times when the blocks are re-ordered. If -fno-reorder-blocks is given,
it does not clone the label definition.

As I see it, there are several ways to solve this problem:

1) Simply disable shrink-wrapping/reorder-blocks if V.4 pic. This is probably
just papering over the problem.

2) Add a target hook so the backend can say whether or not a particular
function's prologue can be split. The static function in rs6000.c uses_TOC
would return true if it shouldn't be split.

3) Recognize in shrink-wrap if labels are created in the prologue, and don't
shrink wrap them.


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