scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 1#include <setjmp.h>
 2#include <stdio.h>
 3
 4/*
 5output:
 6test 1
 7i = 1, v = 2
 8test 2
 9i = 2, v = 3
10end:
11*/
12
13jmp_buf recover;
14
15void
16test(char *s, int val)
17{
18	puts(s);
19	longjmp(recover, val);
20}
21
22int
23main()
24{
25	static int i;
26#ifdef __QBE__
27	// We cannot implement proper volatile with qbe
28	static volatile int v;
29#else
30	auto volatile int v;
31#endif
32
33	i = 0;
34	v = 1;
35	if (!setjmp(recover)) {
36		i = 1;
37		v = 2;
38		test("test 1", 1);
39	}
40	printf("i = %d, v = %d\n", i, v);
41
42	if (!setjmp(recover)) {
43		i = 2;
44		v = 3;
45		test("test 2", 0);
46	}
47	printf("i = %d, v = %d\n", i, v);
48
49	return 0;
50}