diff options
Diffstat (limited to 'usr/src/tools/smatch/src/validation/linear/degen-function.c')
| -rw-r--r-- | usr/src/tools/smatch/src/validation/linear/degen-function.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/usr/src/tools/smatch/src/validation/linear/degen-function.c b/usr/src/tools/smatch/src/validation/linear/degen-function.c new file mode 100644 index 0000000000..e0b05e5f46 --- /dev/null +++ b/usr/src/tools/smatch/src/validation/linear/degen-function.c @@ -0,0 +1,52 @@ +extern int fun(int); + +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 + * check-command: test-linearize -m64 -Wno-decl -fdump-ir=linearize $file + * check-assert: sizeof(void *) == 8 + * + * check-output-start +fa: +.L0: + <entry-point> + symaddr.64 %r1 <- fun + phisrc.64 %phi1(return) <- %r1 + br .L1 + +.L1: + phi.64 %r2 <- %phi1(return) + ret.64 %r2 + + +f0: +.L2: + <entry-point> + symaddr.64 %r3 <- fun + phisrc.64 %phi2(return) <- %r3 + br .L3 + +.L3: + phi.64 %r4 <- %phi2(return) + ret.64 %r4 + + +f1: +.L4: + <entry-point> + symaddr.64 %r5 <- fun + phisrc.64 %phi3(return) <- %r5 + br .L5 + +.L5: + phi.64 %r6 <- %phi3(return) + ret.64 %r6 + + + * check-output-end + */ |
