res->definfo = alinfo_update (res->definfo, other->definfo);
sRef_clearDerived (other);
sRef_clearDerived (res);
- }
+ }
else if (res->defstate == SS_DEAD
&& ((sRef_isOnly (other) && sRef_definitelyNull (other))
|| (other->defstate == SS_UNDEFINED
{
res->defstate = SS_DEAD;
}
-
+
sRef_clearDerived (other);
sRef_clearDerived (res);
}
}
}
-void sRef_setNullTerminatedStateInnerComplete (sRef s, struct _bbufinfo b, fileloc loc) {
+void sRef_setNullTerminatedStateInnerComplete (sRef s, struct _bbufinfo b, /*@unused@*/ fileloc loc) {
switch (b.bufstate) {
case BB_NULLTERMINATED:
if (ctype_isMutable (s->type)
&& !ctype_isPointer (arr->type)
- && !alkind_isStatic (arr->aliaskind))
+ && !alkind_isStatic (arr->aliaskind)
+ && !alkind_isStack (arr->aliaskind)) /* evs - 2000-06-20: don't pass stack allocation to members */
{
s->aliaskind = arr->aliaskind;
}
BADEXIT;
}
-cstring sRef_ntMessage (sRef s)
+/*@observer@*/ cstring sRef_ntMessage (sRef s)
{
llassert (sRef_isValid (s));
struct _bbufinfo BUFSTATE_UNKNOWN;
BUFSTATE_UNKNOWN.bufstate = BB_NOTNULLTERMINATED;
BUFSTATE_UNKNOWN.size = 0;
-
+ BUFSTATE_UNKNOWN.len = 0;
+
if (sRef_isValid(p_s))
return p_s->bufinfo;
return BUFSTATE_UNKNOWN;
llfatalbug (message ("sRef_setLen passed an invalid sRef\n"));
}
}
+
+/*drl7x 11/28/2000 */
+
+bool sRef_isFixedArray (sRef p_s) {
+ ctype c;
+ c = sRef_getType (p_s);
+ return ( ctype_isFixedArray (c) );
+}
+
+int sRef_getArraySize (sRef p_s) {
+ ctype c;
+ llassert (sRef_isFixedArray(p_s) );
+
+ c = sRef_getType (p_s);
+
+ return (ctype_getArraySize (c) );
+}
+
+
+