OSDN Git Service

2003-02-04 David Carlton <carlton@math.stanford.edu>
authorcarlton <carlton>
Tue, 4 Feb 2003 21:19:26 +0000 (21:19 +0000)
committercarlton <carlton>
Tue, 4 Feb 2003 21:19:26 +0000 (21:19 +0000)
* gdb.texinfo (C@t{++}): Recommend DWARF 2, then stabs+.
(Variables): Recommend stabs+ and DWARF 2.
(C plus plus expressions): Correct info about
compiler versions, debug formats.
(Contributors): Change 'DWARF2' to 'DWARF 2'.
PR symtab/874.

2003-02-04  David Carlton  <carlton@math.stanford.edu>

* gdb.c++/overload.exp: Test intToChar(1).
* gdb.c++/overload.cc (intToChar): New.
(main): Call intToChar.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.c++/overload.cc
gdb/testsuite/gdb.c++/overload.exp

index 2c37e80..f504b95 100644 (file)
@@ -1,3 +1,10 @@
+2003-02-04  David Carlton  <carlton@math.stanford.edu>
+
+       * gdbtypes.h: Delete INTEGER_COERCION_BADNESS,
+       FLOAT_COERCION_BADNESS.
+       * gdbtypes.c (rank_one_type): Replace all uses of
+       INTEGER_COERCION_BADNESS by INTEGER_CONVERSION_BADNESS.
+
 2003-02-04  Jim Blandy  <jimb@redhat.com>
 
        * dwarf2read.c (dwarf2_locate_sections): When we find a macro info
index 679822f..f93b36b 100644 (file)
@@ -2591,7 +2591,7 @@ rank_one_type (struct type *parm, struct type *arg)
                  if (TYPE_NOSIGN (arg))        /* plain char -> plain char */
                    return 0;
                  else
-                   return INTEGER_COERCION_BADNESS;    /* signed/unsigned char -> plain char */
+                   return INTEGER_CONVERSION_BADNESS;  /* signed/unsigned char -> plain char */
                }
              else if (TYPE_UNSIGNED (parm))
                {
@@ -2604,13 +2604,13 @@ rank_one_type (struct type *parm, struct type *arg)
                               && integer_types_same_name_p (TYPE_NAME (parm), "long"))
                        return INTEGER_PROMOTION_BADNESS;       /* unsigned int -> unsigned long */
                      else
-                       return INTEGER_COERCION_BADNESS;        /* unsigned long -> unsigned int */
+                       return INTEGER_CONVERSION_BADNESS;      /* unsigned long -> unsigned int */
                    }
                  else
                    {
                      if (integer_types_same_name_p (TYPE_NAME (arg), "long")
                          && integer_types_same_name_p (TYPE_NAME (parm), "int"))
-                       return INTEGER_COERCION_BADNESS;        /* signed long -> unsigned int */
+                       return INTEGER_CONVERSION_BADNESS;      /* signed long -> unsigned int */
                      else
                        return INTEGER_CONVERSION_BADNESS;      /* signed int/long -> unsigned int/long */
                    }
@@ -2623,15 +2623,15 @@ rank_one_type (struct type *parm, struct type *arg)
                           && integer_types_same_name_p (TYPE_NAME (parm), "long"))
                    return INTEGER_PROMOTION_BADNESS;
                  else
-                   return INTEGER_COERCION_BADNESS;
+                   return INTEGER_CONVERSION_BADNESS;
                }
              else
-               return INTEGER_COERCION_BADNESS;
+               return INTEGER_CONVERSION_BADNESS;
            }
          else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
            return INTEGER_PROMOTION_BADNESS;
          else
-           return INTEGER_COERCION_BADNESS;
+           return INTEGER_CONVERSION_BADNESS;
        case TYPE_CODE_ENUM:
        case TYPE_CODE_CHAR:
        case TYPE_CODE_RANGE:
@@ -2653,7 +2653,7 @@ rank_one_type (struct type *parm, struct type *arg)
        case TYPE_CODE_RANGE:
        case TYPE_CODE_BOOL:
        case TYPE_CODE_ENUM:
-         return INTEGER_COERCION_BADNESS;
+         return INTEGER_CONVERSION_BADNESS;
        case TYPE_CODE_FLT:
          return INT_FLOAT_CONVERSION_BADNESS;
        default:
@@ -2666,12 +2666,12 @@ rank_one_type (struct type *parm, struct type *arg)
        case TYPE_CODE_RANGE:
        case TYPE_CODE_BOOL:
        case TYPE_CODE_ENUM:
-         return INTEGER_COERCION_BADNESS;
+         return INTEGER_CONVERSION_BADNESS;
        case TYPE_CODE_FLT:
          return INT_FLOAT_CONVERSION_BADNESS;
        case TYPE_CODE_INT:
          if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
