This is the mail archive of the gcc-patches@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]

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:


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