Remove CONST_DOUBLE_MEM from config files

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Tue Nov 6 06:48:00 GMT 2001


Tue Nov  6 09:21:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.h (mem_for_const_double): New declaration.
	* varasm.c (mem_for_const_double): New function.
	* config/convex/convex.md (movdf): Use it.
	* config/m68k/hp320.h (LEGITIMATE_PIC_OPERAND_P): Likewise.
	* config/m68k/linux.h, config/m68k/m68k.h: Likewise.
	* config/m68k/m68kv4.h: Likewise.

*** rtl.h	2001/11/03 16:28:33	1.311
--- rtl.h	2001/11/06 14:03:11
*************** extern rtx gen_sequence			PARAMS ((void)
*** 1274,1277 ****
--- 1274,1278 ----
  /* In varasm.c  */
  extern rtx immed_double_const		PARAMS ((HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode));
+ extern rtx mem_for_const_double		PARAMS ((rtx));
  extern rtx force_const_mem		PARAMS ((enum machine_mode, rtx));
  
*** varasm.c	2001/11/03 16:28:33	1.224
--- varasm.c	2001/11/06 14:03:23
*************** record_constant_rtx (mode, x)
*** 3757,3760 ****
--- 3757,3778 ----
  }
  
+ /* Given a constant rtx X, return a MEM for the location in memory at which
+    this constant has been placed.  Return 0 if it not has been placed yet.  */
+ 
+ rtx
+ mem_for_const_double (x)
+      rtx x;
+ {
+   enum machine_mode mode = GET_MODE (x);
+   struct constant_descriptor *desc;
+ 
+   for (desc = const_rtx_hash_table[const_hash_rtx (mode, x)]; desc;
+        desc = desc->next)
+     if (compare_constant_rtx (mode, x, desc))
+       return desc->rtl;
+ 
+   return 0;
+ }
+   
  /* Given a constant rtx X, make (or find) a memory constant for its value
     and return a MEM rtx to refer to it in memory.  */
*** config/convex/convex.md	2001/03/07 19:29:37	1.5
--- config/convex/convex.md	2001/11/06 14:03:41
***************
*** 207,211 ****
    [(set (match_operand:DF 0 "register_operand" "=d")
  	(match_operand:DF 1 "const_double_operand" "F"))]
!   "CONST_DOUBLE_MEM (operands[1]) == const0_rtx"
    "ld.u %u1,%0\;ld.w %v1,%0"
    [(set_attr "type" "xalu")])
--- 207,211 ----
    [(set (match_operand:DF 0 "register_operand" "=d")
  	(match_operand:DF 1 "const_double_operand" "F"))]
!   "mem_for_const_double (operands[1]) == 0"
    "ld.u %u1,%0\;ld.w %v1,%0"
    [(set_attr "type" "xalu")])
*** config/m68k/hp320.h	2001/11/01 14:49:32	1.11
--- config/m68k/hp320.h	2001/11/06 14:03:44
*************** do { register int i;			\
*** 626,633 ****
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X)	\
! 	  && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM		\
! 	  && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0), VOIDmode))) \
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       \
     || PCREL_GENERAL_OPERAND_OK)
  
--- 626,634 ----
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && mem_for_const_double (X) != 0	\
! 	  && GET_CODE (mem_for_const_double (X)) == MEM			\
! 	  && symbolic_operand (XEXP (mem_for_const_double (X), 0),	\
! 			       VOIDmode))) 				\
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       	\
     || PCREL_GENERAL_OPERAND_OK)
  
*** config/m68k/linux.h	2001/11/01 14:49:32	1.16
--- config/m68k/linux.h	2001/11/06 14:03:45
*************** do {									\
*** 311,318 ****
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X)	\
! 	  && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM		\
! 	  && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0), VOIDmode))) \
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       \
     || PCREL_GENERAL_OPERAND_OK)
  
--- 311,319 ----
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && mem_for_const_double (X) != 0	\
! 	  && GET_CODE (mem_for_const_double (X)) == MEM			\
! 	  && symbolic_operand (XEXP (mem_for_const_double (X), 0),	\
! 			       VOIDmode))) 				\
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       	\
     || PCREL_GENERAL_OPERAND_OK)
  
*** config/m68k/m68k.h	2001/11/01 14:49:32	1.56
--- config/m68k/m68k.h	2001/11/06 14:03:48
*************** __transfer_from_trampoline ()					\
*** 1460,1468 ****
  #define LEGITIMATE_PIC_OPERAND_P(X)	\
    ((! symbolic_operand (X, VOIDmode)				\
!     && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X)	\
! 	  && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM		\
! 	  && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0),	\
! 			       VOIDmode)))			\
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))	\
     || PCREL_GENERAL_OPERAND_OK)
  
--- 1460,1468 ----
  #define LEGITIMATE_PIC_OPERAND_P(X)	\
    ((! symbolic_operand (X, VOIDmode)				\
!     && ! (GET_CODE (X) == CONST_DOUBLE && mem_for_const_double (X) != 0	\
! 	  && GET_CODE (mem_for_const_double (X)) == MEM			\
! 	  && symbolic_operand (XEXP (mem_for_const_double (X), 0),	\
! 			       VOIDmode))) 				\
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))		\
     || PCREL_GENERAL_OPERAND_OK)
  
*** config/m68k/m68kv4.h	2001/11/01 14:49:33	1.13
--- config/m68k/m68kv4.h	2001/11/06 14:03:49
*************** int switch_table_difference_label_flag;
*** 279,286 ****
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X)	\
! 	  && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM		\
! 	  && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0), VOIDmode))) \
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       \
     || PCREL_GENERAL_OPERAND_OK)
  
--- 279,287 ----
  #define LEGITIMATE_PIC_OPERAND_P(X) \
    ((! symbolic_operand (X, VOIDmode) \
!     && ! (GET_CODE (X) == CONST_DOUBLE && mem_for_const_double (X) != 0	\
! 	  && GET_CODE (mem_for_const_double (X)) == MEM			\
! 	  && symbolic_operand (XEXP (mem_for_const_double (X), 0),	\
! 			       VOIDmode))) 				\
!    || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))       	\
     || PCREL_GENERAL_OPERAND_OK)
  



More information about the Gcc-patches mailing list