This is the mail archive of the gcc-patches@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]

IA-64 -fregrename related bootstrap failure


IA-64 bootstraps broke when regrename became a default optimization
option.  This patch makes it work again.

The problem here is that the regrename pass uses the constraints to
identify output operands, and then it gives special treatment to output
operands that occur inside a COND_EXEC.  So any target which uses
COND_EXEC must make sure that all output operands have = constraints. 
There is a common convention to leave constraints off of call_value
patterns, so that they will accept any function result, including stuff
that doesn't look like a valid operand, such as a PARALLEL.  This breaks
regrename if you end up with an conditionally executed call_value insn.

This fixes the problem by adding the missing constaints.  Since calls
must accept any operand, I have to use X, even though using it here
looks a little funny.

With this patch, IA-64 bootstraps now work again.  My build failed in
libada, but that was apparently because a file was left out of the last
check in.

When I tried a remake, I got an error from libada about @gprel relocs
against dynamic symbols.  This happens when we link non-pic code into a
shared library.  This seems to be a problem with the structure of
libada.  It compiles every file twice in the same directory with the
same name.  First it compiles all files with -fPIC and creates the
shared library.  Then it compiles all files without -fPIC and creates
the static library.  If you try a rebuild, then it tries to relink the
shared library and fails because now we have non-pic .o files.  The
-fPIC and non-pic object files should be given different names so that
they don't conflict.

I am running make check, but decided to check the patch in before this
finishes because this fixes a bootstrap problem.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com

Attachment: patch.ia64.regrename
Description: Text document


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