From 7fd308cffa3775f62d69b63bc9b1cefced10d817 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <rdsandiford@googlemail.com>
Date: Wed, 11 Jun 2014 16:59:01 +0000
Subject: [PATCH] system.h (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Poison.

gcc/
	* system.h (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Poison.
	* genpreds.c (have_const_dbl_constraints): Delete.
	(add_constraint): Don't set it.
	(write_tm_preds_h): Don't call CONST_DOUBLE_OK_FOR_CONSTRAINT_P.
	* ira-costs.c (record_reg_classes): Handle CONST_INT and CONST_DOUBLE
	constraints using the lookup_constraint logic.
	* ira-lives.c (single_reg_class): Likewise.
	* ira.c (ira_setup_alts): Likewise.
	* lra-constraints.c (process_alt_operands): Likewise.
	* recog.c (asm_operand_ok, constrain_operands): Likewise.
	* reload.c (find_reloads): Likewise.

From-SVN: r211474
---
 gcc/ChangeLog         | 14 +++++++++
 gcc/genpreds.c        |  7 -----
 gcc/ira-costs.c       | 20 ------------
 gcc/ira-lives.c       | 31 ++-----------------
 gcc/ira.c             | 20 ------------
 gcc/lra-constraints.c | 20 ------------
 gcc/recog.c           | 72 -------------------------------------------
 gcc/reload.c          | 20 ------------
 gcc/system.h          |  2 +-
 9 files changed, 18 insertions(+), 188 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3452b6df469b..3a6e9d7b8d3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2014-06-11  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* system.h (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Poison.
+	* genpreds.c (have_const_dbl_constraints): Delete.
+	(add_constraint): Don't set it.
+	(write_tm_preds_h): Don't call CONST_DOUBLE_OK_FOR_CONSTRAINT_P.
+	* ira-costs.c (record_reg_classes): Handle CONST_INT and CONST_DOUBLE
+	constraints using the lookup_constraint logic.
+	* ira-lives.c (single_reg_class): Likewise.
+	* ira.c (ira_setup_alts): Likewise.
+	* lra-constraints.c (process_alt_operands): Likewise.
+	* recog.c (asm_operand_ok, constrain_operands): Likewise.
+	* reload.c (find_reloads): Likewise.
+
 2014-06-11  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* genpreds.c (const_int_start, const_int_end): New variables.
diff --git a/gcc/genpreds.c b/gcc/genpreds.c
index c50b9cda38a2..cc91139a8495 100644
--- a/gcc/genpreds.c
+++ b/gcc/genpreds.c
@@ -684,7 +684,6 @@ static bool have_memory_constraints;
 static bool have_address_constraints;
 static bool have_extra_constraints;
 static bool have_const_int_constraints;
-static bool have_const_dbl_constraints;
 static unsigned int num_constraints;
 
 static const constraint_data **enum_order;
@@ -888,7 +887,6 @@ add_constraint (const char *name, const char *regclass,
   constraint_max_namelen = MAX (constraint_max_namelen, strlen (name));
   have_register_constraints |= c->is_register;
   have_const_int_constraints |= c->is_const_int;
-  have_const_dbl_constraints |= c->is_const_dbl;
   have_extra_constraints |= c->is_extra;
   have_memory_constraints |= c->is_memory;
   have_address_constraints |= c->is_address;
@@ -1375,11 +1373,6 @@ write_tm_preds_h (void)
 	      "{\n"
 	      "  return false;\n"
 	      "}\n");
-      if (have_const_dbl_constraints)
-	puts ("#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) \\\n"
-	      "    constraint_satisfied_p (v_, lookup_constraint (s_))\n");
-      else
-	puts ("#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) 0\n");
 
       puts ("enum constraint_type\n"
 	    "{\n"
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 795238f75f6f..5d317560d67e 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -703,13 +703,6 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
 		    win = 1;
 		  break;
 
-		case 'G':
-		case 'H':
-		  if (CONST_DOUBLE_AS_FLOAT_P (op) 
-		      && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
-		    win = 1;
-		  break;
-
 		case 's':
 		  if (CONST_SCALAR_INT_P (op)) 
 		    break;
@@ -725,19 +718,6 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
 		    win = 1;
 		  break;
 
-		case 'I':
-		case 'J':
-		case 'K':
-		case 'L':
-		case 'M':
-		case 'N':
-		case 'O':
-		case 'P':
-		  if (CONST_INT_P (op)
-		      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), c, p))
-		    win = 1;
-		  break;
-
 		case 'X':
 		  win = 1;
 		  break;
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c
index e173ae367122..af8ec2b80d47 100644
--- a/gcc/ira-lives.c
+++ b/gcc/ira-lives.c
@@ -801,23 +801,6 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
 	    return NO_REGS;
 	  break;
 
-	case 'I':
-	case 'J':
-	case 'K':
-	case 'L':
-	case 'M':
-	case 'N':
-	case 'O':
-	case 'P':
-	  if ((CONST_INT_P (op)
-	       && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), c, constraints))
-	      || (equiv_const != NULL_RTX
-		  && CONST_INT_P (equiv_const)
-		  && CONST_OK_FOR_CONSTRAINT_P (INTVAL (equiv_const),
-						c, constraints)))
-	    return NO_REGS;
-	  break;
-
 	case 'E':
 	case 'F':
 	  if (CONST_DOUBLE_AS_FLOAT_P (op) 
@@ -831,17 +814,9 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
 	    return NO_REGS;
 	  break;
 
-	case 'G':
-	case 'H':
-	  if ((CONST_DOUBLE_AS_FLOAT_P (op) 
-	       && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, constraints))
-	      || (equiv_const != NULL_RTX
-		  && CONST_DOUBLE_AS_FLOAT_P (equiv_const) 
-		  && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (equiv_const,
-						       c, constraints)))
-	    return NO_REGS;
-	  break;
-
+	case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
+	case 'O': case 'P':
+	case 'G': case 'H':
 	case 'r':
 	case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
 	case 'h': case 'j': case 'k': case 'l':
diff --git a/gcc/ira.c b/gcc/ira.c
index f85ced33a8bd..f724fd4b4d2b 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1883,13 +1883,6 @@ ira_setup_alts (rtx insn, HARD_REG_SET &alts)
 		      goto op_success;
 		    break;
 		    
-		  case 'G':
-		  case 'H':
-		    if (CONST_DOUBLE_AS_FLOAT_P (op)
-			&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
-		      goto op_success;
-		    break;
-		    
 		  case 's':
 		    if (CONST_SCALAR_INT_P (op))
 		      break;
@@ -1903,19 +1896,6 @@ ira_setup_alts (rtx insn, HARD_REG_SET &alts)
 		      goto op_success;
 		    break;
 		    
-		  case 'I':
-		  case 'J':
-		  case 'K':
-		  case 'L':
-		  case 'M':
-		  case 'N':
-		  case 'O':
-		  case 'P':
-		    if (CONST_INT_P (op)
-			&& CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), c, p))
-		      goto op_success;
-		    break;
-		    
 		  case 'V':
 		    if (MEM_P (op) && ! offsettable_memref_p (op))
 		      goto op_success;
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 453c578f72a9..284116df1e47 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -1980,13 +1980,6 @@ process_alt_operands (int only_alternative)
 		    win = true;
 		  break;
 
