Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 3/3] remove TYPE_CODE_BITSTRING
  2012-08-10  9:13 [RFC 0/3] Remove unused operators OP_BITSTRING TERNOP_SLICE_COUNT and TYPE_CODE_BITSTRING Yao Qi
  2012-08-10  9:13 ` [PATCH 2/3] Remove TERNOP_SLICE_COUNT Yao Qi
  2012-08-10  9:13 ` [PATCH 1/3] Remove OP_BITSTRING Yao Qi
@ 2012-08-10  9:13 ` Yao Qi
  2012-08-10 16:19   ` Tom Tromey
  2 siblings, 1 reply; 9+ messages in thread
From: Yao Qi @ 2012-08-10  9:13 UTC (permalink / raw)
  To: gdb-patches

gdb:

2012-08-10  Yao Qi  <yao@codesourcery.com>

	* gdbtypes.h (enum type_code): Remove TYPE_CODE_BITSTRING.
	* arm-tdep.c (arm_type_align): Remove code handling TYPE_CODE_BITSTRING.
	* c-typeprint.c (c_type_print_varspec_prefix): Likewise.
	(c_type_print_varspec_suffix): Likewise.
	* eval.c (evaluate_subexp_standard): Likewise.
	* f-typeprint.c (f_type_print_varspec_prefix): Likewise.
	(f_type_print_varspec_suffix): Likewise.
	* gdbtypes.c (is_scalar_type): Likewise.
	(recursive_dump_type): Likewise.
	* infcall.c (value_arg_coerce): Likewise.
	* m2-valprint.c (m2_val_print): Likewise.
	* p-typeprint.c (pascal_type_print_varspec_prefix): Likewise.
	(pascal_type_print_varspec_suffix): Likewise.
	(pascal_type_print_base): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	(pascal_val_print): Likewise.
	* python/py-type.c (pyty_codes): Remove ENTRY (TYPE_CODE_BITSTRING).
	* valarith.c (value_bitstring_subscript): Remove.
	(value_concat): Remove code handling TYPE_CODE_BITSTRING.
	* valops.c (value_slice): Likewise.
	* valprint.c (scalar_type_p): Likewise.

	* stabsread.c (read_type): Don't set TYPE_CODE (type) to
	TYPE_CODE_BITSTRING.
---
 gdb/arm-tdep.c       |    1 -
 gdb/c-typeprint.c    |    2 -
 gdb/eval.c           |    6 -----
 gdb/f-typeprint.c    |    2 -
 gdb/gdbtypes.c       |    4 ---
 gdb/gdbtypes.h       |    4 ---
 gdb/infcall.c        |    1 -
 gdb/m2-valprint.c    |   16 ++-----------
 gdb/p-typeprint.c    |    6 -----
 gdb/p-valprint.c     |   16 ++-----------
 gdb/python/py-type.c |    1 -
 gdb/stabsread.c      |    4 +--
 gdb/valarith.c       |   55 +++++--------------------------------------------
 gdb/valops.c         |   34 +------------------------------
 gdb/valprint.c       |    1 -
 15 files changed, 14 insertions(+), 139 deletions(-)

diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 568ace5..063c1db 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -3285,7 +3285,6 @@ arm_type_align (struct type *t)
     case TYPE_CODE_FLT:
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_REF:
     case TYPE_CODE_CHAR:
     case TYPE_CODE_BOOL:
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
index a5892b5..29b27e9 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
@@ -322,7 +322,6 @@ c_type_print_varspec_prefix (struct type *type,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_NAMESPACE:
     case TYPE_CODE_DECFLOAT:
@@ -679,7 +678,6 @@ c_type_print_varspec_suffix (struct type *type,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_NAMESPACE:
     case TYPE_CODE_DECFLOAT:
diff --git a/gdb/eval.c b/gdb/eval.c
index c0d9354..9fe7e38 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -2323,12 +2323,6 @@ evaluate_subexp_standard (struct type *expect_type,
 		  arg1 = value_subscript (arg1, value_as_long (arg2));
 		  break;
 
-		case TYPE_CODE_BITSTRING:
-		  type = language_bool_type (exp->language_defn, exp->gdbarch);
-		  arg1 = value_bitstring_subscript (type, arg1,
-						    value_as_long (arg2));
-		  break;
-
 		default:
 		  if (TYPE_NAME (type))
 		    error (_("cannot subscript something of type `%s'"),
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index a95ef84..c59e639 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -131,7 +131,6 @@ f_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_METHOD:
     case TYPE_CODE_REF:
     case TYPE_CODE_COMPLEX:
@@ -230,7 +229,6 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_METHOD:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 0ea4df1..3fa8b30 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2036,7 +2036,6 @@ is_scalar_type (struct type *type)
     case TYPE_CODE_UNION:
     case TYPE_CODE_SET:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
       return 0;
     default:
       return 1;
@@ -3075,9 +3074,6 @@ recursive_dump_type (struct type *type, int spaces)
     case TYPE_CODE_STRING:
       printf_filtered ("(TYPE_CODE_STRING)");
       break;
-    case TYPE_CODE_BITSTRING:
-      printf_filtered ("(TYPE_CODE_BITSTRING)");
-      break;
     case TYPE_CODE_ERROR:
       printf_filtered ("(TYPE_CODE_ERROR)");
       break;
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 17bfbc5..253ac42 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -109,10 +109,6 @@ enum type_code
        a new type code.  */
     TYPE_CODE_STRING,
 
-    /* String of bits; like TYPE_CODE_SET but prints differently (at
-       least for (the deleted) CHILL).  */
-    TYPE_CODE_BITSTRING,
-
     /* Unknown type.  The length field is valid if we were able to
        deduce that much about the type, or 0 if we don't even know that.  */
     TYPE_CODE_ERROR,
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 1b2c3d6..1b92748 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -213,7 +213,6 @@ value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_ERROR:
     case TYPE_CODE_MEMBERPTR:
     case TYPE_CODE_METHODPTR:
diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c
index e92679f..3d3127e 100644
--- a/gdb/m2-valprint.c
+++ b/gdb/m2-valprint.c
@@ -409,7 +409,6 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 			       options, NULL, 0);
       break;
 
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_SET:
       elttype = TYPE_INDEX_TYPE (type);
       CHECK_TYPEDEF (elttype);
@@ -424,13 +423,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 	  struct type *range = elttype;
 	  LONGEST low_bound, high_bound;
 	  int i;
-	  int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
 	  int need_comma = 0;
 
-	  if (is_bitstring)
-	    fputs_filtered ("B'", stream);
-	  else
-	    fputs_filtered ("{", stream);
+	  fputs_filtered ("{", stream);
 
 	  i = get_discrete_bounds (range, &low_bound, &high_bound);
 	maybe_bad_bstring:
@@ -450,9 +445,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 		  i = element;
 		  goto maybe_bad_bstring;
 		}
-	      if (is_bitstring)
-		fprintf_filtered (stream, "%d", element);
-	      else if (element)
+	      if (element)
 		{
 		  if (need_comma)
 		    fputs_filtered (", ", stream);
@@ -476,10 +469,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 		}
 	    }
 	done:
-	  if (is_bitstring)
-	    fputs_filtered ("'", stream);
-	  else
-	    fputs_filtered ("}", stream);
+	  fputs_filtered ("}", stream);
 	}
       break;
 