-           return INTEGER_COERCION_BADNESS;
+           return INTEGER_CONVERSION_BADNESS;
          else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
            return INTEGER_PROMOTION_BADNESS;
          /* >>> !! else fall through !! <<< */
@@ -2683,7 +2683,7 @@ rank_one_type (struct type *parm, struct type *arg)
              if (TYPE_NOSIGN (arg))
                return 0;
              else
-               return INTEGER_COERCION_BADNESS;
+               return INTEGER_CONVERSION_BADNESS;
            }
          else if (TYPE_UNSIGNED (parm))
            {
@@ -2695,7 +2695,7 @@ rank_one_type (struct type *parm, struct type *arg)
          else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
            return 0;
          else
-           return INTEGER_COERCION_BADNESS;
+           return INTEGER_CONVERSION_BADNESS;
        default:
          return INCOMPATIBLE_TYPE_BADNESS;
        }
@@ -2708,7 +2708,7 @@ rank_one_type (struct type *parm, struct type *arg)
        case TYPE_CODE_RANGE:
        case TYPE_CODE_BOOL:
        case TYPE_CODE_ENUM:
-         return INTEGER_COERCION_BADNESS;
+         return INTEGER_CONVERSION_BADNESS;
        case TYPE_CODE_FLT:
          return INT_FLOAT_CONVERSION_BADNESS;
        default:
index 30cdb5f..e3ba6fa 100644 (file)
@@ -1211,10 +1211,6 @@ extern int count_virtual_fns (struct type *);
 #define TOO_FEW_PARAMS_BADNESS       100
 /* Badness if no conversion among types */
 #define INCOMPATIBLE_TYPE_BADNESS    100
-/* Badness of coercing large integer to smaller size */
-#define INTEGER_COERCION_BADNESS     100
-/* Badness of coercing large floating type to smaller size */
-#define FLOAT_COERCION_BADNESS       100
 
 /* Badness of integral promotion */
 #define INTEGER_PROMOTION_BADNESS      1
index dde2a43..44b3726 100644 (file)
@@ -1,3 +1,9 @@
+2003-02-04  David Carlton  <carlton@math.stanford.edu>
+
+       * gdb.c++/overload.exp: Test intToChar(1).
+       * gdb.c++/overload.cc (intToChar): New.
+       (main): Call intToChar.
+
 2003-02-03  David Carlton  <carlton@math.stanford.edu>
 
        * gdb.c++/ovldbreak.exp (continue_to_bp_overloaded): Add
index 40feb3b..2f46715 100644 (file)
@@ -24,6 +24,10 @@ int overload1arg (unsigned long);
 int overload1arg (float);
 int overload1arg (double);
 
+int overloadfnarg (void);
+int overloadfnarg (int);
+int overloadfnarg (int, int (*) (int));
+
 int overloadargs (int a1);
 int overloadargs (int a1, int a2);
 int overloadargs (int a1, int a2, int a3);
@@ -41,6 +45,11 @@ int overloadargs (int a1, int a2, int a3, int a4, int a5, int a6, int a7,
 
 };
 
+int intToChar (char c)
+{
+  return 297;
+}
+
 void marker1()
 {}
 
@@ -58,7 +67,7 @@ int main ()
     float arg11 =100.0;
     double arg12 = 200.0;
 
-    char *str = "A";
+    char *str = (char *) "A";
     foo foo_instance1(111);
     foo foo_instance2(222, str);
     foo foo_instance3(foo_instance2);
@@ -68,6 +77,8 @@ int main ()
        breakpoint();
     #endif
 
+    // Verify that intToChar should work:
+    intToChar(1);
 
     marker1();
     return 0; 
@@ -94,6 +105,12 @@ int foo::overload1arg (unsigned long arg)   { arg = 0; return 10;}
 int foo::overload1arg (float arg)           { arg = 0; return 11;}
 int foo::overload1arg (double arg)          { arg = 0; return 12;}
 
+/* Test to see that we can explicitly request overloaded functions
+   with function pointers in the prototype. */
+
+int foo::overloadfnarg (void) { return ifoo * 20; }
+int foo::overloadfnarg (int arg) { arg = 0; return 13;}
+int foo::overloadfnarg (int arg, int (*foo) (int))    { return foo(arg); } 
 
 /* Some functions to test overloading by varying argument count. */
 
index 7bfae10..227b055 100644 (file)
@@ -378,3 +378,5 @@ gdb_test "list foo::overloadfnarg(int, int (*)(int))" \
 gdb_test "list \"foo::overloadfnarg(int, int (*)(int))\"" \
    "int foo::overloadfnarg.*\\(int arg, int \\(\\*foo\\) \\(int\\)\\).*" \
    "list overloaded function with function ptr args - quotes around argument"
+
+gdb_test "print intToChar(1)" ".\[0-9\]* = 297"