aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--evaluate.c3
-rw-r--r--validation/function-pointer-type.c1
-rw-r--r--validation/linear/call-builtin.c1
-rw-r--r--validation/linear/call-direct.c1
-rw-r--r--validation/linear/call-indirect.c1
-rw-r--r--validation/linear/call-inline.c1
-rw-r--r--validation/sizeof-function.c1
7 files changed, 3 insertions, 6 deletions
diff --git a/evaluate.c b/evaluate.c
index e6dbe3d8..840f98d3 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -1782,6 +1782,9 @@ static struct symbol *evaluate_dereference(struct expression *expr)
default:
expression_error(expr, "cannot dereference this type");
return NULL;
+ case SYM_FN:
+ *expr = *op;
+ return expr->ctype;
case SYM_PTR:
node = alloc_symbol(expr->pos, SYM_NODE);
node->ctype.modifiers = target->ctype.modifiers & MOD_SPECIFIER;
diff --git a/validation/function-pointer-type.c b/validation/function-pointer-type.c
index cb1f59b2..ebc4007b 100644
--- a/validation/function-pointer-type.c
+++ b/validation/function-pointer-type.c
@@ -9,5 +9,4 @@ void f3(void) { int (*f)(void); f = ***fun; } // C99,C11 6.5.3.2p4
/*
* check-name: type of function pointers
* check-command: sparse -Wno-decl $file
- * check-known-to-fail
*/
diff --git a/validation/linear/call-builtin.c b/validation/linear/call-builtin.c
index b0261e99..b1511359 100644
--- a/validation/linear/call-builtin.c
+++ b/validation/linear/call-builtin.c
@@ -10,7 +10,6 @@ u32 f3(u32 a) { return (***__builtin_popcount)(a); } // C99,C11 6.5.3.2p4
/*
* check-name: builtin calls
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-excludes: load
diff --git a/validation/linear/call-direct.c b/validation/linear/call-direct.c
index 176bfe22..52f86306 100644
--- a/validation/linear/call-direct.c
+++ b/validation/linear/call-direct.c
@@ -10,7 +10,6 @@ int f3(void) { return (***fun)(); } // C99,C11 6.5.3.2p4
/*
* check-name: direct calls
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-excludes: load
diff --git a/validation/linear/call-indirect.c b/validation/linear/call-indirect.c
index d8797b02..1275910c 100644
--- a/validation/linear/call-indirect.c
+++ b/validation/linear/call-indirect.c
@@ -8,7 +8,6 @@ int g3(int (*fun)(void)) { return (***fun)(); } // C99,C11 6.5.3.2p4
/*
* check-name: indirect calls
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-excludes: load
diff --git a/validation/linear/call-inline.c b/validation/linear/call-inline.c
index d931a3cb..a33f0a1c 100644
--- a/validation/linear/call-inline.c
+++ b/validation/linear/call-inline.c
@@ -10,7 +10,6 @@ int i3(void) { return (***fun)(); } // C99,C11 6.5.3.2p4
/*
* check-name: inline calls
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-excludes: load
diff --git a/validation/sizeof-function.c b/validation/sizeof-function.c
index 20c795e9..27d535d4 100644
--- a/validation/sizeof-function.c
+++ b/validation/sizeof-function.c
@@ -36,7 +36,6 @@ int test(void)
/*
* check-name: sizeof-function
* check-command: sparse -Wno-decl $file
- * check-known-to-fail
*
* check-error-start
sizeof-function.c:22:14: warning: expression using sizeof on a function