diff --git a/gdb/p-typeprint.c b/gdb/p-typeprint.c
index a00f5b3..fceb97a 100644
--- a/gdb/p-typeprint.c
+++ b/gdb/p-typeprint.c
@@ -289,7 +289,6 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types need no prefix.  They are listed here so that
@@ -408,7 +407,6 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types do not need a suffix.  They are listed so that
@@ -792,10 +790,6 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
 			 show - 1, level);
       break;
 
-    case TYPE_CODE_BITSTRING:
-      fputs_filtered ("BitString", stream);
-      break;
-
     case TYPE_CODE_STRING:
       fputs_filtered ("String", stream);
       break;
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
index 9f44617..b2287f2 100644
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -334,7 +334,6 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 	}
       break;
 
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_SET:
       elttype = TYPE_INDEX_TYPE (type);
       CHECK_TYPEDEF (elttype);
@@ -349,13 +348,9 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 	  struct type *range = elttype;
 	  LONGEST low_bound, high_bound;
 	  int i;
-	  int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
 	  int need_comma = 0;
 
-	  if (is_bitstring)
-	    fputs_filtered ("B'", stream);
-	  else
-	    fputs_filtered ("[", stream);
+	  fputs_filtered ("[", stream);
 
 	  i = get_discrete_bounds (range, &low_bound, &high_bound);
 	  if (low_bound == 0 && high_bound == -1 && TYPE_LENGTH (type) > 0)
@@ -383,9 +378,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 		  i = element;
 		  goto maybe_bad_bstring;
 		}
-	      if (is_bitstring)
-		fprintf_filtered (stream, "%d", element);
-	      else if (element)
+	      if (element)
 		{
 		  if (need_comma)
 		    fputs_filtered (", ", stream);
@@ -409,10 +402,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 		}
 	    }
 	done:
-	  if (is_bitstring)
-	    fputs_filtered ("'", stream);
-	  else
-	    fputs_filtered ("]", stream);
+	  fputs_filtered ("]", stream);
 	}
       break;
 
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 98030a6..dc7af9f 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -98,7 +98,6 @@ static struct pyty_code pyty_codes[] =
   ENTRY (TYPE_CODE_SET),
   ENTRY (TYPE_CODE_RANGE),
   ENTRY (TYPE_CODE_STRING),
-  ENTRY (TYPE_CODE_BITSTRING),
   ENTRY (TYPE_CODE_ERROR),
   ENTRY (TYPE_CODE_METHOD),
   ENTRY (TYPE_CODE_METHODPTR),
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index eb09c9d..1c288ee 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -2024,11 +2024,9 @@ again:
 	make_vector_type (type);
       break;
 
-    case 'S':			/* Set or bitstring  type */
+    case 'S':			/* Set type */
       type1 = read_type (pp, objfile);
       type = create_set_type ((struct type *) NULL, type1);
-      if (is_string)
-	TYPE_CODE (type) = TYPE_CODE_BITSTRING;
       if (typenums[0] != -1)
 	*dbx_lookup_type (typenums, objfile) = type;
       break;
diff --git a/gdb/valarith.c b/gdb/valarith.c
index 96d5411..d0f31c4 100644
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -221,46 +221,6 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
   return v;
 }
 
-/* Return the value of BITSTRING[IDX] as (boolean) type TYPE.  */
-
-struct value *
-value_bitstring_subscript (struct type *type,
-			   struct value *bitstring, LONGEST index)
-{
-
-  struct type *bitstring_type, *range_type;
-  struct value *v;
-  int offset, byte, bit_index;
-  LONGEST lowerbound, upperbound;
-
-  bitstring_type = check_typedef (value_type (bitstring));
-  gdb_assert (TYPE_CODE (bitstring_type) == TYPE_CODE_BITSTRING);
-
-  range_type = TYPE_INDEX_TYPE (bitstring_type);
-  get_discrete_bounds (range_type, &lowerbound, &upperbound);
-  if (index < lowerbound || index > upperbound)
-    error (_("bitstring index out of range"));
-
-  index -= lowerbound;
-  offset = index / TARGET_CHAR_BIT;
-  byte = *((char *) value_contents (bitstring) + offset);
-
-  bit_index = index % TARGET_CHAR_BIT;
-  byte >>= (gdbarch_bits_big_endian (get_type_arch (bitstring_type)) ?
-	    TARGET_CHAR_BIT - 1 - bit_index : bit_index);
-
-  v = value_from_longest (type, byte & 1);
-
-  set_value_bitpos (v, bit_index);
-  set_value_bitsize (v, 1);
-  set_value_component_location (v, bitstring);
-  VALUE_FRAME_ID (v) = VALUE_FRAME_ID (bitstring);
-
-  set_value_offset (v, offset + value_offset (bitstring));
-
-  return v;
-}
-
 \f
 /* Check to see if either argument is a structure, or a reference to
    one.  This is called so we know whether to go ahead with the normal
@@ -735,10 +695,9 @@ value_concat (struct value *arg1, struct value *arg2)
 	    }
 	  outval = value_string (ptr, count * inval2len, char_type);
 	}
-      else if (TYPE_CODE (type2) == TYPE_CODE_BITSTRING
-	       || TYPE_CODE (type2) == TYPE_CODE_BOOL)
+      else if (TYPE_CODE (type2) == TYPE_CODE_BOOL)
 	{
-	  error (_("unimplemented support for bitstring/boolean repeats"));
+	  error (_("unimplemented support for boolean repeats"));
 	}
       else
 	{
@@ -780,17 +739,15 @@ value_concat (struct value *arg1, struct value *arg2)
 	}
       outval = value_string (ptr, inval1len + inval2len, char_type);
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_BITSTRING
-	   || TYPE_CODE (type1) == TYPE_CODE_BOOL)
+  else if (TYPE_CODE (type1) == TYPE_CODE_BOOL)
     {
       /* We have two bitstrings to concatenate.  */
