2004-11-15 Andrew Cagney <cagney@gnu.org>
authorAndrew Cagney <cagney@redhat.com>
Mon, 15 Nov 2004 22:17:59 +0000 (22:17 +0000)
committerAndrew Cagney <cagney@redhat.com>
Mon, 15 Nov 2004 22:17:59 +0000 (22:17 +0000)
* findvar.c (value_of_register): Set the frame ID.
* value.c (value_primitive_field): Copy the frame ID.
* valops.c (value_assign): Simplify lval_register case, there's
always a frame.

gdb/ChangeLog
gdb/findvar.c
gdb/valops.c
gdb/value.c

index 30fe24a..8fc5cc1 100644 (file)
@@ -1,3 +1,10 @@
+2004-11-15  Andrew Cagney  <cagney@gnu.org>
+
+       * findvar.c (value_of_register): Set the frame ID.
+       * value.c (value_primitive_field): Copy the frame ID.
+       * valops.c (value_assign): Simplify lval_register case, there's
+       always a frame.
+
 2004-11-14  Daniel Jacobowitz  <dan@debian.org>
 
        * Makefile.in (mips-linux-tdep.o): Update dependencies.
index 487d25e..cc7d7a5 100644 (file)
@@ -288,6 +288,7 @@ value_of_register (int regnum, struct frame_info *frame)
   VALUE_ADDRESS (reg_val) = addr;
   VALUE_REGNUM (reg_val) = regnum;
   VALUE_OPTIMIZED_OUT (reg_val) = optim;
+  VALUE_FRAME_ID (reg_val) = get_frame_id (frame);
   return reg_val;
 }
 
index 40290d4..fa63871 100644 (file)
@@ -602,16 +602,8 @@ value_assign (struct value *toval, struct value *fromval)
        int value_reg;
 
        /* Figure out which frame this is in currently.  */
-       if (VALUE_LVAL (toval) == lval_register)
-         {
-           frame = get_current_frame ();
-           value_reg = VALUE_REGNUM (toval);
-         }
-       else
-         {
-           frame = frame_find_by_id (VALUE_FRAME_ID (toval));
-           value_reg = VALUE_REGNUM (toval);
-         }
+       frame = frame_find_by_id (VALUE_FRAME_ID (toval));
+       value_reg = VALUE_REGNUM (toval);
 
        if (!frame)
          error ("Value being assigned to is no longer active.");
index 2bbaeac..5afc5b4 100644 (file)
@@ -964,6 +964,7 @@ value_primitive_field (struct value *arg1, int offset,
     VALUE_LVAL (v) = lval_internalvar_component;
   VALUE_ADDRESS (v) = VALUE_ADDRESS (arg1);
   VALUE_REGNUM (v) = VALUE_REGNUM (arg1);
+  VALUE_FRAME_ID (v) = VALUE_FRAME_ID (arg1);
 /*  VALUE_OFFSET (v) = VALUE_OFFSET (arg1) + offset
    + TYPE_FIELD_BITPOS (arg_type, fieldno) / 8; */
   return v;