aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--linearize.c10
-rw-r--r--validation/linear/call-basic.c1
-rw-r--r--validation/linear/call-casted-pointer.c1
-rw-r--r--validation/linear/call-indirect.c1
4 files changed, 3 insertions, 10 deletions
diff --git a/linearize.c b/linearize.c
index 7ad348c0..2e146de7 100644
--- a/linearize.c
+++ b/linearize.c
@@ -1291,13 +1291,9 @@ static pseudo_t linearize_call_expression(struct entrypoint *ep, struct expressi
add_symbol(&insn->fntypes, arg->ctype);
} END_FOR_EACH_PTR(arg);
- if (fn->type == EXPR_PREOP) {
- if (fn->unop->type == EXPR_SYMBOL) {
- struct symbol *sym = fn->unop->symbol;
- if (sym->ctype.base_type->type == SYM_FN)
- fn = fn->unop;
- }
- }
+ if (fn->type == EXPR_PREOP && fn->op == '*' && is_func_type(fn->ctype))
+ fn = fn->unop;
+
if (fn->type == EXPR_SYMBOL) {
call = symbol_pseudo(ep, fn->symbol);
} else {
diff --git a/validation/linear/call-basic.c b/validation/linear/call-basic.c
index 235b443d..60517e2e 100644
--- a/validation/linear/call-basic.c
+++ b/validation/linear/call-basic.c
@@ -23,7 +23,6 @@ int builtin(int a)
/*
* check-name: basic function calls
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-start
symbol:
diff --git a/validation/linear/call-casted-pointer.c b/validation/linear/call-casted-pointer.c
index e66f6999..610d6748 100644
--- a/validation/linear/call-casted-pointer.c
+++ b/validation/linear/call-casted-pointer.c
@@ -23,7 +23,6 @@ int quz(void *a, void *fun)
/*
* check-name: call via casted function pointer
* 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 8ab78676..f5f2adaf 100644
--- a/validation/linear/call-indirect.c
+++ b/validation/linear/call-indirect.c
@@ -6,7 +6,6 @@ int g1(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