-      if (TYPE_CODE (type2) != TYPE_CODE_BITSTRING
-	  && TYPE_CODE (type2) != TYPE_CODE_BOOL)
+      if (TYPE_CODE (type2) != TYPE_CODE_BOOL)
 	{
-	  error (_("Bitstrings or booleans can only be concatenated "
+	  error (_("Booleans can only be concatenated "
 		   "with other bitstrings or booleans."));
 	}
-      error (_("unimplemented support for bitstring/boolean concatenation."));
+      error (_("unimplemented support for boolean concatenation."));
     }
   else
     {
diff --git a/gdb/valops.c b/gdb/valops.c
index 8167cd4..17696ee 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3744,8 +3744,7 @@ value_slice (struct value *array, int lowbound, int length)
 
   array_type = check_typedef (value_type (array));
   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
-      && TYPE_CODE (array_type) != TYPE_CODE_STRING
-      && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
+      && TYPE_CODE (array_type) != TYPE_CODE_STRING)
     error (_("cannot take slice of non-array"));
 
   range_type = TYPE_INDEX_TYPE (array_type);
@@ -3762,38 +3761,7 @@ value_slice (struct value *array, int lowbound, int length)
 					TYPE_TARGET_TYPE (range_type),
 					lowbound, 
 					lowbound + length - 1);
-  if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
-    {
-      int i;
-
-      slice_type = create_set_type ((struct type *) NULL,
-				    slice_range_type);
-      TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
-      slice = value_zero (slice_type, not_lval);
 
-      for (i = 0; i < length; i++)
-	{
-	  int element = value_bit_index (array_type,
-					 value_contents (array),
-					 lowbound + i);
-
-	  if (element < 0)
-	    error (_("internal error accessing bitstring"));
-	  else if (element > 0)
-	    {
-	      int j = i % TARGET_CHAR_BIT;
-
-	      if (gdbarch_bits_big_endian (get_type_arch (array_type)))
-		j = TARGET_CHAR_BIT - 1 - j;
-	      value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
-	    }
-	}
-      /* We should set the address, bitssize, and bitspos, so the
-         slice can be used on the LHS, but that may require extensions
-         to value_assign.  For now, just leave as a non_lval.
-         FIXME.  */
-    }
-  else
     {
       struct type *element_type = TYPE_TARGET_TYPE (array_type);
       LONGEST offset =
diff --git a/gdb/valprint.c b/gdb/valprint.c
index fc5942d..6e651f6 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -252,7 +252,6 @@ scalar_type_p (struct type *type)
     case TYPE_CODE_UNION:
     case TYPE_CODE_SET:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
       return 0;
     default:
       return 1;
-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/3] Remove OP_BITSTRING
  2012-08-10  9:13 [RFC 0/3] Remove unused operators OP_BITSTRING TERNOP_SLICE_COUNT and TYPE_CODE_BITSTRING Yao Qi
  2012-08-10  9:13 ` [PATCH 2/3] Remove TERNOP_SLICE_COUNT Yao Qi
@ 2012-08-10  9:13 ` Yao Qi
  2012-08-10 16:16   ` Tom Tromey
  2012-08-10  9:13 ` [PATCH 3/3] remove TYPE_CODE_BITSTRING Yao Qi
  2 siblings, 1 reply; 9+ messages in thread
From: Yao Qi @ 2012-08-10  9:13 UTC (permalink / raw)
  To: gdb-patches

gdb:

2012-08-10  Yao Qi  <yao@codesourcery.com>

	* std-operator.def: Remove OP_BITSTRING.
	* breakpoint.c (watchpoint_exp_is_const): Update.
	* eval.c (evaluate_subexp_standard): Remove handling to
	OP_BITSTRING.
	* expprint.c (print_subexp_standard): Likewise.
	(dump_subexp_body_standard): Likewise.
	* parse.c (operator_length_standard): Likewise.
	* valops.c (value_bitstring): Remove.
	* value.h: Remove the declaration of 'value_bitstring'.
---
 gdb/breakpoint.c     |    1 -
 gdb/eval.c           |   10 ----------
 gdb/expprint.c       |    8 --------
 gdb/parse.c          |    6 ------
 gdb/std-operator.def |    6 ------
 gdb/valops.c         |   13 -------------
 gdb/value.h          |    2 --
 7 files changed, 0 insertions(+), 46 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index e38c54a..1ba923f 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -10168,7 +10168,6 @@ watchpoint_exp_is_const (const struct expression *exp)
 	case OP_LAST:
 	case OP_COMPLEX:
 	case OP_STRING:
-	case OP_BITSTRING:
 	case OP_ARRAY:
 	case OP_TYPE:
 	case OP_TYPEOF:
diff --git a/gdb/eval.c b/gdb/eval.c
index 4295845..9bf5401 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -970,16 +970,6 @@ evaluate_subexp_standard (struct type *expect_type,
 	}
       return value_nsstring (exp->gdbarch, &exp->elts[pc + 2].string, tem + 1);
 
