diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-29 10:52:17 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-12-21 01:53:52 +0100 |
| commit | eeacb2cb90b2a6275935bb61613383413a9d2779 (patch) | |
| tree | 52b2bb3147dc201fe15b2268c8ce4aded42b6cde /validation/linear/call-direct.c | |
| parent | fe71f6b3064072ba5a6b8531c76b531bbb3b963d (diff) | |
| download | sparse-dev-eeacb2cb90b2a6275935bb61613383413a9d2779.tar.gz | |
dereference of a function is a no-op
For the '*' operator and functions, the C standard says:
"If the operand points to a function, the result is a
function designator; ... If the operand has type
‘pointer to type’, the result has type ‘type’".
but also (C11 6.3.2.1p4):
"(except with 'sizeof' ...) a function designator with type
‘function returning type’ is converted to an expression
that has type ‘pointer to function returning type’".
This means that in dereferencement of a function-designator is
a no-op since the resulting expression is immediately back converted
to a pointer to the function.
The change effectively drop any dereferencement of function types
during their evaluation.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/linear/call-direct.c')
| -rw-r--r-- | validation/linear/call-direct.c | 1 |
1 files changed, 0 insertions, 1 deletions
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 |
