]> git.xonotic.org Git - xonotic/xonotic.git/commitdiff
detect temps used by only one function
authorRudolf Polzer <divverent@xonotic.org>
Wed, 2 May 2012 08:03:07 +0000 (10:03 +0200)
committerRudolf Polzer <divverent@xonotic.org>
Wed, 2 May 2012 08:03:07 +0000 (10:03 +0200)
misc/tools/progs-analyzer.pl

index 6b8c006396d18c9e7712a742e279fba108be14ad..a6528d2bfe7bc1f515b08e531ebda310b2921e78 100644 (file)
@@ -535,8 +535,18 @@ sub find_uninitialized_locals($$)
 
        for(keys %{$progs->{temps}})
        {
-               $watchme{$_} = WATCHME_T | WATCHME_X
-                       if not exists $watchme{$_};
+               next
+                       if exists $watchme{$_};
+               if($progs->{temps}{$_})
+               {
+                       # shared temp
+                       $watchme{$_} = WATCHME_T | WATCHME_X
+               }
+               else
+               {
+                       # unique temp
+                       $watchme{$_} = WATCHME_X
+               }
        }
 
        $watchme{$_} |= WATCHME_R
@@ -876,13 +886,13 @@ sub detect_constants($)
        {
                for(keys %{$_->{globals_used}})
                {
-                       if($globalflags[$_] & GLOBALFLAG_Q)
+                       if($globalflags[$_] & GLOBALFLAG_U)
                        {
-                               $globalflags[$_] &= ~GLOBALFLAG_Q;
+                               $globalflags[$_] &= ~GLOBALFLAG_U;
                        }
-                       else
+                       elsif($globalflags[$_] & GLOBALFLAG_Q)
                        {
-                               $globalflags[$_] &= ~GLOBALFLAG_U;
+                               $globalflags[$_] &= ~GLOBALFLAG_Q;
                        }
                }
                $globalflags[$_] |= GLOBALFLAG_R
@@ -961,11 +971,12 @@ sub detect_constants($)
                        elsif(($globalflags[$_] & (GLOBALFLAG_S | GLOBALFLAG_I | GLOBALFLAG_Q)) == GLOBALFLAG_Q)
                        {
                                $globaltypes[$_] = "uniquetemp";
+                               $istemp{$_} = 0;
                        }
                        elsif(($globalflags[$_] & (GLOBALFLAG_S | GLOBALFLAG_I | GLOBALFLAG_Q)) == 0)
                        {
                                $globaltypes[$_] = "temp";
-                               ++$istemp{$_};
+                               $istemp{$_} = 1;
                        }
                        elsif(($globalflags[$_] & (GLOBALFLAG_S | GLOBALFLAG_I)) == GLOBALFLAG_I)
                        {