These files removed.
[deliverable/binutils-gdb.git] / gdb / eval.c
index efe1dc28d82f4937ee3459d79b635c1d238cdf5d..15bb57efac41f4a1e45ba3310bc62164e5e737ed 100644 (file)
@@ -918,26 +918,27 @@ evaluate_subexp_standard (struct type *expect_type,
          {
            struct block *b;
            CORE_ADDR funaddr;
-           struct type *value_type;
+           struct type *val_type;
 
-           funaddr = find_function_addr (method, &value_type);
+           funaddr = find_function_addr (method, &val_type);
 
            b = block_for_pc (funaddr);
 
-           CHECK_TYPEDEF (value_type);
+           CHECK_TYPEDEF (val_type);
          
-           if ((value_type == NULL) 
-               || (TYPE_CODE(value_type) == TYPE_CODE_ERROR))
+           if ((val_type == NULL) 
+               || (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
              {
                if (expect_type != NULL)
-                 value_type = expect_type;
+                 val_type = expect_type;
              }
 
-           struct_return = using_struct_return (value_type);
+           struct_return = using_struct_return (value_type (method), val_type);
          }
        else if (expect_type != NULL)
          {
-           struct_return = using_struct_return (check_typedef (expect_type));
+           struct_return = using_struct_return (NULL,
+                                                check_typedef (expect_type));
          }
        
        /* Found a function symbol.  Now we will substitute its
@@ -1720,7 +1721,7 @@ evaluate_subexp_standard (struct type *expect_type,
           returns the correct type value */
 
        deprecated_set_value_type (arg1, tmp_type);
-       return value_ind (value_add (value_coerce_array (arg1), arg2));
+       return value_subscripted_rvalue (arg1, arg2, 0);
       }
 
     case BINOP_LOGICAL_AND:
@@ -2204,14 +2205,14 @@ evaluate_subexp_for_address (struct expression *exp, int *pos,
        {
          struct type *type = check_typedef (value_type (x));
 
-         if (VALUE_LVAL (x) == lval_memory)
+         if (VALUE_LVAL (x) == lval_memory || value_must_coerce_to_target (x))
            return value_zero (lookup_pointer_type (value_type (x)),
                               not_lval);
          else if (TYPE_CODE (type) == TYPE_CODE_REF)
            return value_zero (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
                               not_lval);
          else
-           error (_("Attempt to take address of non-lval"));
+           error (_("Attempt to take address of value not located in memory."));
        }
       return value_addr (x);
     }
This page took 0.025349 seconds and 4 git commands to generate.