diff test/inline.c @ 460:2859bb9d5fb3

volatile/const
author kono
date Thu, 02 Dec 2004 12:07:16 +0900
parents 9fc266d4010f
children 3d921f7a8e74
line wrap: on
line diff
--- a/test/inline.c	Thu Dec 02 02:50:45 2004 +0900
+++ b/test/inline.c	Thu Dec 02 12:07:16 2004 +0900
@@ -5,6 +5,29 @@
 static const char haa[] = "test";
 static inline const int f(int k);
 
+volatile const int i = 3;
+
+extern int printf(char *,...);
+int
+main0()
+{
+    volatile const int j = 3;
+    switch(i) {
+    case 1: printf("#0015:1\n"); break;
+    case 2: printf("#0016:2\n"); break;
+    case 3: printf("#0017:3\n"); break;
+    case 4: printf("#0018:4\n"); break;
+    }
+    switch(j) {
+    case 1: printf("#0021:1\n"); break;
+    case 2: printf("#0022:2\n"); break;
+    case 3: printf("#0023:3\n"); break;
+    case 4: printf("#0024:4\n"); break;
+    }
+    return 0;
+}
+
+
 extern int printf(char *,...);
 
 static inline const int f(int k)
@@ -21,7 +44,7 @@
 static
 inline int ins(int i,int j)
 {
-   printf("#0023:%d %d\n",i,j);
+   printf("#0046:%d %d\n",i,j);
    if (f(i)>j) return j;
    else return i;
 }
@@ -29,29 +52,29 @@
 static
 inline int ins1(int i,int j)
 {
-   printf("#0023:%d %d\n",i,j);
+   printf("#0054:%d %d\n",i,j);
    if (f(i)>j) return j;
    else return i;
 }
 
-inline int in2(int p,int i,int j)
+inline __attribute__((always_inline)) int in2(int p,int i,int j)
 {
     int k = 0,m;
     do {
 	k += 3;
     } while ( k < j);
-    printf("#0034: %d do %d\n",p,k);
+    printf("#0065: %d do %d\n",p,k);
 
     while (k < j) {
 	k -= 3;
     } while ( k < j);
-    printf("#0039: %d while %d\n",p,k);
+    printf("#0070: %d while %d\n",p,k);
 
     m = 0;
     for(k=0;k<j;k++) {
 	m += k;
     }
-    printf("#0045: %d for %d\n",p,m);
+    printf("#0076: %d for %d\n",p,m);
 
     switch(i) {
     case 1: k = 1;
@@ -64,13 +87,13 @@
 	break;
     default: k = 5;
     }
-    printf("#0058: %d switch %d\n",p,k);
+    printf("#0089: %d switch %d\n",p,k);
 
     for(k=0;k<j;k++) {
 	i += k;
 	if (k<3) continue;
     }
-    printf("#0064: %d for %d\n",p,i);
+    printf("#0095: %d for %d\n",p,i);
     goto hoge;
 hage:
     goto hage;
@@ -91,27 +114,27 @@
     // a = 10;
 
     k1 = in1(a,b);
-    printf("#0081:%d %d %d\n",a,b,k1);
+    printf("#0116:%d %d %d\n",a,b,k1);
     j1 = in1(k,j-6)+f(k1);
-    printf("#0083:%d %d %s\n",k1,j1,hoo);
+    printf("#0118:%d %d %s\n",k1,j1,hoo);
     k1 = &v-&x>0? &v-&x : &x-&v;
-    printf("#0085:v-x: %d\n",k1);
+    printf("#0120:v-x: %d\n",k1);
 
     k1 = ins(a,b);
     j1 = ins(k,j-6)+f(k1);
-    printf("#0089:%d %d %s\n",k1,j1,haa);
+    printf("#0124:%d %d %s\n",k1,j1,haa);
 
     k1 = ins(as,bs);
     j1 = ins(k,j-6)+f(k1);
-    printf("#0093:%d %d %s\n",k1,j1,haa);
+    printf("#0128:%d %d %s\n",k1,j1,haa);
 
     k1 = ins(v,x);
     j1 = ins(k,j-6)+f(v);
-    printf("#0097:%d %d %s\n",k1,j1,haa);
+    printf("#0132:%d %d %s\n",k1,j1,haa);
 
     k1 = fnp(v,x);
     j1 = ins1(k,j-6)+f(v);
-    printf("#0097:%d %d %s\n",k1,j1,haa);
+    printf("#0136:%d %d %s\n",k1,j1,haa);
 }
 
 void
@@ -123,17 +146,19 @@
     in2(4,2,j);
     in2(5,2,1);
     in2(6,0,2);
-    fnp3(6,0,2);
+    in2(8,j*3,in2(7,k+3,10-j));
+    fnp3(9,0,2);
 }
 
 int
-main()
+main(int ac,char *av[])
 {
      fnp = ins1;
      a0(5,6);
      a0(-9,6);
      fnp3 = in2;
      a1(9,10);
+     main0(ac,av);
      return 0;
 }