* 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
+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
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)
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
-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.
#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 *));
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
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
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));