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 middle-end/32398] [4.3 Regression] checking for suffix of object files... configure: error: cannot compute suffix of f object files: cannot compile



------- Comment #8 from dave at hiauly1 dot hia dot nrc dot ca  2007-07-07 22:02 -------
Subject: Re:  [4.3 Regression] checking for suffix of object files...
configure: error: cannot compute suffix of f objeRO

The REG_DEAD problem is a red herring.  The notes are recomputed
after the sched1 dump.

The real problem is that the argument point register isn't marked
as being alive on entry.  On hppa64, the argument pointer isn't a
fixed register, it's not the same as the frame pointer, and it
can't be eliminated.

I'm trying the fix below.  However, I think df-scan.c needs fixing.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

Index: config/pa/pa.c
===================================================================
--- config/pa/pa.c      (revision 126442)
+++ config/pa/pa.c      (working copy)
@@ -156,8 +156,8 @@
 static enum reg_class pa_secondary_reload (bool, rtx, enum reg_class,
                                           enum machine_mode,
                                           secondary_reload_info *);
+static void pa_extra_live_on_entry (bitmap);

-
 /* The following extra sections are only used for SOM.  */
 static GTY(()) section *som_readonly_data_section;
 static GTY(()) section *som_one_only_readonly_data_section;
@@ -313,6 +313,9 @@
 #undef TARGET_SECONDARY_RELOAD
 #define TARGET_SECONDARY_RELOAD pa_secondary_reload

+#undef TARGET_EXTRA_LIVE_ON_ENTRY
+#define TARGET_EXTRA_LIVE_ON_ENTRY pa_extra_live_on_entry
+
 struct gcc_target targetm = TARGET_INITIALIZER;

 /* Parse the -mfixed-range= option string.  */
@@ -5735,6 +5738,17 @@
   return NO_REGS;
 }

+/* Implement TARGET_EXTRA_LIVE_ON_ENTRY.  The argument pointer
+   isn't a fixed register in the 64-bit runtime and we need to
+   record it as live on entry.  */
+
+static void
+pa_extra_live_on_entry (bitmap regs)
+{
+  if (TARGET_64BIT)
+    bitmap_set_bit (regs, ARG_POINTER_REGNUM);
+}
+
 /* In the 32-bit runtime, arguments larger than eight bytes are passed
    by invisible reference.  As a GCC extension, we also pass anything
    with a zero or variable size by reference.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32398


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