]> andersk Git - splint.git/blobdiff - src/aliasTable.c
Fixed problem with shadow parameters.
[splint.git] / src / aliasTable.c
index 14bf663d22716d234126f5259d468f384f7afeef..4773e39aaef8eaeb17f89cc79e4c12e1b738ee02 100644 (file)
@@ -1,6 +1,6 @@
 /*
-** LCLint - annotation-assisted static program checker
-** Copyright (C) 1994-2000 University of Virginia,
+** Splint - annotation-assisted static program checker
+** Copyright (C) 1994-2003 University of Virginia,
 **         Massachusetts Institute of Technology
 **
 ** This program is free software; you can redistribute it and/or modify it
 ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 ** MA 02111-1307, USA.
 **
-** For information on lclint: lclint-request@cs.virginia.edu
-** To report a bug: lclint-bug@cs.virginia.edu
-** For more information: http://lclint.cs.virginia.edu
+** For information on splint: info@splint.org
+** To report a bug: splint-bug@splint.org
+** For more information: http://www.splint.org
 */
 /*
 ** aliasTable.c
 */
 
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
 # include "basic.h"
 
 /*@constant int ATINVALID; @*/
@@ -51,8 +51,8 @@ aliasTable_newEmpty (void)
   
   s->nelements = 0;
   s->nspace = aliasTableBASESIZE;
-  s->keys     = (sRef *) dmalloc (sizeof (*s->keys) * aliasTableBASESIZE);
-  s->values   = (sRefSet *) dmalloc (sizeof (*s->values) * aliasTableBASESIZE);
+  s->keys = (sRef *) dmalloc (sizeof (*s->keys) * aliasTableBASESIZE);
+  s->values = (sRefSet *) dmalloc (sizeof (*s->values) * aliasTableBASESIZE);
   
   return (s);
 }
@@ -94,6 +94,9 @@ static int aliasTable_lookupRefs (/*@notnull@*/ aliasTable s, sRef sr)
     {
       if (sRef_same (sr, s->keys[i])) 
        {
+         DPRINTF (("sRef match: %s / %s",
+                   sRef_unparseFull (sr),
+                   sRef_unparseFull (s->keys[i])));
          return i;
        }
     }
@@ -108,12 +111,15 @@ static int aliasTable_lookupRefs (/*@notnull@*/ aliasTable s, sRef sr)
 aliasTable
 aliasTable_addMustAlias (/*@returned@*/ aliasTable s,
                         /*@exposed@*/ sRef sr,
-                        sRef al)
+                        /*@exposed@*/ sRef al)
 {
   int ind;
   sRefSet ss;
   
   llassert (NOALIAS (sr, al));
+  
+  DPRINTF (("Adding alias: %s / %s", sRef_unparseFull (sr),
+           sRef_unparseFull (al)));
 
   if (aliasTable_isUndefined (s))
     {
@@ -126,7 +132,7 @@ aliasTable_addMustAlias (/*@returned@*/ aliasTable s,
     }
   
   ss = aliasTable_canAlias (s, al); 
-  
+  DPRINTF (("Previous aliases: %s", sRefSet_unparse (ss)));
   
   if (ind == ATINVALID)
     {
@@ -146,6 +152,7 @@ aliasTable_addMustAlias (/*@returned@*/ aliasTable s,
     }
   
   s->values[ind] = sRefSet_unionExcept (s->values[ind], ss, s->keys[ind]); 
+  DPRINTF (("New aliases: %s", sRefSet_unparse (s->values[ind])));
 
   sRefSet_free (ss);
   return s;
@@ -274,7 +281,7 @@ static /*@only@*/ sRefSet aliasTable_aliasedByAux (aliasTable s, sRef sr, int li
          llquietbug
            (message ("Alias search limit exceeded, checking %q. "
                      "This either means there is a variable with at least "
-                     "%d indirections, or there is a bug in LCLint.",
+                     "%d indirections, or there is a bug in Splint.",
                      sRef_unparse (sr),
                      ALIASSEARCHLIMIT));
          
@@ -431,7 +438,7 @@ static /*@only@*/ sRefSet
          llquietbug
            (message ("Alias search limit exceeded, checking %q. "
                      "This either means there is a variable with at least "
-                     "%d indirections, or there is a bug in LCLint.",
+                     "%d indirections, or there is a bug in Splint.",
                      sRef_unparse (sr),
                      ALIASSEARCHLIMIT));
          
@@ -483,9 +490,9 @@ static /*@only@*/ sRefSet
            {
              ret = sRefSet_union (ret, s->values[ind]);
            }
-
+         
          sRefSet_free (tmp);
-                 return ret;
+         return ret;
        }
       
       if (ind == ATINVALID) return sRefSet_undefined;      
@@ -703,8 +710,8 @@ aliasTable_unparse (aliasTable s)
 
    aliasTable_elements (s, key, value)
      {
-       st = message ("%q\t%q -> %q\n", st, sRef_unparse (key), 
-                    sRefSet_unparse (value));
+       st = message ("%q\t%q -> %q\n", st, sRef_unparseFull (key), 
+                    sRefSet_unparseFull (value));
      } end_aliasTable_elements;
 
    return st;
@@ -820,5 +827,22 @@ aliasTable_checkGlobs (aliasTable t)
     } end_aliasTable_elements;
 }
 
+# ifdef DEBUGSPLINT
+
+/*
+** For debugging only
+*/
 
+void aliasTable_checkValid (aliasTable t)
+{
+  aliasTable_elements (t, key, value)
+    {
+      sRef_checkCompletelyReasonable (key);
 
+      sRefSet_elements (value, sr) 
+       {
+         sRef_checkCompletelyReasonable (sr);
+       } end_sRefSet_elements ;
+    } end_aliasTable_elements ;
+}
+# endif
This page took 0.049688 seconds and 4 git commands to generate.