-    case OP_BITSTRING:
-      tem = longest_to_int (exp->elts[pc + 1].longconst);
-      (*pos)
-	+= 3 + BYTES_TO_EXP_ELEM ((tem + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT);
-      if (noside == EVAL_SKIP)
-	goto nosideret;
-      return value_bitstring (&exp->elts[pc + 2].string, tem,
-			      builtin_type (exp->gdbarch)->builtin_int);
-      break;
-
     case OP_ARRAY:
       (*pos) += 3;
       tem2 = longest_to_int (exp->elts[pc + 1].longconst);
diff --git a/gdb/expprint.c b/gdb/expprint.c
index 779368b..c74c564 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -210,13 +210,6 @@ print_subexp_standard (struct expression *exp, int *pos,
       }
       return;
 
-    case OP_BITSTRING:
-      nargs = longest_to_int (exp->elts[pc + 1].longconst);
-      (*pos)
-	+= 3 + BYTES_TO_EXP_ELEM ((nargs + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT);
-      fprintf_unfiltered (stream, "B'<unimplemented>'");
-      return;
-
     case OP_OBJC_NSSTRING:	/* Objective-C Foundation Class
 				   NSString constant.  */
       {
@@ -1037,7 +1030,6 @@ dump_subexp_body_standard (struct expression *exp,
     case OP_F77_UNDETERMINED_ARGLIST:
     case OP_COMPLEX:
     case OP_STRING:
-    case OP_BITSTRING:
     case OP_BOOL:
     case OP_M2_STRING:
     case OP_THIS:
diff --git a/gdb/parse.c b/gdb/parse.c
index d1ed4e8..d418aef 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -967,12 +967,6 @@ operator_length_standard (const struct expression *expr, int endpos,
       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
       break;
 
-    case OP_BITSTRING:
-      oplen = longest_to_int (expr->elts[endpos - 2].longconst);
-      oplen = (oplen + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
-      oplen = 4 + BYTES_TO_EXP_ELEM (oplen);
-      break;
-
     case OP_ARRAY:
       oplen = 4;
       args = longest_to_int (expr->elts[endpos - 2].longconst);
diff --git a/gdb/std-operator.def b/gdb/std-operator.def
index b013687..173dc1d 100644
--- a/gdb/std-operator.def
+++ b/gdb/std-operator.def
@@ -194,12 +194,6 @@ OP (OP_COMPLEX)
    is executed.  */
 OP (OP_STRING)
 
-/* OP_BITSTRING represents a packed bitstring constant.
-   Its format is the same as that of a STRUCTOP, but the bitstring
-   data is just made into a bitstring constant when the operation
-   is executed.  */
-OP (OP_BITSTRING)
-
 /* OP_ARRAY creates an array constant out of the following subexpressions.
    It is followed by two exp_elements, the first containing an integer
    that is the lower bound of the array and the second containing another
diff --git a/gdb/valops.c b/gdb/valops.c
index 934f381..8167cd4 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -1875,19 +1875,6 @@ value_string (char *ptr, int len, struct type *char_type)
   return val;
 }
 
-struct value *
-value_bitstring (char *ptr, int len, struct type *index_type)
-{
-  struct value *val;
-  struct type *domain_type
-    = create_range_type (NULL, index_type, 0, len - 1);
-  struct type *type = create_set_type (NULL, domain_type);
-
-  TYPE_CODE (type) = TYPE_CODE_BITSTRING;
-  val = allocate_value (type);
-  memcpy (value_contents_raw (val), ptr, TYPE_LENGTH (type));
-  return val;
-}
 \f
 /* See if we can pass arguments in T2 to a function which takes
    arguments of types T1.  T1 is a list of NARGS arguments, and T2 is
diff --git a/gdb/value.h b/gdb/value.h
index d8b157f..cfdf085 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -591,8 +591,6 @@ extern struct value *value_cstring (char *ptr, int len,
 				    struct type *char_type);
 extern struct value *value_string (char *ptr, int len,
 				   struct type *char_type);
-extern struct value *value_bitstring (char *ptr, int len,
-				      struct type *index_type);
 
 extern struct value *value_array (int lowbound, int highbound,
 				  struct value **elemvec);
-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 2/3] Remove TERNOP_SLICE_COUNT.
  2012-08-10  9:13 [RFC 0/3] Remove unused operators OP_BITSTRING TERNOP_SLICE_COUNT and TYPE_CODE_BITSTRING Yao Qi
@ 2012-08-10  9:13 ` Yao Qi
  2012-08-10 16:16   ` Tom Tromey
  2012-08-10  9:13 ` [PATCH 1/3] Remove OP_BITSTRING Yao Qi
  2012-08-10  9:13 ` [PATCH 3/3] remove TYPE_CODE_BITSTRING Yao Qi
  2 siblings, 1 reply; 9+ messages in thread
From: Yao Qi @ 2012-08-10  9:13 UTC (permalink / raw)
  To: gdb-patches

gdb:

2012-08-10  Yao Qi  <yao@codesourcery.com>

	* std-operator.def: Remove TERNOP_SLICE_COUNT.
	* breakpoint.c (watchpoint_exp_is_const): Remove handling to
	TERNOP_SLICE_COUNT.
	* eval.c (evaluate_subexp_standard): Likewise.
	* expprint.c (print_subexp_standard): Likewise.
	(dump_subexp_body_standard): Likewise.
	* parse.c (operator_length_standard): Likewise.
---
 gdb/breakpoint.c     |    1 -
 gdb/eval.c           |   11 -----------
 gdb/expprint.c       |    2 --
 gdb/parse.c          |    1 -
 gdb/std-operator.def |    5 -----
 5 files changed, 0 insertions(+), 20 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 1ba923f..7ea5ba6 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -10160,7 +10160,6 @@ watchpoint_exp_is_const (const struct expression *exp)
 	case BINOP_RANGE:
 	case TERNOP_COND:
 	case TERNOP_SLICE:
-	case TERNOP_SLICE_COUNT:
 
 	case OP_LONG:
 	case OP_DOUBLE:
diff --git a/gdb/eval.c b/gdb/eval.c
index 9bf5401..c0d9354 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -1140,17 +1140,6 @@ evaluate_subexp_standard (struct type *expect_type,
 	return value_slice (array, lowbound, upper - lowbound + 1);
       }
 
-    case TERNOP_SLICE_COUNT:
-      {
-	struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-	int lowbound
-	  = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
-	int length
-	  = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
-
-	return value_slice (array, lowbound, length);
-      }
-
     case TERNOP_COND:
       /* Skip third and second args to evaluate the first one.  */
       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
diff --git a/gdb/expprint.c b/gdb/expprint.c
index c74c564..baaa08a 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -360,7 +360,6 @@ print_subexp_standard (struct expression *exp, int *pos,
       return;
 
     case TERNOP_SLICE:
-    case TERNOP_SLICE_COUNT:
       print_subexp (exp, pos, stream, PREC_SUFFIX);
       fputs_filtered ("(", stream);
       print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
@@ -787,7 +786,6 @@ dump_subexp_body_standard (struct expression *exp,
     {
     case TERNOP_COND:
     case TERNOP_SLICE:
-    case TERNOP_SLICE_COUNT:
       elt = dump_subexp (exp, stream, elt);
       /* FALL THROUGH */
     case BINOP_ADD:
diff --git a/gdb/parse.c b/gdb/parse.c
index d418aef..3ec1e25 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -976,7 +976,6 @@ operator_length_standard (const struct expression *expr, int endpos,
 
     case TERNOP_COND:
     case TERNOP_SLICE:
-    case TERNOP_SLICE_COUNT:
       args = 3;
       break;
 
diff --git a/gdb/std-operator.def b/gdb/std-operator.def
index 173dc1d..dcba39f 100644
--- a/gdb/std-operator.def
+++ b/gdb/std-operator.def
@@ -105,11 +105,6 @@ OP (TERNOP_COND)		/* ?: */
    OP1(OP2:OP3).  Return elements OP2 through OP3 of OP1.  */
 OP (TERNOP_SLICE)
 
-/* A sub-string/sub-array.  (The deleted) Chill syntax: OP1(OP2 UP
-   OP3).  Return OP3 elements of OP1, starting with element
-   OP2.  */
-OP (TERNOP_SLICE_COUNT)
-
 /* Multidimensional subscript operator, such as Modula-2 x[a,b,...].
    The dimensionality is encoded in the operator, like the number of
    function arguments in OP_FUNCALL, I.E. <OP><dimension><OP>.
-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [RFC 0/3] Remove unused operators OP_BITSTRING TERNOP_SLICE_COUNT and TYPE_CODE_BITSTRING
@ 2012-08-10  9:13 Yao Qi
  2012-08-10  9:13 ` [PATCH 2/3] Remove TERNOP_SLICE_COUNT Yao Qi
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Yao Qi @ 2012-08-10  9:13 UTC (permalink / raw)
  To: gdb-patches

Hi,
This patch set is a follow-up to my prosal here,

  Remove OP_LABELED TERNOP_SLICE_COUNT and OP_BITSTRING?
  http://sourceware.org/ml/gdb/2012-08/msg00018.html

However, OP_LABELED is not removed in this patch set, because it is not
obviously correct to do so, and more thoughts are needed.  Removal of
TYPE_CODE_BITSTRING is added in this set.

I don't put much words in each patch, because each of them just simply
removes unused bits.  Regression tested on x86_64-unknow-linux.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] Remove TERNOP_SLICE_COUNT.
  2012-08-10  9:13 ` [PATCH 2/3] Remove TERNOP_SLICE_COUNT Yao Qi
@ 2012-08-10 16:16   ` Tom Tromey
  0 siblings, 0 replies; 9+ messages in thread
From: Tom Tromey @ 2012-08-10 16:16 UTC (permalink / raw)
  To: Yao Qi; +Cc: gdb-patches

>>>>> "Yao" == Yao Qi <yao@codesourcery.com> writes:

Yao> 2012-08-10  Yao Qi  <yao@codesourcery.com>
Yao> 	* std-operator.def: Remove TERNOP_SLICE_COUNT.
Yao> 	* breakpoint.c (watchpoint_exp_is_const): Remove handling to
Yao> 	TERNOP_SLICE_COUNT.
Yao> 	* eval.c (evaluate_subexp_standard): Likewise.
Yao> 	* expprint.c (print_subexp_standard): Likewise.
Yao> 	(dump_subexp_body_standard): Likewise.
Yao> 	* parse.c (operator_length_standard): Likewise.

Ok.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] Remove OP_BITSTRING
  2012-08-10  9:13 ` [PATCH 1/3] Remove OP_BITSTRING Yao Qi
@ 2012-08-10 16:16   ` Tom Tromey
  0 siblings, 0 replies; 9+ messages in thread
From: Tom Tromey @ 2012-08-10 16:16 UTC (permalink / raw)
  To: Yao Qi; +Cc: gdb-patches

>>>>> "Yao" == Yao Qi <yao@codesourcery.com> writes:

Yao> 2012-08-10  Yao Qi  <yao@codesourcery.com>
Yao> 	* std-operator.def: Remove OP_BITSTRING.
Yao> 	* breakpoint.c (watchpoint_exp_is_const): Update.
Yao> 	* eval.c (evaluate_subexp_standard): Remove handling to
Yao> 	OP_BITSTRING.
Yao> 	* expprint.c (print_subexp_standard): Likewise.
Yao> 	(dump_subexp_body_standard): Likewise.
Yao> 	* parse.c (operator_length_standard): Likewise.
Yao> 	* valops.c (value_bitstring): Remove.
Yao> 	* value.h: Remove the declaration of 'value_bitstring'.

Ok.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] remove TYPE_CODE_BITSTRING
  2012-08-10  9:13 ` [PATCH 3/3] remove TYPE_CODE_BITSTRING Yao Qi
@ 2012-08-10 16:19   ` Tom Tromey
  2012-08-13  1:13     ` Yao Qi
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Tromey @ 2012-08-10 16:19 UTC (permalink / raw)
  To: Yao Qi; +Cc: gdb-patches

>>>>> "Yao" == Yao Qi <yao@codesourcery.com> writes:

Yao> 2012-08-10  Yao Qi  <yao@codesourcery.com>
Yao> 	* gdbtypes.h (enum type_code): Remove TYPE_CODE_BITSTRING.

This one needs a little tweak.

Yao> diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
Yao> index 98030a6..dc7af9f 100644
Yao> --- a/gdb/python/py-type.c
Yao> +++ b/gdb/python/py-type.c
Yao> @@ -98,7 +98,6 @@ static struct pyty_code pyty_codes[] =
Yao>    ENTRY (TYPE_CODE_SET),
Yao>    ENTRY (TYPE_CODE_RANGE),
Yao>    ENTRY (TYPE_CODE_STRING),
Yao> -  ENTRY (TYPE_CODE_BITSTRING),

This is actually Python API.  Search for TYPE_CODE_BITSTRING in the
manual.

I think it is best to keep the name around, in case anything uses it.
But, we don't have to keep the same value.  So I would suggest defining
to be -1 and then updating the manual to note that this code is
deprecated -- or even just undocumenting the constant.

The rest is ok though.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] remove TYPE_CODE_BITSTRING
  2012-08-10 16:19   ` Tom Tromey
@ 2012-08-13  1:13     ` Yao Qi
  2012-08-15 19:39       ` Tom Tromey
  0 siblings, 1 reply; 9+ messages in thread
From: Yao Qi @ 2012-08-13  1:13 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

On 08/11/2012 12:19 AM, Tom Tromey wrote:
> Yao> 2012-08-10  Yao Qi<yao@codesourcery.com>
> Yao> 	* gdbtypes.h (enum type_code): Remove TYPE_CODE_BITSTRING.
> 
> This one needs a little tweak.
> 
> Yao> diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
> Yao> index 98030a6..dc7af9f 100644
> Yao> --- a/gdb/python/py-type.c
> Yao> +++ b/gdb/python/py-type.c
> Yao> @@ -98,7 +98,6 @@ static struct pyty_code pyty_codes[] =
> Yao>    ENTRY (TYPE_CODE_SET),
> Yao>    ENTRY (TYPE_CODE_RANGE),
> Yao>    ENTRY (TYPE_CODE_STRING),
> Yao> -  ENTRY (TYPE_CODE_BITSTRING),
> 
> This is actually Python API.  Search for TYPE_CODE_BITSTRING in the
> manual.
> 

Oh, right.

> I think it is best to keep the name around, in case anything uses it.
> But, we don't have to keep the same value.  So I would suggest defining
> to be -1 and then updating the manual to note that this code is
> deprecated -- or even just undocumenting the constant.

I'll define TYPE_CODE_BITSTRING -1 in 'enum type_code', and document
gdb.TYPE_CODE_BITSTRING is deprecated.  Note that the following patch
moves ENTRY (TYPE_CODE_BITSTRING) to slot 0 in array 'pyty_codes', in
order to keep the order identical to 'enum type_code'.

-- 
Yao

gdb:

2012-08-13  Yao Qi  <yao@codesourcery.com>

	* gdbtypes.h (enum type_code): Define TYPE_CODE_BITSTRING -1.
	* arm-tdep.c (arm_type_align): Remove code handling TYPE_CODE_BITSTRING.
	* c-typeprint.c (c_type_print_varspec_prefix): Likewise.
	(c_type_print_varspec_suffix): Likewise.
	* eval.c (evaluate_subexp_standard): Likewise.
	* f-typeprint.c (f_type_print_varspec_prefix): Likewise.
	(f_type_print_varspec_suffix): Likewise.
	* gdbtypes.c (is_scalar_type): Likewise.
	(recursive_dump_type): Likewise.
	* infcall.c (value_arg_coerce): Likewise.
	* m2-valprint.c (m2_val_print): Likewise.
	* p-typeprint.c (pascal_type_print_varspec_prefix): Likewise.
	(pascal_type_print_varspec_suffix): Likewise.
	(pascal_type_print_base): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	(pascal_val_print): Likewise.
	* valops.c (value_slice): Likewise.
	* valprint.c (scalar_type_p): Likewise.
	* valarith.c (value_bitstring_subscript): Remove.
	(value_concat): Remove code handling TYPE_CODE_BITSTRING.
	Remove comment on TYPE_CODE_BITSTRING.

	* stabsread.c (read_type): Don't set TYPE_CODE (type) to
	TYPE_CODE_BITSTRING.

	* python/py-type.c (pyty_codes): Move ENTRY (TYPE_CODE_BITSTRING) to
	slot 0.

gdb/doc:

2012-08-13  Yao Qi  <yao@codesourcery.com>

	* gdb.texinfo (Types In Python): Mention gdb.TYPE_CODE_BITSTRING
	is deprecated.
---
 gdb/arm-tdep.c       |    1 -
 gdb/c-typeprint.c    |    2 -
 gdb/doc/gdb.texinfo  |    2 +-
 gdb/eval.c           |    6 -----
 gdb/f-typeprint.c    |    2 -
 gdb/gdbtypes.c       |    4 ---
 gdb/gdbtypes.h       |    7 +----
 gdb/infcall.c        |    1 -
 gdb/m2-valprint.c    |   16 ++-----------
 gdb/p-typeprint.c    |    6 -----
 gdb/p-valprint.c     |   16 ++-----------
 gdb/python/py-type.c |    2 +-
 gdb/stabsread.c      |    4 +--
 gdb/valarith.c       |   56 +++++--------------------------------------------
 gdb/valops.c         |   34 +-----------------------------
 gdb/valprint.c       |    1 -
 16 files changed, 18 insertions(+), 142 deletions(-)

diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 568ace5..063c1db 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -3285,7 +3285,6 @@ arm_type_align (struct type *t)
     case TYPE_CODE_FLT:
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_REF:
     case TYPE_CODE_CHAR:
     case TYPE_CODE_BOOL:
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
index a5892b5..29b27e9 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
@@ -322,7 +322,6 @@ c_type_print_varspec_prefix (struct type *type,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_NAMESPACE:
     case TYPE_CODE_DECFLOAT:
@@ -679,7 +678,6 @@ c_type_print_varspec_suffix (struct type *type,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_NAMESPACE:
     case TYPE_CODE_DECFLOAT:
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a03532e..5a11c2e 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -23502,7 +23502,7 @@ language-defined string types; C strings are not represented this way.
 @findex TYPE_CODE_BITSTRING
 @findex gdb.TYPE_CODE_BITSTRING
 @item gdb.TYPE_CODE_BITSTRING
-A string of bits.
+A string of bits.  It is deprecated.
 
 @findex TYPE_CODE_ERROR
 @findex gdb.TYPE_CODE_ERROR
diff --git a/gdb/eval.c b/gdb/eval.c
index c0d9354..9fe7e38 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -2323,12 +2323,6 @@ evaluate_subexp_standard (struct type *expect_type,
 		  arg1 = value_subscript (arg1, value_as_long (arg2));
 		  break;
 
-		case TYPE_CODE_BITSTRING:
-		  type = language_bool_type (exp->language_defn, exp->gdbarch);
-		  arg1 = value_bitstring_subscript (type, arg1,
-						    value_as_long (arg2));
-		  break;
-
 		default:
 		  if (TYPE_NAME (type))
 		    error (_("cannot subscript something of type `%s'"),
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index a95ef84..c59e639 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -131,7 +131,6 @@ f_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_METHOD:
     case TYPE_CODE_REF:
     case TYPE_CODE_COMPLEX:
@@ -230,7 +229,6 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_METHOD:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 0ea4df1..3fa8b30 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2036,7 +2036,6 @@ is_scalar_type (struct type *type)
     case TYPE_CODE_UNION:
     case TYPE_CODE_SET:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
       return 0;
     default:
       return 1;
@@ -3075,9 +3074,6 @@ recursive_dump_type (struct type *type, int spaces)
     case TYPE_CODE_STRING:
       printf_filtered ("(TYPE_CODE_STRING)");
       break;
-    case TYPE_CODE_BITSTRING:
-      printf_filtered ("(TYPE_CODE_BITSTRING)");
-      break;
     case TYPE_CODE_ERROR:
       printf_filtered ("(TYPE_CODE_ERROR)");
       break;
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 17bfbc5..afe0103 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -58,7 +58,8 @@ typedef struct
 
 enum type_code
   {
-    TYPE_CODE_UNDEF,		/* Not used; catches errors */
+    TYPE_CODE_BITSTRING = -1,	/* Deprecated  */
+    TYPE_CODE_UNDEF = 0,	/* Not used; catches errors */
     TYPE_CODE_PTR,		/* Pointer type */
 
     /* Array type with lower & upper bounds.
@@ -109,10 +110,6 @@ enum type_code
        a new type code.  */
     TYPE_CODE_STRING,
 
-    /* String of bits; like TYPE_CODE_SET but prints differently (at
-       least for (the deleted) CHILL).  */
-    TYPE_CODE_BITSTRING,
-
     /* Unknown type.  The length field is valid if we were able to
        deduce that much about the type, or 0 if we don't even know that.  */
     TYPE_CODE_ERROR,
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 1b2c3d6..1b92748 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -213,7 +213,6 @@ value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_ERROR:
     case TYPE_CODE_MEMBERPTR:
     case TYPE_CODE_METHODPTR:
diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c
index e92679f..3d3127e 100644
--- a/gdb/m2-valprint.c
+++ b/gdb/m2-valprint.c
@@ -409,7 +409,6 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 			       options, NULL, 0);
       break;
 
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_SET:
       elttype = TYPE_INDEX_TYPE (type);
       CHECK_TYPEDEF (elttype);
@@ -424,13 +423,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 	  struct type *range = elttype;
 	  LONGEST low_bound, high_bound;
 	  int i;
-	  int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
 	  int need_comma = 0;
 
-	  if (is_bitstring)
-	    fputs_filtered ("B'", stream);
-	  else
-	    fputs_filtered ("{", stream);
+	  fputs_filtered ("{", stream);
 
 	  i = get_discrete_bounds (range, &low_bound, &high_bound);
 	maybe_bad_bstring:
@@ -450,9 +445,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 		  i = element;
 		  goto maybe_bad_bstring;
 		}
-	      if (is_bitstring)
-		fprintf_filtered (stream, "%d", element);
-	      else if (element)
+	      if (element)
 		{
 		  if (need_comma)
 		    fputs_filtered (", ", stream);
@@ -476,10 +469,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
 		}
 	    }
 	done:
-	  if (is_bitstring)
-	    fputs_filtered ("'", stream);
-	  else
-	    fputs_filtered ("}", stream);
+	  fputs_filtered ("}", stream);
 	}
       break;
 
diff --git a/gdb/p-typeprint.c b/gdb/p-typeprint.c
index a00f5b3..fceb97a 100644
--- a/gdb/p-typeprint.c
+++ b/gdb/p-typeprint.c
@@ -289,7 +289,6 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types need no prefix.  They are listed here so that
@@ -408,7 +407,6 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types do not need a suffix.  They are listed so that
@@ -792,10 +790,6 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
 			 show - 1, level);
       break;
 
-    case TYPE_CODE_BITSTRING:
-      fputs_filtered ("BitString", stream);
-      break;
-
     case TYPE_CODE_STRING:
       fputs_filtered ("String", stream);
       break;
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
index 9f44617..b2287f2 100644
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -334,7 +334,6 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 	}
       break;
 
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_SET:
       elttype = TYPE_INDEX_TYPE (type);
       CHECK_TYPEDEF (elttype);
@@ -349,13 +348,9 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 	  struct type *range = elttype;
 	  LONGEST low_bound, high_bound;
 	  int i;
-	  int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING;
 	  int need_comma = 0;
 
-	  if (is_bitstring)
-	    fputs_filtered ("B'", stream);
-	  else
-	    fputs_filtered ("[", stream);
+	  fputs_filtered ("[", stream);
 
 	  i = get_discrete_bounds (range, &low_bound, &high_bound);
 	  if (low_bound == 0 && high_bound == -1 && TYPE_LENGTH (type) > 0)
@@ -383,9 +378,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 		  i = element;
 		  goto maybe_bad_bstring;
 		}
-	      if (is_bitstring)
-		fprintf_filtered (stream, "%d", element);
-	      else if (element)
+	      if (element)
 		{
 		  if (need_comma)
 		    fputs_filtered (", ", stream);
@@ -409,10 +402,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
 		}
 	    }
 	done:
-	  if (is_bitstring)
-	    fputs_filtered ("'", stream);
-	  else
-	    fputs_filtered ("]", stream);
+	  fputs_filtered ("]", stream);
 	}
       break;
 
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 98030a6..3b9f0d8 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -85,6 +85,7 @@ static PyObject *typy_make_iter (PyObject *self, enum gdbpy_iter_kind kind);
 
 static struct pyty_code pyty_codes[] =
 {
+  ENTRY (TYPE_CODE_BITSTRING),
   ENTRY (TYPE_CODE_PTR),
   ENTRY (TYPE_CODE_ARRAY),
   ENTRY (TYPE_CODE_STRUCT),
@@ -98,7 +99,6 @@ static struct pyty_code pyty_codes[] =
   ENTRY (TYPE_CODE_SET),
   ENTRY (TYPE_CODE_RANGE),
   ENTRY (TYPE_CODE_STRING),
-  ENTRY (TYPE_CODE_BITSTRING),
   ENTRY (TYPE_CODE_ERROR),
   ENTRY (TYPE_CODE_METHOD),
   ENTRY (TYPE_CODE_METHODPTR),
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index eb09c9d..1c288ee 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -2024,11 +2024,9 @@ again:
 	make_vector_type (type);
       break;
 
-    case 'S':			/* Set or bitstring  type */
+    case 'S':			/* Set type */
       type1 = read_type (pp, objfile);
       type = create_set_type ((struct type *) NULL, type1);
-      if (is_string)
-	TYPE_CODE (type) = TYPE_CODE_BITSTRING;
       if (typenums[0] != -1)
 	*dbx_lookup_type (typenums, objfile) = type;
       break;
diff --git a/gdb/valarith.c b/gdb/valarith.c
index 96d5411..6858d2b 100644
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -139,7 +139,6 @@ value_ptrdiff (struct value *arg1, struct value *arg2)
 
    ARRAY may be of type TYPE_CODE_ARRAY or TYPE_CODE_STRING.  If the
    current language supports C-style arrays, it may also be TYPE_CODE_PTR.
-   To access TYPE_CODE_BITSTRING values, use value_bitstring_subscript.
 
    See comments in value_coerce_array() for rationale for reason for
    doing lower bounds adjustment here rather than there.
@@ -221,46 +220,6 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
   return v;
 }
 
-/* Return the value of BITSTRING[IDX] as (boolean) type TYPE.  */
-
-struct value *
-value_bitstring_subscript (struct type *type,
-			   struct value *bitstring, LONGEST index)
-{
-
-  struct type *bitstring_type, *range_type;
-  struct value *v;
-  int offset, byte, bit_index;
-  LONGEST lowerbound, upperbound;
-
-  bitstring_type = check_typedef (value_type (bitstring));
-  gdb_assert (TYPE_CODE (bitstring_type) == TYPE_CODE_BITSTRING);
-
-  range_type = TYPE_INDEX_TYPE (bitstring_type);
-  get_discrete_bounds (range_type, &lowerbound, &upperbound);
-  if (index < lowerbound || index > upperbound)
-    error (_("bitstring index out of range"));
-
-  index -= lowerbound;
-  offset = index / TARGET_CHAR_BIT;
-  byte = *((char *) value_contents (bitstring) + offset);
-
-  bit_index = index % TARGET_CHAR_BIT;
-  byte >>= (gdbarch_bits_big_endian (get_type_arch (bitstring_type)) ?
-	    TARGET_CHAR_BIT - 1 - bit_index : bit_index);
-
-  v = value_from_longest (type, byte & 1);
-
-  set_value_bitpos (v, bit_index);
-  set_value_bitsize (v, 1);
-  set_value_component_location (v, bitstring);
-  VALUE_FRAME_ID (v) = VALUE_FRAME_ID (bitstring);
-
-  set_value_offset (v, offset + value_offset (bitstring));
-
-  return v;
-}
-
 \f
 /* Check to see if either argument is a structure, or a reference to
    one.  This is called so we know whether to go ahead with the normal
@@ -735,10 +694,9 @@ value_concat (struct value *arg1, struct value *arg2)
 	    }
 	  outval = value_string (ptr, count * inval2len, char_type);
 	}
-      else if (TYPE_CODE (type2) == TYPE_CODE_BITSTRING
-	       || TYPE_CODE (type2) == TYPE_CODE_BOOL)
+      else if (TYPE_CODE (type2) == TYPE_CODE_BOOL)
 	{
-	  error (_("unimplemented support for bitstring/boolean repeats"));
+	  error (_("unimplemented support for boolean repeats"));
 	}
       else
 	{
@@ -780,17 +738,15 @@ value_concat (struct value *arg1, struct value *arg2)
 	}
       outval = value_string (ptr, inval1len + inval2len, char_type);
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_BITSTRING
-	   || TYPE_CODE (type1) == TYPE_CODE_BOOL)
+  else if (TYPE_CODE (type1) == TYPE_CODE_BOOL)
     {
       /* We have two bitstrings to concatenate.  */
-      if (TYPE_CODE (type2) != TYPE_CODE_BITSTRING
-	  && TYPE_CODE (type2) != TYPE_CODE_BOOL)
+      if (TYPE_CODE (type2) != TYPE_CODE_BOOL)
 	{
-	  error (_("Bitstrings or booleans can only be concatenated "
+	  error (_("Booleans can only be concatenated "
 		   "with other bitstrings or booleans."));
 	}
-      error (_("unimplemented support for bitstring/boolean concatenation."));
+      error (_("unimplemented support for boolean concatenation."));
     }
   else
     {
diff --git a/gdb/valops.c b/gdb/valops.c
index 8167cd4..17696ee 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3744,8 +3744,7 @@ value_slice (struct value *array, int lowbound, int length)
 
   array_type = check_typedef (value_type (array));
   if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
-      && TYPE_CODE (array_type) != TYPE_CODE_STRING
-      && TYPE_CODE (array_type) != TYPE_CODE_BITSTRING)
+      && TYPE_CODE (array_type) != TYPE_CODE_STRING)
     error (_("cannot take slice of non-array"));
 
   range_type = TYPE_INDEX_TYPE (array_type);
@@ -3762,38 +3761,7 @@ value_slice (struct value *array, int lowbound, int length)
 					TYPE_TARGET_TYPE (range_type),
 					lowbound, 
 					lowbound + length - 1);
