36 lines
1.1 KiB
Diff
36 lines
1.1 KiB
Diff
--- src/SDCCast.c
|
|
+++ src/SDCCast.c
|
|
@@ -863,6 +863,8 @@ processParms (ast *func,
|
|
|
|
ftype = (*actParm)->ftype;
|
|
|
|
+ resultType = RESULT_TYPE_NONE;
|
|
+
|
|
/* If it's a char, upcast to int. */
|
|
if (IS_INTEGRAL (ftype)
|
|
&& (getSize (ftype) < (unsigned) INTSIZE))
|
|
@@ -874,12 +876,14 @@ processParms (ast *func,
|
|
{
|
|
newType = newAst_LINK (copyLinkChain(ftype));
|
|
DCL_TYPE (newType->opval.lnk) = port->unqualified_pointer;
|
|
+ resultType = RESULT_TYPE_GPTR;
|
|
}
|
|
|
|
if (IS_AGGREGATE (ftype))
|
|
{
|
|
newType = newAst_LINK (copyLinkChain (ftype));
|
|
DCL_TYPE (newType->opval.lnk) = port->unqualified_pointer;
|
|
+ resultType = RESULT_TYPE_GPTR;
|
|
}
|
|
|
|
if (newType)
|
|
@@ -890,7 +894,7 @@ processParms (ast *func,
|
|
(*actParm)->filename = (*actParm)->right->filename;
|
|
(*actParm)->lineno = (*actParm)->right->lineno;
|
|
|
|
- decorateType (*actParm, RESULT_TYPE_NONE);
|
|
+ decorateType (*actParm, resultType);
|
|
}
|
|
return 0;
|
|
} /* vararg */
|