annotate test/scope.c @ 550:df60b120675d

*** empty log message ***
author kono
date Tue, 03 Jan 2006 22:23:26 +0900
parents dbfd6e88e2c3
children 293f827ccfb2
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
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
29 static int
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
30 main0()
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
31 {
f3f2b7906d50 label extension
kono
parents:
diff changeset
32 int i,k;
f3f2b7906d50 label extension
kono
parents:
diff changeset
33 void *exit = &&exit0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
34 i = 3;k=10;
544
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
35
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
36 printf("#0035:%s,%s,%d\n",
544
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
37 __FILE__,
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
38 __FUNCTION__,
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
39 __LINE__
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
40 );
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
41
dbfd6e88e2c3 s-dandy compile OK
kono
parents: 491
diff changeset
42
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
43 for(int k=0;k<10;k++) {
f3f2b7906d50 label extension
kono
parents:
diff changeset
44 int i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
45 i = 4;
f3f2b7906d50 label extension
kono
parents:
diff changeset
46 if (({
f3f2b7906d50 label extension
kono
parents:
diff changeset
47 __label__ exit0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
48 int i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
49 f(&i,&&exit0);
f3f2b7906d50 label extension
kono
parents:
diff changeset
50 if (i==5)
f3f2b7906d50 label extension
kono
parents:
diff changeset
51 goto exit0;
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
52 printf("#0051:2nd inner %d %d %0x\n",i,k,&&exit1==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
53 exit0:
f3f2b7906d50 label extension
kono
parents:
diff changeset
54 i;
f3f2b7906d50 label extension
kono
parents:
diff changeset
55 })!=7) {
f3f2b7906d50 label extension
kono
parents:
diff changeset
56 goto exit1;
f3f2b7906d50 label extension
kono
parents:
diff changeset
57 } else
f3f2b7906d50 label extension
kono
parents:
diff changeset
58 goto *exit;
450
eaf9e2746c83 parallel assign for simple expr. (too complex solution)
kono
parents: 427
diff changeset
59 /* not reached */
eaf9e2746c83 parallel assign for simple expr. (too complex solution)
kono
parents: 427
diff changeset
60 i = ({ int k=3; k; });
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
61 exit1:
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
62 printf("#0061:inner %d %d %0x\n",i,k,&&exit1==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
63 }
f3f2b7906d50 label extension
kono
parents:
diff changeset
64 k++;
f3f2b7906d50 label extension
kono
parents:
diff changeset
65 exit0:
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
66 printf("#0065:outer %d %d %0x\n",i,k,&&exit0==exit);
363
f3f2b7906d50 label extension
kono
parents:
diff changeset
67 return 0;
f3f2b7906d50 label extension
kono
parents:
diff changeset
68 }
550
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
69
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
70 int
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
71 main()
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
72 {
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
73 main0();
df60b120675d *** empty log message ***
kono
parents: 544
diff changeset
74 }