-  if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
-    {
-      int i;
-
-      slice_type = create_set_type ((struct type *) NULL,
-				    slice_range_type);
-      TYPE_CODE (slice_type) = TYPE_CODE_BITSTRING;
-      slice = value_zero (slice_type, not_lval);
 
-      for (i = 0; i < length; i++)
-	{
-	  int element = value_bit_index (array_type,
-					 value_contents (array),
-					 lowbound + i);
-
-	  if (element < 0)
-	    error (_("internal error accessing bitstring"));
-	  else if (element > 0)
-	    {
-	      int j = i % TARGET_CHAR_BIT;
-
-	      if (gdbarch_bits_big_endian (get_type_arch (array_type)))
-		j = TARGET_CHAR_BIT - 1 - j;
-	      value_contents_raw (slice)[i / TARGET_CHAR_BIT] |= (1 << j);
-	    }
-	}
-      /* We should set the address, bitssize, and bitspos, so the
-         slice can be used on the LHS, but that may require extensions
-         to value_assign.  For now, just leave as a non_lval.
-         FIXME.  */
-    }
-  else
     {
       struct type *element_type = TYPE_TARGET_TYPE (array_type);
       LONGEST offset =
diff --git a/gdb/valprint.c b/gdb/valprint.c
index fc5942d..6e651f6 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -252,7 +252,6 @@ scalar_type_p (struct type *type)
     case TYPE_CODE_UNION:
     case TYPE_CODE_SET:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
       return 0;
     default:
       return 1;
-- 
1.7.7.6


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] remove TYPE_CODE_BITSTRING
  2012-08-13  1:13     ` Yao Qi
@ 2012-08-15 19:39       ` Tom Tromey
  0 siblings, 0 replies; 9+ messages in thread