-		case 'G':
-		case 'H':
-		  if (CONST_DOUBLE_AS_FLOAT_P (op)
-		      && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
-		    win = true;
-		  break;
-
 		case 's':
 		  if (CONST_SCALAR_INT_P (op))
 		    break;
@@ -2001,19 +1994,6 @@ process_alt_operands (int only_alternative)
 		    win = true;
 		  break;
 
-		case 'I':
-		case 'J':
-		case 'K':
-		case 'L':
-		case 'M':
-		case 'N':
-		case 'O':
-		case 'P':
-		  if (CONST_INT_P (op)
-		      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), c, p))
-		    win = true;
-		  break;
-
 		case 'X':
 		  /* This constraint should be excluded by the fast
 		     track.  */
diff --git a/gcc/recog.c b/gcc/recog.c
index 2b62167c4f69..4d72919378f5 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1827,17 +1827,6 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints)
 	    result = 1;
 	  break;
 
-	case 'G':
-	  if (CONST_DOUBLE_AS_FLOAT_P (op)
-	      && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, 'G', constraint))
-	    result = 1;
-	  break;
-	case 'H':
-	  if (CONST_DOUBLE_AS_FLOAT_P (op)
-	      && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, 'H', constraint))
-	    result = 1;
-	  break;
-
 	case 's':
 	  if (CONST_SCALAR_INT_P (op))
 	    break;
