tree-ssa-alias.c (maybe_create_global_var): Don't just return if .GLOBAL_VAR has...
authorDiego Novillo <dnovillo@redhat.com>
Wed, 28 Jul 2004 17:57:27 +0000 (17:57 +0000)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Wed, 28 Jul 2004 17:57:27 +0000 (13:57 -0400)
* tree-ssa-alias.c (maybe_create_global_var): Don't just
return if .GLOBAL_VAR has been created.

From-SVN: r85268

gcc/ChangeLog
gcc/tree-ssa-alias.c

index 259ad7cedf0f360e1f05d5d57759f2c5c9721969..7341996e85e463756c844c4d4bd21372a6cf505b 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-28  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-alias.c (maybe_create_global_var): Don't just
+       return if .GLOBAL_VAR has been created.
+
 2004-07-28  Diego Novillo  <dnovillo@redhat.com>
 
        * tree-ssa.c (verify_flow_insensitive_alias_info): Process
index 94ccd800929aecdda8c822f98d6ed732ddc754cd..7ad1867c453cf71e52c9fdd0f1cd42aaef8d40f5 100644 (file)
@@ -1492,33 +1492,34 @@ maybe_create_global_var (struct alias_info *ai)
   size_t i, n_clobbered;
   
   /* No need to create it, if we have one already.  */
-  if (global_var)
-    return;
-
-  /* Count all the call-clobbered variables.  */
-  n_clobbered = 0;
-  EXECUTE_IF_SET_IN_BITMAP (call_clobbered_vars, 0, i, n_clobbered++);
+  if (global_var == NULL_TREE)
+    {
+      /* Count all the call-clobbered variables.  */
+      n_clobbered = 0;
+      EXECUTE_IF_SET_IN_BITMAP (call_clobbered_vars, 0, i, n_clobbered++);
 
-  /* Create .GLOBAL_VAR if we have too many call-clobbered variables.
-     We also create .GLOBAL_VAR when there no call-clobbered variables
-     to prevent code motion transformations from re-arranging function
-     calls that may have side effects.  For instance,
+      /* Create .GLOBAL_VAR if we have too many call-clobbered
+        variables.  We also create .GLOBAL_VAR when there no
+        call-clobbered variables to prevent code motion
+        transformations from re-arranging function calls that may
+        have side effects.  For instance,
 
-               foo ()
+               foo ()
                {
                  int a = f ();
                  g ();
                  h (a);
                }
 
-     There are no call-clobbered variables in foo(), so it would be
-     entirely possible for a pass to want to move the call to f()
-     after the call to g().  If f() has side effects, that would be
-     wrong.  Creating .GLOBAL_VAR in this case will insert VDEFs for
-     it and prevent such transformations.  */
-  if (n_clobbered == 0
-      || ai->num_calls_found * n_clobbered >= (size_t) GLOBAL_VAR_THRESHOLD)
-    create_global_var ();
+        There are no call-clobbered variables in foo(), so it would
+        be entirely possible for a pass to want to move the call to
+        f() after the call to g().  If f() has side effects, that
+        would be wrong.  Creating .GLOBAL_VAR in this case will
+        insert VDEFs for it and prevent such transformations.  */
+      if (n_clobbered == 0
+         || ai->num_calls_found * n_clobbered >= (size_t) GLOBAL_VAR_THRESHOLD)
+       create_global_var ();
+    }
 
   /* If the function has calls to clobbering functions and .GLOBAL_VAR has
      been created, make it an alias for all call-clobbered variables.  */