Fixed a bug: Function designators are converted to rvalues of type "pointer to
function", so dereferencing a function is a legal operation. The result is immediately converted back to "pointer to function" again. Note: Because of performance considerations, cc65 does treat functions as "pointer to function" internally, but nevertheless dereferencing a function must be possible. git-svn-id: svn://svn.cc65.org/cc65/trunk@4330 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
43c89d5fd0
commit
c69e2d9f0f
1 changed files with 5 additions and 2 deletions
|
@ -1599,9 +1599,12 @@ void hie10 (ExprDesc* Expr)
|
|||
ED_MakeRValExpr (Expr);
|
||||
}
|
||||
/* If the expression is already a pointer to function, the
|
||||
* additional dereferencing operator must be ignored.
|
||||
* additional dereferencing operator must be ignored. A function
|
||||
* itself is represented as "pointer to function", so any number
|
||||
* of dereference operators is legal, since the result will
|
||||
* always be converted to "pointer to function".
|
||||
*/
|
||||
if (IsTypeFuncPtr (Expr->Type)) {
|
||||
if (IsTypeFuncPtr (Expr->Type) || IsTypeFunc (Expr->Type)) {
|
||||
/* Expression not storable */
|
||||
ED_MakeRVal (Expr);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue