annotate test/scope.c @ 602:429ec87e03e7

*** empty log message ***
author kono
date Fri, 27 Jan 2006 14:35:38 +0900
parents aad312f61654
children 5313ed059cee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
1 /*
f3f2b7906d50 label extension
kono
parents:
diff changeset
2
f3f2b7906d50 label extension
kono
parents:
diff changeset
3 gcc -g -std=gnu99 test/scope.c
f3f2b7906d50 label extension
kono
parents:
diff changeset
4
f3f2b7906d50 label extension
kono
parents:
diff changeset
5 */
f3f2b7906d50 label extension
kono
parents:
diff changeset
6
f3f2b7906d50 label extension
kono
parents:
diff changeset
7 #include <stdio.h>
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
8 // #define INLINE inline
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
9 #ifdef INLINE
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
10 #else
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
11 #define INLINE
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
12 #endif
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
13
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
14
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
15 INLINE
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
16 void
f3f2b7906d50 label extension
kono
parents:
diff changeset
17 f(int *i,void *label)
f3f2b7906d50 label extension
kono
parents:
diff changeset
18 {
f3f2b7906d50 label extension
kono
parents:
diff changeset
19 static int k = 3;
f3f2b7906d50 label extension
kono
parents:
diff changeset
20 {
f3f2b7906d50 label extension
kono
parents:
diff changeset
21 static int k = 3;
f3f2b7906d50 label extension
kono
parents:
diff changeset
22 *i = k++;
f3f2b7906d50 label extension
kono
parents:
diff changeset
23 }
f3f2b7906d50 label extension
kono
parents:
diff changeset
24 k--;
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
25 printf("#0024:f %d\n",k);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
26 }
f3f2b7906d50 label extension
kono
parents:
diff changeset
27
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
28 INLINE
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
29 int
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
30 g(int m,int n)
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
31 {
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
32 int k=m,i=n-3;
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
33 if (m==2) return 0;
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
34 if (k==2||k==3||k==i) {
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
35 if (k==2||k==3||k==4) {
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
36 printf("#0035:k,i=%d,%d\n",k,i);
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
37 }
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
38 }
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
39 return m+n;
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
40 }
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
41
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
42 INLINE
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
43 static int
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
44 main0()
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
45 {
f3f2b7906d50 label extension
kono
parents:
diff changeset
46 int i,k;
f3f2b7906d50 label extension
kono
parents:
diff changeset
47 void *exit = &&exit0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
48 i = 3;k=10;
544
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
49
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
50 printf("#0049:%s,%s,%d\n",
544
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
51 __FILE__,
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
52 __FUNCTION__,
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
53 __LINE__
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
54 );
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
55
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
56
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
57 for(int k=0;k<10;k++) {
f3f2b7906d50 label extension
kono
parents:
diff changeset
58 int i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
59 i = 4;
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
60 if (k==2||k==3||k==i) {
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
61 if (k==2||k==3||k==4) {
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
62 const int m=g(k,i);
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
63 printf("#0062:m=%d\n",m);
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
64 }
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
65 }
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
66 if (({
f3f2b7906d50 label extension
kono
parents:
diff changeset
67 __label__ exit0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
68 int i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
69 f(&i,&&exit0);
f3f2b7906d50 label extension
kono
parents:
diff changeset
70 if (i==5)
f3f2b7906d50 label extension
kono
parents:
diff changeset
71 goto exit0;
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
72 printf("#0071:2nd inner %d %d %0x\n",i,k,&&exit1==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
73 exit0:
f3f2b7906d50 label extension
kono
parents:
diff changeset
74 i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
75 })!=7) {
f3f2b7906d50 label extension
kono
parents:
diff changeset
76 goto exit1;
f3f2b7906d50 label extension
kono
parents:
diff changeset
77 } else
f3f2b7906d50 label extension
kono
parents:
diff changeset
78 goto *exit;
450
eaf9e2746c83 parallel assign for simple expr. (too complex solution)
kono
parents: 427
diff changeset
79 /* not reached */
eaf9e2746c83 parallel assign for simple expr. (too complex solution)
kono
parents: 427
diff changeset
80 i = ({ int k=3; k; });
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
81 exit1:
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
82 printf("#0081:inner %d %d %0x\n",i,k,&&exit1==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
83 }
f3f2b7906d50 label extension
kono
parents:
diff changeset
84 k++;
f3f2b7906d50 label extension
kono
parents:
diff changeset
85 exit0:
553
293f827ccfb2 Linux kernel source compiled.
kono
parents: 550
diff changeset
86 printf("#0085:outer %d %d %0x\n",i,k,&&exit0==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
87 return 0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
88 }
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
89
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
90 int
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
91 main()
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
92 {
574
aad312f61654 remove too much inmode.
kono
parents: 553
diff changeset
93 return main0();
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
94 }