diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-03-18 16:30:18 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-03-20 00:52:28 +0100 |
commit | 0095a95a31bb0acd57ce91b55c53a5d95de775d2 (patch) | |
tree | 5a8e8bea9b578e8f9a3a34af33ba9f922bc32bb1 | |
parent | 0558317d0c7a2e20a6d82b7ef35357ec02e2ad38 (diff) | |
download | sparse-0095a95a31bb0acd57ce91b55c53a5d95de775d2.tar.gz |
add testcases for OP_UNREACH
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | validation/context-unreachable.c | 16 | ||||
-rw-r--r-- | validation/linear/builtin_unreachable0.c | 28 | ||||
-rw-r--r-- | validation/linear/builtin_unreachable1.c (renamed from validation/linear/builtin_unreachable.c) | 14 | ||||
-rw-r--r-- | validation/linear/noreturn-unreachable0.c | 23 |
4 files changed, 74 insertions, 7 deletions
diff --git a/validation/context-unreachable.c b/validation/context-unreachable.c new file mode 100644 index 00000000..3e330403 --- /dev/null +++ b/validation/context-unreachable.c @@ -0,0 +1,16 @@ +int fun(void); + +static void foo(void) +{ + __context__(1); + if (!fun()) { + __builtin_unreachable(); + return; + } + __context__(-1); +} + +/* + * check-name: context-unreachable + * check-known-to-fail + */ diff --git a/validation/linear/builtin_unreachable0.c b/validation/linear/builtin_unreachable0.c new file mode 100644 index 00000000..f9703079 --- /dev/null +++ b/validation/linear/builtin_unreachable0.c @@ -0,0 +1,28 @@ +int foo(int p) +{ + if (p == 3) + __builtin_unreachable(); + return p; +} + +/* + * check-name: builtin_unreachable0 + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-start +foo: +.L0: + <entry-point> + seteq.32 %r2 <- %arg1, $3 + cbr %r2, .L1, .L3 + +.L1: + unreachable + +.L3: + ret.32 %arg1 + + + * check-output-end + */ diff --git a/validation/linear/builtin_unreachable.c b/validation/linear/builtin_unreachable1.c index 4f13b892..4dedfaba 100644 --- a/validation/linear/builtin_unreachable.c +++ b/validation/linear/builtin_unreachable1.c @@ -1,15 +1,15 @@ -void function_that_never_returns(void); +void die(void); int foo(int c) { if (c) return 1; - function_that_never_returns(); + die(); __builtin_unreachable(); } /* - * check-name: __builtin_unreachable() + * check-name: builtin_unreachable1 * check-command: test-linearize -Wno-decl $file * * check-known-to-fail @@ -19,13 +19,13 @@ foo: <entry-point> cbr %arg1, .L3, .L2 -.L2: - call function_that_never_returns - unreach - .L3: ret.32 $1 +.L2: + call die + unreachable + * check-output-end */ diff --git a/validation/linear/noreturn-unreachable0.c b/validation/linear/noreturn-unreachable0.c new file mode 100644 index 00000000..47bd6aa3 --- /dev/null +++ b/validation/linear/noreturn-unreachable0.c @@ -0,0 +1,23 @@ +extern void die(void) __attribute__((noreturn)); + +int foo(void) +{ + die(); + return 0; +} + +/* + * check-name: noreturn-unreachable0 + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-start +foo: +.L0: + <entry-point> + call die + unreachable + + + * check-output-end + */ |