@@ -1853,47 +1842,6 @@ asm_operand_ok (rtx op, const char *constraint, const char **constraints)
 	    result = 1;
 	  break;
 
-	case 'I':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'I', constraint))
-	    result = 1;
-	  break;
-	case 'J':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'J', constraint))
-	    result = 1;
-	  break;
-	case 'K':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'K', constraint))
-	    result = 1;
-	  break;
-	case 'L':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'L', constraint))
-	    result = 1;
-	  break;
-	case 'M':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'M', constraint))
-	    result = 1;
-	  break;
-	case 'N':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'N', constraint))
-	    result = 1;
-	  break;
-	case 'O':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'O', constraint))
-	    result = 1;
-	  break;
-	case 'P':
-	  if (CONST_INT_P (op)
-	      && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), 'P', constraint))
-	    result = 1;
-	  break;
-
 	case 'X':
 	  result = 1;
 	  break;
@@ -2802,13 +2750,6 @@ constrain_operands (int strict)
 		  win = 1;
 		break;
 
-	      case 'G':
-	      case 'H':
-		if (CONST_DOUBLE_AS_FLOAT_P (op)
-		    && CONST_DOUBLE_OK_FOR_CONSTRAINT_P (op, c, p))
-		  win = 1;
-		break;
-
 	      case 's':
 		if (CONST_SCALAR_INT_P (op))
 		  break;
@@ -2822,19 +2763,6 @@ constrain_operands (int strict)
 		  win = 1;
 		break;
 
-	      case 'I':
-	      case 'J':
-	      case 'K':
-	      case 'L':
-	      case 'M':
-	      case 'N':
-	      case 'O':
-	      case 'P':
-		if (CONST_INT_P (op)
-		    && CONST_OK_FOR_CONSTRAINT_P (INTVAL (op), c, p))
-		  win = 1;
-		break;
-
 	      case 'V':
 		if (MEM_P (op)
 		    && ((strict > 0 && ! offsettable_memref_p (op))
diff --git a/gcc/reload.c b/gcc/reload.c
index cf2de93a0ea7..d3f5a8aea1bb 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3434,13 +3434,6 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
 		      win = 1;
 		    break;
 
-		  case 'G':
-		  case 'H':
-		    if (CONST_DOUBLE_AS_FLOAT_P (operand)
-			&& CONST_DOUBLE_OK_FOR_CONSTRAINT_P (operand, c, p))
-		      win = 1;
-		    break;
-
 		  case 's':
 		    if (CONST_SCALAR_INT_P (operand))
 		      break;
@@ -3455,19 +3448,6 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
 		      win = 1;
 		    break;
 
-		  case 'I':
-		  case 'J':
-		  case 'K':
-		  case 'L':
-		  case 'M':
-		  case 'N':
-		  case 'O':
-		  case 'P':
-		    if (CONST_INT_P (operand)
-			&& CONST_OK_FOR_CONSTRAINT_P (INTVAL (operand), c, p))
-		      win = 1;
-		    break;
-
 		  case 'X':
 		    force_reload = 0;
 		    win = 1;
diff --git a/gcc/system.h b/gcc/system.h
index b0be80cac6a8..29da7974ced4 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -933,7 +933,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
 	CONST_DOUBLE_OK_FOR_LETTER_P EXTRA_CONSTRAINT			   \
 	REG_CLASS_FROM_CONSTRAINT REG_CLASS_FOR_CONSTRAINT		   \
 	EXTRA_CONSTRAINT_STR EXTRA_MEMORY_CONSTRAINT			   \
-	EXTRA_ADDRESS_CONSTRAINT
+	EXTRA_ADDRESS_CONSTRAINT CONST_DOUBLE_OK_FOR_CONSTRAINT_P
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE	\
-- 
GitLab