#include "lclintMacros.nf"#include "basic.h"Go to the source code of this file.
Functions | |
| guardSet | guardSet_new () |
| sRefSet | guardSet_getTrueGuards (guardSet g) |
| void | guardSet_delete (guardSet g, sRef s) |
| sRefSet | guardSet_getFalseGuards (guardSet g) |
| guardSet | guardSet_or ( guardSet s, guardSet t) |
| guardSet | guardSet_and ( guardSet s, guardSet t) |
| guardSet | guardSet_union ( guardSet s, guardSet t) |
| guardSet | guardSet_levelUnion ( guardSet s, guardSet t, int lexlevel) |
| guardSet | guardSet_levelUnionFree ( guardSet s, guardSet t, int lexlevel) |
| void | guardSet_flip (guardSet g) |
| guardSet | guardSet_invert ( guardSet g) |
| guardSet | guardSet_copy ( guardSet g) |
| guardSet | guardSet_addTrueGuard ( guardSet g, sRef s) |
| guardSet | guardSet_addFalseGuard ( guardSet g, sRef s) |
| cstring | guardSet_unparse (guardSet g) |
| void | guardSet_free ( guardSet g) |
| bool | guardSet_isGuarded (guardSet g, sRef s) |
| bool | guardSet_isProbableNull (guardSet g, sRef s) |
| bool | guardSet_isEmpty (guardSet g) |
|
|
Definition at line 288 of file guardSet.c. Referenced by exprNode_preOp(). 00289 {
00290 if (sRef_isMeaningful (s))
00291 {
00292 if (g == guardSet_undefined)
00293 {
00294 g = guardSet_newEmpty ();
00295 }
00296
00297 g->fguard = sRefSet_insert (g->fguard, s);
00298 }
00299
00300 return g;
00301 }
|
|
|
Definition at line 273 of file guardSet.c. Referenced by exprNode_produceGuards(). 00274 {
00275 if (sRef_isMeaningful (s))
00276 {
00277 if (g == guardSet_undefined)
00278 {
00279 g = guardSet_newEmpty ();
00280 }
00281
00282 g->tguard = sRefSet_insert (g->tguard, s);
00283 }
00284
00285 return g;
00286 }
|
|
|
Definition at line 125 of file guardSet.c. 00126 {
00127 llassert (NOALIAS (s, t));
00128
00129 if (s == guardSet_undefined)
00130 {
00131 if (t == guardSet_undefined)
00132 {
00133 return s;
00134 }
00135
00136 s = guardSet_newEmpty ();
00137 }
00138
00139 if (t == guardSet_undefined)
00140 {
00141 sRefSet_free (s->fguard);
00142 s->fguard = sRefSet_new ();
00143 }
00144 else
00145 {
00146 sRefSet last;
00147
00148 s->tguard = sRefSet_union (s->tguard, t->tguard);
00149
00150 s->fguard = sRefSet_intersect (last = s->fguard, t->fguard);
00151 sRefSet_free (last);
00152 }
00153
00154 return s;
00155 }
|
|
|
Definition at line 259 of file guardSet.c. Referenced by exprNode_whilePred(). 00260 {
00261 if (g != guardSet_undefined)
00262 {
00263 guardSet ret = guardSet_newEmpty ();
00264
00265 ret->tguard = sRefSet_newCopy (g->tguard);
00266 ret->fguard = sRefSet_newCopy (g->fguard);
00267
00268 return ret;
00269 }
00270 return guardSet_undefined;
00271 }
|
|
|
Definition at line 68 of file guardSet.c. Referenced by usymtab_unguard(). 00069 {
00070 bool res;
00071 llassert (guardSet_isDefined (g));
00072 res = sRefSet_delete (g->tguard, s);
00073
00074 /*
00075 ** This assertion is no longer always true:
00076 ** llassert (res);
00077 */
00078 }
|
|
|
Definition at line 234 of file guardSet.c. Referenced by exprNode_preOp(). 00235 {
00236 if (g != guardSet_undefined)
00237 {
00238 sRefSet tmp = g->tguard;
00239
00240 g->tguard = g->fguard;
00241 g->fguard = tmp;
00242 }
00243 }
|
|
|
Definition at line 317 of file guardSet.c. Referenced by context_exitDoWhileClause(), context_exitForClause(), context_exitWhileClause(), exprNode_free(), exprNode_freeShallow(), guardSet_levelUnionFree(), usymtab_altBranch(), and usymtab_trueBranch(). 00318 {
00319 if (g == guardSet_undefined) return;
00320
00321 sRefSet_free (g->tguard);
00322 sRefSet_free (g->fguard);
00323
00324 sfree (g);
00325 }
|
|
|
Definition at line 80 of file guardSet.c. Referenced by usymtab_popBranches(). 00081 {
00082 if (guardSet_isDefined (g))
00083 {
00084 return (g->fguard);
00085 }
00086 else
00087 {
00088 return (sRefSet_undefined);
00089 }
00090 }
|
|
|
Definition at line 55 of file guardSet.c. Referenced by usymtab_popBranches(). 00056 {
00057
00058 if (guardSet_isDefined (g))
00059 {
00060 return (g->tguard);
00061 }
00062 else
00063 {
00064 return (sRefSet_undefined);
00065 }
00066 }
|
|
|
Definition at line 245 of file guardSet.c. Referenced by context_exitDoWhileClause(), context_exitForClause(), context_exitWhileClause(), and usymtab_popBranches(). 00246 {
00247 if (g != guardSet_undefined)
00248 {
00249 guardSet ret = guardSet_newEmpty ();
00250
00251 ret->tguard = sRefSet_newCopy (g->fguard);
00252 ret->fguard = sRefSet_newCopy (g->tguard);
00253
00254 return ret;
00255 }
00256 return guardSet_undefined;
00257 }
|
|
|
Definition at line 346 of file guardSet.c. 00347 {
00348 if (guardSet_isDefined (g))
00349 {
00350 return (sRefSet_isEmpty (g->tguard) && sRefSet_isEmpty (g->fguard));
00351 }
00352 else
00353 {
00354 return TRUE;
00355 }
00356 }
|
|
|
Definition at line 328 of file guardSet.c. Referenced by usymtab_unguard(). 00329 {
00330 if (g == guardSet_undefined) return FALSE;
00331
00332 return (sRefSet_member (g->tguard, s));
00333 }
|
|
|
Definition at line 336 of file guardSet.c. 00337 {
00338 bool ret;
00339
00340 if (g == guardSet_undefined) return FALSE;
00341
00342 ret = sRefSet_member (g->fguard, s);
00343 return ret;
00344 }
|
|
|
Definition at line 179 of file guardSet.c. Referenced by usymtab_popBranches(), and usymtab_quietExitScope(). 00180 {
00181 if (t == guardSet_undefined) return s;
00182
00183 llassert (NOALIAS (s, t));
00184
00185 if (guardSet_isDefined (s))
00186 {
00187 s->tguard = sRefSet_levelUnion (s->tguard, t->tguard, lexlevel);
00188 s->fguard = sRefSet_levelUnion (s->fguard, t->fguard, lexlevel);
00189 }
00190 else
00191 {
00192 s = guardSet_newEmpty ();
00193
00194 /* should be necessary! */
00195
00196 sRefSet_free (s->tguard);
00197 sRefSet_free (s->fguard);
00198
00199 s->tguard = sRefSet_levelCopy (t->tguard, lexlevel);
00200 s->fguard = sRefSet_levelCopy (t->fguard, lexlevel);
00201 }
00202
00203 return s;
00204 }
|
|
|
Definition at line 207 of file guardSet.c. Referenced by usymtab_popAndBranch(), and usymtab_popOrBranch(). 00209 {
00210 if (t == guardSet_undefined) return s;
00211
00212 if (guardSet_isDefined (s))
00213 {
00214 s->tguard = sRefSet_levelUnion (s->tguard, t->tguard, lexlevel);
00215 s->fguard = sRefSet_levelUnion (s->fguard, t->fguard, lexlevel);
00216 }
00217 else
00218 {
00219 s = guardSet_newEmpty ();
00220
00221 /* should be necessary! */
00222
00223 sRefSet_free (s->tguard);
00224 sRefSet_free (s->fguard);
00225
00226 s->tguard = sRefSet_levelCopy (t->tguard, lexlevel);
00227 s->fguard = sRefSet_levelCopy (t->fguard, lexlevel);
00228 }
00229
00230 guardSet_free (t);
00231 return s;
00232 }
|
|
|
Definition at line 38 of file guardSet.c. Referenced by exprNode_createId(), and exprNode_iterNewId(). 00039 {
00040 return guardSet_undefined;
00041 }
|
|
|
Definition at line 92 of file guardSet.c. 00093 {
00094
00095 llassert (NOALIAS (s, t));
00096
00097 if (s == guardSet_undefined)
00098 {
00099 if (t == guardSet_undefined)
00100 {
00101 return s;
00102 }
00103
00104 s = guardSet_newEmpty ();
00105 }
00106
00107 if (t == guardSet_undefined)
00108 {
00109 sRefSet_free (s->tguard);
00110 s->tguard = sRefSet_new ();
00111 }
00112 else
00113 {
00114 sRefSet last;
00115
00116 s->tguard = sRefSet_intersect (last = s->tguard, t->tguard);
00117 sRefSet_free (last);
00118 s->fguard = sRefSet_union (s->fguard, t->fguard);
00119 }
00120
00121
00122 return s;
00123 }
|
|
|
Definition at line 157 of file guardSet.c. Referenced by usymtab_addGuards(). 00158 {
00159 if (t == guardSet_undefined) return s;
00160
00161 llassert (NOALIAS (s, t));
00162
00163 if (guardSet_isDefined (s))
00164 {
00165 s->tguard = sRefSet_union (s->tguard, t->tguard);
00166 s->fguard = sRefSet_union (s->fguard, t->fguard);
00167 }
00168 else
00169 {
00170 s = guardSet_newEmpty ();
00171
00172 s->tguard = sRefSet_newCopy (t->tguard);
00173 s->fguard = sRefSet_newCopy (t->fguard);
00174 }
00175
00176 return s;
00177 }
|
|
|
Definition at line 303 of file guardSet.c. 00304 {
00305 if (g == guardSet_undefined)
00306 {
00307 return (cstring_makeLiteral ("<no guards>"));
00308 }
00309 else
00310 {
00311 return (message ("not null: %q / prob null: %q",
00312 sRefSet_unparseDebug (g->tguard),
00313 sRefSet_unparseDebug (g->fguard)));
00314 }
00315 }
|
1.2.3 written by Dimitri van Heesch,
© 1997-2000