This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
32/64 bug in alias.c
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 12 Feb 02 10:17:22 EST
- Subject: 32/64 bug in alias.c
This shows up when compiling the Ada RTS file s-secsta.adb wigth
-gnatpgn -O2 on Alpha/OpenVMS. Tested on that system.
Tue Feb 12 10:12:56 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* alias.c (find_base_value, case ZERO_EXTEND, case SIGN_EXTEND):
Handle #ifdef POINTERS_EXTEND_UNSIGNED.
*** alias.c 2002/02/07 08:57:03 1.163
--- alias.c 2002/02/12 13:22:32
*************** find_base_value (src)
*** 729,732 ****
--- 729,733 ----
{
unsigned int regno;
+
switch (GET_CODE (src))
{
*************** find_base_value (src)
*** 847,852 ****
break;
/* Fall through. */
- case ZERO_EXTEND:
- case SIGN_EXTEND: /* used for NT/Alpha pointers */
case HIGH:
case PRE_INC:
--- 848,851 ----
*************** find_base_value (src)
*** 857,860 ****
--- 856,872 ----
case POST_MODIFY:
return find_base_value (XEXP (src, 0));
+
+ case ZERO_EXTEND:
+ case SIGN_EXTEND: /* used for NT/Alpha pointers */
+ {
+ rtx temp = find_base_value (XEXP (src, 0));
+
+ #ifdef POINTERS_EXTEND_UNSIGNED
+ if (temp != 0 && CONSTANT_P (temp) && GET_MODE (temp) != Pmode)
+ temp = convert_memory_address (Pmode, temp);
+ #endif
+
+ return temp;
+ }
default: