aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/tests2/101_cleanup.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinycc/tests/tests2/101_cleanup.c')
-rw-r--r--tinycc/tests/tests2/101_cleanup.c227
1 files changed, 0 insertions, 227 deletions
diff --git a/tinycc/tests/tests2/101_cleanup.c b/tinycc/tests/tests2/101_cleanup.c
deleted file mode 100644
index de5dca2..0000000
--- a/tinycc/tests/tests2/101_cleanup.c
+++ /dev/null
@@ -1,227 +0,0 @@
-extern int printf(const char*, ...);
-static int glob_i = 0;
-
-void incr_glob_i(int *i)
-{
- glob_i += *i;
-}
-
-#define INCR_GI { \
- int i __attribute__ ((__cleanup__(incr_glob_i))) = 1; \
- }
-
-#define INCR_GI0 INCR_GI INCR_GI INCR_GI INCR_GI
-#define INCR_GI1 INCR_GI0 INCR_GI0 INCR_GI0 INCR_GI0
-#define INCR_GI2 INCR_GI1 INCR_GI1 INCR_GI1 INCR_GI1
-#define INCR_GI3 INCR_GI2 INCR_GI2 INCR_GI2 INCR_GI2
-#define INCR_GI4 INCR_GI3 INCR_GI3 INCR_GI3 INCR_GI3
-#define INCR_GI5 INCR_GI4 INCR_GI4 INCR_GI4 INCR_GI4
-#define INCR_GI6 INCR_GI5 INCR_GI5 INCR_GI5 INCR_GI5
-#define INCR_GI7 INCR_GI6 INCR_GI6 INCR_GI6 INCR_GI6
-
-
-void check2(char **hum);
-
-void check(int *j)
-{
- char * __attribute__ ((cleanup(check2))) stop_that = "wololo";
- int chk = 0;
-
- {
- char * __attribute__ ((cleanup(check2))) stop_that = "plop";
-
- {
- non_plopage:
- printf("---- %d\n", chk);
- }
- if (!chk) {
- chk = 1;
- goto non_plopage;
- }
- }
-
- {
- char * __attribute__ ((cleanup(check2))) stop_that = "tata !";
-
- goto out;
- stop_that = "titi";
- }
- again:
- chk = 2;
- {
- char * __attribute__ ((cleanup(check2))) cascade1 = "1";
- {
- char * __attribute__ ((cleanup(check2))) cascade2 = "2";
- {
- char * __attribute__ ((cleanup(check2))) cascade3 = "3";
-
- goto out;
- cascade3 = "nope";
- }
- }
- }
- out:
- if (chk != 2)
- goto again;
- {
- {
- char * __attribute__ ((cleanup(check2))) out = "last goto out";
- ++chk;
- if (chk != 3)
- goto out;
- }
- }
- return;
-}
-
-void check_oh_i(char *oh_i)
-{
- printf("c: %c\n", *oh_i);
-}
-
-void goto_hell(double *f)
-{
- printf("oo: %f\n", *f);
-}
-
-char *test()
-{
- char *__attribute__ ((cleanup(check2))) str = "I don't think this should be print(but gcc got it wrong too)";
-
- return str;
-}
-
-void test_ret_subcall(char *that)
-{
- printf("should be print before\n");
-}
-
-void test_ret()
-{
- char *__attribute__ ((cleanup(check2))) that = "that";
- return test_ret_subcall(that);
-}
-
-void test_ret2()
-{
- char *__attribute__ ((cleanup(check2))) that = "-that";
- {
- char *__attribute__ ((cleanup(check2))) that = "this should appear only once";
- }
- {
- char *__attribute__ ((cleanup(check2))) that = "-that2";
- return;
- }
-}
-
-void test2(void) {
- int chk = 0;
-again:
- if (!chk) {
- char * __attribute__ ((cleanup(check2))) stop_that = "test2";
- chk++;
- goto again;
- }
-}
-
-int test3(void) {
- char * __attribute__ ((cleanup(check2))) stop_that = "three";
- int chk = 0;
-
- if (chk) {
- {
- outside:
- {
- char * __attribute__ ((cleanup(check2))) stop_that = "two";
- printf("---- %d\n", chk);
- }
- }
- }
- if (!chk)
- {
- char * __attribute__ ((cleanup(check2))) stop_that = "one";
-
- if (!chk) {
- chk = 1;
- goto outside;
- }
- }
- return 0;
-}
-
-void cl(int *ip)
-{
- printf("%d\n", *ip);
-}
-
-void loop_cleanups(void)
-{
- __attribute__((cleanup(cl))) int l = 1000;
-
- printf("-- loop 0 --\n");
- for ( __attribute__((cleanup(cl))) int i = 0; i < 10; ++i) {
- __attribute__((cleanup(cl))) int j = 100;
- }
-
- printf("-- loop 1 --\n");
- for (__attribute__((cleanup(cl))) int i = 0; i < 10; ++i) {
- __attribute__((cleanup(cl))) int j = 200;
- continue;
- }
-
- printf("-- loop 2 --\n");
- for (__attribute__((cleanup(cl))) int i = 0; i < 10; ++i) {
- __attribute__((cleanup(cl))) int j = 300;
- break;
- }
-
- printf("-- loop 3 --\n");
- for (int i = 0; i < 2; ++i) {
- __attribute__((cleanup(cl))) int j = 400;
- switch (i) {
- case 0:
- continue;
- default:
- {
- __attribute__((cleanup(cl))) int jj = 500;
- break;
- }
- }
- }
- printf("after break\n");
-}
-
-int main()
-{
- int i __attribute__ ((__cleanup__(check))) = 0, not_i;
- int chk = 0;
- (void)not_i;
-
- {
- __attribute__ ((__cleanup__(check_oh_i))) char oh_i = 'o', o = 'a';
- }
-
- INCR_GI7;
- printf("glob_i: %d\n", glob_i);
- naaaaaaaa:
- if (!chk) {
- __attribute__ ((__cleanup__(check_oh_i))) char oh_i = 'f';
- double __attribute__ ((__cleanup__(goto_hell))) f = 2.6;
-
- chk = 1;
- goto naaaaaaaa;
- }
- i = 105;
- printf("because what if free was call inside cleanup function %s\n", test());
- test_ret();
- test_ret2();
- test2();
- test3();
- loop_cleanups();
- return i;
-}
-
-void check2(char **hum)
-{
- printf("str: %s\n", *hum);
-}