constraintExpr ce;
if (sRef_isInvalid (s))
- llfatalbug(("Invalid sRef"));
+ llfatalbug((message("Invalid sRef")));
- if (s->kind == SK_RESULT)
- {
- ce = constraintExpr_makeTermsRef (s);
- return ce;
- }
- if (s->kind != SK_PARAM)
+ switch (s->kind)
{
- if (s->kind != SK_CVAR)
+ case SK_RESULT:
+ {
+ ce = constraintExpr_makeTermsRef (s);
+ return ce;
+ }
+ case SK_FIELD:
+ {
+ sRef temp;
+
+ temp = (sRef_makeField (sRef_fixBaseParam (s->info->field->rec, args),
+ s->info->field->field));
+ ce = constraintExpr_makeTermsRef (temp);
+ return ce;
+ }
+ case SK_PTR:
+ {
+ sRef temp;
+ temp = (sRef_makePointer (sRef_fixBaseParam (s->info->ref, args)));
+ ce = constraintExpr_makeTermsRef (temp);
+ return ce;
+ }
+
+ case SK_ARRAYFETCH:
+ {
+ sRef temp;
+ temp = sRef_fixBaseParam (s, args);
+ ce = constraintExpr_makeTermsRef (temp);
+ return ce;
+ }
+ case SK_CVAR:
+ ce = constraintExpr_makeTermsRef (s);
+ return ce;
+ case SK_PARAM:
+ llassert(exprNodeList_size (args) > s->info->paramno);
{
- llcontbug ((message("Trying to do fixConstraintParam on nonparam, nonglobal: %s for function with arguments %s", sRef_unparse (s), exprNodeList_unparse(args) ) ));
+ exprNode e = exprNodeList_nth (args, s->info->paramno);
+
+ llassert( !(exprNode_isError (e)) );
+ ce = constraintExpr_makeExprNode (e);
+ return ce;
}
+
+ default:
+ llcontbug ((message("Trying to do fixConstraintParam on nonparam, nonglobal: %s for function with arguments %s", sRef_unparse (s), exprNodeList_unparse(args) ) ));
ce = constraintExpr_makeTermsRef (s);
return ce;
}
+
- if (exprNodeList_size (args) > s->info->paramno)
- {
- exprNode e = exprNodeList_nth (args, s->info->paramno);
-
- if (exprNode_isError (e))
- {
- llassert (FALSE);
- }
-
- ce = constraintExpr_makeExprNode (e);
- }
- else
- {
- llassert(FALSE);
- }
- return ce;
+
}
/*@exposed@*/ sRef
/*drl7x 11/28/2000 */
-bool sRef_isFixedArray (sRef p_s) {
+bool sRef_isFixedArray (sRef p_s) /*@*/ {
ctype c;
c = sRef_getType (p_s);
return ( ctype_isFixedArray (c) );
}
-int sRef_getArraySize (sRef p_s) {
+long int sRef_getArraySize (sRef p_s) /*@*/ {
ctype c;
llassert (sRef_isFixedArray(p_s) );
-
+ DPRINTF (( message ("sRef_getArraySize getting array size for %s", sRef_unparse(p_s) ) ));
+
c = sRef_getType (p_s);
return (ctype_getArraySize (c) );