Makefile.in (rtlanal.o): Depend on hard-reg-set.h.
authorJeffrey A Law <law@cygnus.com>
Mon, 19 Feb 2001 00:05:49 +0000 (00:05 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 19 Feb 2001 00:05:49 +0000 (17:05 -0700)
       * Makefile.in (rtlanal.o): Depend on hard-reg-set.h.
        ($HOST_PREFIX_1)rtlanal.o: Remove rules for building
        (mostlyclean): Corresponding changes.
        * rtlanal.c (hard-reg-set.h): Include.
        (rtx_unstable_p): Do not treat the argument pointer specially
        if it is not a fixed register.
        (rtx_varies_p, rtx_addr_can_trap_p): Similarly.

From-SVN: r39860

gcc/ChangeLog
gcc/Makefile.in
gcc/rtlanal.c

index 571a1ca299bb458c5cec32e97c30a22132d1e6a6..8b64e261cad5c5e6f79267212f7358b6fd71bfc6 100644 (file)
@@ -1,3 +1,13 @@
+Sun Feb 18 17:05:50 2001  Jeffrey A Law  (law@cygnus.com)
+
+       * Makefile.in (rtlanal.o): Depend on hard-reg-set.h.
+       ($HOST_PREFIX_1)rtlanal.o: Remove rules for building
+       (mostlyclean): Corresponding changes.
+       * rtlanal.c (hard-reg-set.h): Include.
+       (rtx_unstable_p): Do not treat the argument pointer specially
+       if it is not a fixed register.
+       (rtx_varies_p, rtx_addr_can_trap_p): Similarly.
+
 Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * sibcall.c (optimize_sibling_and_tail_recursive_call): Compare
index 671107bc912c4fb01d603f89a515a72c9d3cb6d6..b71ca649bca7fabf07f1f3b2277ef7a57f70c6e1 100644 (file)
@@ -1352,7 +1352,7 @@ rtl.o : rtl.c $(GCONFIG_H) system.h $(RTL_H) bitmap.h $(GGC_H) toplev.h
 print-rtl.o : print-rtl.c $(GCONFIG_H) system.h $(RTL_H) hard-reg-set.h \
     $(BASIC_BLOCK_H)
        $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
-rtlanal.o : rtlanal.c $(CONFIG_H) system.h toplev.h $(RTL_H)
+rtlanal.o : rtlanal.c $(CONFIG_H) system.h toplev.h $(RTL_H) hard-reg-set.h
 errors.o : errors.c $(GCONFIG_H) system.h errors.h
        $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
 
@@ -1832,11 +1832,6 @@ $(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(CONFIG_H) system.h $(RTL_H) \
        sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)bitmap.c
 
-$(HOST_PREFIX_1)rtlanal.o: $(srcdir)/rtlanal.c $(CONFIG_H) system.h $(RTL_H)
-       rm -f $(HOST_PREFIX)rtlanal.c
-       sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtlanal.c > $(HOST_PREFIX)rtlanal.c
-       $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtlanal.c
-
 $(HOST_PREFIX_1)alloca.o: $(srcdir)/../libiberty/alloca.c
        rm -f $(HOST_PREFIX)alloca.c
        $(LN_S) $(srcdir)/../libiberty/alloca.c $(HOST_PREFIX)alloca.c
@@ -2292,7 +2287,7 @@ mostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean
        -rm -f $(STAGESTUFF)
        -rm -rf libgcc
 # Delete the temporary source copies for cross compilation.
-       -rm -f $(HOST_PREFIX_1)rtl.c $(HOST_PREFIX_1)rtlanal.c
+       -rm -f $(HOST_PREFIX_1)rtl.c
        -rm -f $(HOST_PREFIX_1)alloca.c $(HOST_PREFIX_1)malloc.c
        -rm -f $(HOST_PREFIX_1)obstack.c
 # Delete the temp files made in the course of building libgcc.a.
index 5dc2af586a33ca3a7fa9489ea7518057ca01b612..6e6ed8e7b2b59fcee9a417d56edd113309940fed 100644 (file)
@@ -24,6 +24,7 @@ Boston, MA 02111-1307, USA.  */
 #include "system.h"
 #include "toplev.h"
 #include "rtl.h"
+#include "hard-reg-set.h"
 
 /* Forward declarations */
 static void set_of_1           PARAMS ((rtx, rtx, void *));
@@ -67,7 +68,9 @@ rtx_unstable_p (x)
     case REG:
       /* As in rtx_varies_p, we have to use the actual rtx, not reg number.  */
       if (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
-         || x == arg_pointer_rtx || RTX_UNCHANGING_P (x))
+         /* The arg pointer varies if it is not a fixed register.  */
+         || (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])
+         || RTX_UNCHANGING_P (x))
        return 0;
 #ifndef PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
       /* ??? When call-clobbered, the value is stable modulo the restore
@@ -143,7 +146,8 @@ rtx_varies_p (x, for_alias)
         eliminated the frame and/or arg pointer and are using it
         for pseudos.  */
       if (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
-         || x == arg_pointer_rtx)
+         /* The arg pointer varies if it is not a fixed register.  */
+         || (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM]))
        return 0;
       if (x == pic_offset_table_rtx
 #ifdef PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
@@ -211,7 +215,9 @@ rtx_addr_can_trap_p (x)
     case REG:
       /* As in rtx_varies_p, we have to use the actual rtx, not reg number.  */
       return ! (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
-               || x == stack_pointer_rtx || x == arg_pointer_rtx);
+               || x == stack_pointer_rtx
+               /* The arg pointer varies if it is not a fixed register.  */
+               || (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM]));
 
     case CONST:
       return rtx_addr_can_trap_p (XEXP (x, 0));