OSDN Git Service

2004-04-05 Caroline Tice <ctice@apple.com>
[pf3gnuchains/gcc-fork.git] / gcc / calls.c
index 04e1671..44d6360 100644 (file)
@@ -726,10 +726,9 @@ flags_from_decl_or_type (tree exp)
        flags |= ECF_NOTHROW;
 
       if (TREE_READONLY (exp) && ! TREE_THIS_VOLATILE (exp))
-       flags |= ECF_LIBCALL_BLOCK;
+       flags |= ECF_LIBCALL_BLOCK | ECF_CONST;
     }
-
-  if (TREE_READONLY (exp) && ! TREE_THIS_VOLATILE (exp))
+  else if (TYPE_P (exp) && TYPE_READONLY (exp) && ! TREE_THIS_VOLATILE (exp))
     flags |= ECF_CONST;
 
   if (TREE_THIS_VOLATILE (exp))
@@ -1195,7 +1194,7 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
        }
 
       mode = TYPE_MODE (type);
-      unsignedp = TREE_UNSIGNED (type);
+      unsignedp = TYPE_UNSIGNED (type);
 
       if (targetm.calls.promote_function_args (fndecl ? TREE_TYPE (fndecl) : 0))
        mode = promote_mode (type, mode, &unsignedp, 1);
@@ -2514,7 +2513,7 @@ expand_call (tree exp, rtx target, int ignore)
       || structure_value_addr != NULL_RTX
       /* Check whether the target is able to optimize the call
         into a sibcall.  */
-      || !(*targetm.function_ok_for_sibcall) (fndecl, exp)
+      || !targetm.function_ok_for_sibcall (fndecl, exp)
       /* Functions that do not return exactly once may not be sibcall
          optimized.  */
       || (flags & (ECF_RETURNS_TWICE | ECF_LONGJMP | ECF_NORETURN))
@@ -3346,7 +3345,7 @@ expand_call (tree exp, rtx target, int ignore)
          && GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp)))
        {
          tree type = TREE_TYPE (exp);
-         int unsignedp = TREE_UNSIGNED (type);
+         int unsignedp = TYPE_UNSIGNED (type);
          int offset = 0;
 
          /* If we don't promote as expected, something is wrong.  */