+2002-01-05 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.h (TARGET_POWERPC): For IN_LIBGCC2, define
+ as 1 for __powerpc64__ as well.
+
+ * config/rs6000/t-aix43 (T_ADAFLAGS): Define.
+
+ * alias.c (find_base_value, PLUS/MINUS): If we found a base,
+ return it.
+
2002-01-05 Daniel Berlin <dan@dberlin.org>
* lcm.c: Revert change, due to performance regression it causes on
{
rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
+ /* If either operand is a REG that is a known pointer, then it
+ is the base. */
+ if (REG_P (src_0) && REG_POINTER (src_0))
+ return find_base_value (src_0);
+ if (REG_P (src_1) && REG_POINTER (src_1))
+ return find_base_value (src_1);
+
/* If either operand is a REG, then see if we already have
a known value for it. */
- if (GET_CODE (src_0) == REG)
+ if (REG_P (src_0))
{
temp = find_base_value (src_0);
if (temp != 0)
src_0 = temp;
}
- if (GET_CODE (src_1) == REG)
+ if (REG_P (src_1))
{
temp = find_base_value (src_1);
if (temp!= 0)
src_1 = temp;
}
+ /* If either base is named object or a special address
+ (like an argument or stack reference), then use it for the
+ base term. */
+ if (src_0 != 0
+ && (GET_CODE (src_0) == SYMBOL_REF
+ || GET_CODE (src_0) == LABEL_REF
+ || (GET_CODE (src_0) == ADDRESS
+ && GET_MODE (src_0) != VOIDmode)))
+ return src_0;
+
+ if (src_1 != 0
+ && (GET_CODE (src_1) == SYMBOL_REF
+ || GET_CODE (src_1) == LABEL_REF
+ || (GET_CODE (src_1) == ADDRESS
+ && GET_MODE (src_1) != VOIDmode)))
+ return src_1;
+
/* Guess which operand is the base address:
If either operand is a symbol, then it is the base. If
either operand is a CONST_INT, then the other is the base. */
else if (GET_CODE (src_0) == CONST_INT || CONSTANT_P (src_1))
return find_base_value (src_1);
- /* This might not be necessary anymore:
- If either operand is a REG that is a known pointer, then it
- is the base. */
- else if (GET_CODE (src_0) == REG && REG_POINTER (src_0))
- return find_base_value (src_0);
- else if (GET_CODE (src_1) == REG && REG_POINTER (src_1))
- return find_base_value (src_1);
-
return 0;
}
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
SHLIB_NM_FLAGS = -Bpg
-# Both 32-bit and 64-bit objects in archives
-AR_FLAGS_FOR_TARGET=-X32_64
+# Either 32-bit and 64-bit objects in archives.
+AR_FLAGS_FOR_TARGET = -X32_64
+
+# Compile Ada files with minimal-toc. The primary focus is gnatlib, so
+# that the library does not use nearly the entire TOC of applications
+# until gnatlib is built as a shared library on AIX. Compiling the
+# compiler with -mminimal-toc does not cause any harm.
+T_ADAFLAGS = -mminimal-toc