aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/codegen.c2
-rw-r--r--tests/functions.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 7f85fbd..2da6851 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -102,7 +102,7 @@ static void codegen_ref_expr(CodeGen* g, RefExprNode* expr) {
}
static void codegen_lval2rval(CodeGen* g, Type* ty) {
- if (ty->kind == TypeKind_array) {
+ if (ty->kind == TypeKind_array || ty->kind == TypeKind_func) {
return;
}
diff --git a/tests/functions.c b/tests/functions.c
index 4911d7c..f9f25cb 100644
--- a/tests/functions.c
+++ b/tests/functions.c
@@ -168,8 +168,11 @@ int main() {
int (*fp1)() = f10;
ASSERT_EQ(12345, fp1());
+ ASSERT_EQ(12345, (*fp1)());
+ ASSERT_EQ(12345, (**fp1)());
int (*fp2)(int, int, int, int, int, int) = f;
ASSERT_EQ(1, fp2(1, 2, 3, 4, 5, 6));
+ ASSERT_EQ(1, (*fp2)(1, 2, 3, 4, 5, 6));
int (*fp3)(int, int, int, int, int, int) = f6;
ASSERT_EQ(6, fp3(1, 2, 3, 4, 5, 6));
int (*fp4)(int, int, int, int, int, int, int, int, int, int, int) = f7;