OSDN Git Service

* alias.c (mark_constant_function): Check for constancy and
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Apr 2003 02:47:41 +0000 (02:47 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Apr 2003 02:47:41 +0000 (02:47 +0000)
purity even of void functions.  Update both the function decl
and the cgraph RTL info with the results.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65981 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/alias.c

index ab6dd74..c552233 100644 (file)
@@ -1,5 +1,11 @@
 2003-04-22  Roger Sayle  <roger@eyesopen.com>
 
+       * alias.c (mark_constant_function):  Check for constancy and
+       purity even of void functions.  Update both the function decl
+       and the cgraph RTL info with the results.
+
+2003-04-22  Roger Sayle  <roger@eyesopen.com>
+
        * real.c (do_add): Change to return a bool indicating that the
        result of the operation may be inexact due to loss of precision.
        (do_multiply): Likewise.
index 49b53c9..4cd51e9 100644 (file)
@@ -2642,7 +2642,7 @@ nonlocal_set_p (x)
   return for_each_rtx (&x, nonlocal_set_p_1, NULL);
 }
 
-/* Mark the function if it is constant.  */
+/* Mark the function if it is pure or constant.  */
 
 void
 mark_constant_function ()
@@ -2653,7 +2653,6 @@ mark_constant_function ()
   if (TREE_READONLY (current_function_decl)
       || DECL_IS_PURE (current_function_decl)
       || TREE_THIS_VOLATILE (current_function_decl)
-      || TYPE_MODE (TREE_TYPE (current_function_decl)) == VOIDmode
       || current_function_has_nonlocal_goto
       || !(*targetm.binds_local_p) (current_function_decl))
     return;
@@ -2688,9 +2687,15 @@ mark_constant_function ()
   if (insn)
     ;
   else if (nonlocal_memory_referenced)
-    cgraph_rtl_info (current_function_decl)->pure_function = 1;
+    {
+      cgraph_rtl_info (current_function_decl)->pure_function = 1;
+      DECL_IS_PURE (current_function_decl) = 1;
+    }
   else
-    cgraph_rtl_info (current_function_decl)->const_function = 1;
+    {
+      cgraph_rtl_info (current_function_decl)->const_function = 1;
+      TREE_READONLY (current_function_decl) = 1;
+    }
 }
 \f