From: Tom Tromey @ 2012-08-15 19:39 UTC (permalink / raw)
  To: Yao Qi; +Cc: gdb-patches

>>>>> "Yao" == Yao Qi <yao@codesourcery.com> writes:

Yao> I'll define TYPE_CODE_BITSTRING -1 in 'enum type_code', and document
Yao> gdb.TYPE_CODE_BITSTRING is deprecated.  Note that the following patch
Yao> moves ENTRY (TYPE_CODE_BITSTRING) to slot 0 in array 'pyty_codes', in
Yao> order to keep the order identical to 'enum type_code'.

Thanks.  The code bits here are ok.

Tom


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-08-15 19:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-10  9:13 [RFC 0/3] Remove unused operators OP_BITSTRING TERNOP_SLICE_COUNT and TYPE_CODE_BITSTRING Yao Qi
2012-08-10  9:13 ` [PATCH 2/3] Remove TERNOP_SLICE_COUNT Yao Qi
2012-08-10 16:16   ` Tom Tromey
2012-08-10  9:13 ` [PATCH 1/3] Remove OP_BITSTRING Yao Qi
2012-08-10 16:16   ` Tom Tromey
2012-08-10  9:13 ` [PATCH 3/3] remove TYPE_CODE_BITSTRING Yao Qi
2012-08-10 16:19   ` Tom Tromey
2012-08-13  1:13     ` Yao Qi
2012-08-15 19:39       ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox