diff options
| -rw-r--r-- | validation/Waddress-weak.c | 2 | ||||
| -rw-r--r-- | validation/Waddress.c | 4 | ||||
| -rw-r--r-- | validation/linear/degen-function.c | 13 |
3 files changed, 19 insertions, 0 deletions
diff --git a/validation/Waddress-weak.c b/validation/Waddress-weak.c index 1fe8d33c..ad2cb13a 100644 --- a/validation/Waddress-weak.c +++ b/validation/Waddress-weak.c @@ -9,11 +9,13 @@ int test_addr_weak_fun(void) if ( &arr) return 1; if ( fun) return 1; if ( &fun) return 1; + if ( *fun) return 1; if (!&var) return 0; if (! arr) return 0; if (!&arr) return 0; if (! fun) return 0; if (!&fun) return 0; + if (!*fun) return 0; return -1; } diff --git a/validation/Waddress.c b/validation/Waddress.c index 10556c3a..441cdb1c 100644 --- a/validation/Waddress.c +++ b/validation/Waddress.c @@ -15,6 +15,7 @@ lab: if (&arr) return 1; if (fun) return 1; if (&fun) return 1; + if (*fun) return 1; if (&var) return 1; if (&arg) return 1; if (&&lab) return 1; @@ -35,6 +36,7 @@ lab: if (!&arr) return 0; if (!fun) return 0; if (!&fun) return 0; + if (!*fun) return 0; if (!&var) return 0; if (!&arg) return 0; if (!&&lab) return 0; @@ -62,6 +64,8 @@ lab: if (0 == fun) return 0; if (&fun == 0) return 0; if (0 == &fun) return 0; + if (*fun == 0) return 0; + if (0 == *fun) return 0; if (&var == 0) return 0; if (0 == &var) return 0; if (&arg == 0) return 0; diff --git a/validation/linear/degen-function.c b/validation/linear/degen-function.c index 6dd3123b..4fb2d564 100644 --- a/validation/linear/degen-function.c +++ b/validation/linear/degen-function.c @@ -4,6 +4,7 @@ typedef int (*fun_t)(int); fun_t fa(void) { return &fun; } fun_t f0(void) { return fun; } +fun_t f1(void) { return *fun; } /* * check-name: degen-function @@ -34,5 +35,17 @@ f0: ret.64 %r3 +f1: +.L4: + <entry-point> + symaddr.64 %r5 <- fun + phisrc.64 %phi3(return) <- %r5 + br .L5 + +.L5: + phi.64 %r6 <- %phi3(return) + ret.64 %r5 + + * check-output-end */ |
