aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-11-29 10:52:17 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-12-21 01:53:52 +0100
commiteeacb2cb90b2a6275935bb61613383413a9d2779 (patch)
tree52b2bb3147dc201fe15b2268c8ce4aded42b6cde /validation/linear
parentfe71f6b3064072ba5a6b8531c76b531bbb3b963d (diff)
downloadsparse-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')
-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
4 files changed, 0 insertions, 4 deletions
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