2000-05-24 Michael Snyder <msnyder@seadog.cygnus.com>
authorMichael Snyder <msnyder@vmware.com>
Wed, 24 May 2000 17:25:39 +0000 (17:25 +0000)
committerMichael Snyder <msnyder@vmware.com>
Wed, 24 May 2000 17:25:39 +0000 (17:25 +0000)
        * findvar.c (value_from_register): Factor code, simplify logic.

gdb/ChangeLog
gdb/findvar.c

index 04db1e2..efedf75 100644 (file)
@@ -1,3 +1,7 @@
+2000-05-24  Michael Snyder  <msnyder@seadog.cygnus.com>
+
+       * findvar.c (value_from_register): Factor code, simplify logic.
+
 2000-05-23  J.T. Conklin  <jtc@redback.com>
 
        * config/i386/nbsd.mt (TDEPFILES): Move solib.o from here...
index 8f19608..7edbcea 100644 (file)
@@ -1476,7 +1476,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
 }
 
 /* Return a value of type TYPE, stored in register REGNUM, in frame
-   FRAME. 
+   FRAME.
 
    NOTE: returns NULL if register value is not available.
    Caller will check return value or die!  */
@@ -1500,7 +1500,8 @@ value_from_register (type, regnum, frame)
   CHECK_TYPEDEF (type);
   len = TYPE_LENGTH (type);
 
-  /* Pointers on D10V are really only 16 bits, but we lie to gdb elsewhere... */
+  /* Pointers on D10V are really only 16 bits, 
+     but we lie to gdb elsewhere... */
   if (GDB_TARGET_IS_D10V && TYPE_CODE (type) == TYPE_CODE_PTR)
     len = 2;
 
@@ -1703,25 +1704,20 @@ value_from_register (type, regnum, frame)
     }
 
   if (GDB_TARGET_IS_D10V
-      && TYPE_CODE (type) == TYPE_CODE_PTR
-      && TYPE_TARGET_TYPE (type)
-      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
+      && TYPE_CODE (type) == TYPE_CODE_PTR)
     {
-      /* pointer to function */
       unsigned long num;
       unsigned short snum;
-      snum = (unsigned short) extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
-      num = D10V_MAKE_IADDR (snum);
-      store_address (VALUE_CONTENTS_RAW (v), 4, num);
-    }
-  else if (GDB_TARGET_IS_D10V
-          && TYPE_CODE (type) == TYPE_CODE_PTR)
-    {
-      /* pointer to data */
-      unsigned long num;
-      unsigned short snum;
-      snum = (unsigned short) extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
-      num = D10V_MAKE_DADDR (snum);
+
+      snum = (unsigned short)
+       extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
+
+      if (TYPE_TARGET_TYPE (type)        /* pointer to function */
+         && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
+       num = D10V_MAKE_IADDR (snum);
+      else                               /* pointer to data */
+       num = D10V_MAKE_DADDR (snum);
+
       store_address (VALUE_CONTENTS_RAW (v), 4, num);
     }