changeset 27:f9b1a53df341

implemented indirect sibcall for ppc.
author kent@teto.cr.ie.u-ryukyu.ac.jp
date Tue, 10 Nov 2009 16:34:29 +0900
parents b388631e4738
children f2ea7e07d030
files CbC-examples/code_segment_pointer_check/code_segment_check.cbc CbC-examples/code_segment_pointer_check/code_segment_pointer_check.cbc CbC-examples/code_segment_pointer_check/code_segment_pointer_check2.cbc CbC-examples/code_segment_pointer_check/code_segment_pointer_check2.h CbC-examples/quicksort/Makefile CbC-examples/test05.c CbC-examples/test_csp1.c CbC-scripts/make_headers.py CbC-scripts/make_headers.py2 configure gcc/config/rs6000/rs6000.md
diffstat 11 files changed, 1364 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/code_segment_pointer_check/code_segment_check.cbc	Tue Nov 10 16:34:29 2009 +0900
@@ -0,0 +1,57 @@
+#include<stdio.h>
+#include<stdlib.h>
+#define dprint(f, args...) \
+	printf("in %s env=%p: "f, __FUNCTION__, __builtin_frame_address(1), ## args)
+
+/*
+ * コードセグメント間の遷移をテスト
+ *
+ */
+
+__code end (int a);
+__code cs0a (int a, double b, int c, float d, char e);
+__code cs1a (char e, int a, double b, int c, float d);
+__code cs2a (float d, char e, int a, double b, int c);
+__code cs3a (int c, float d, char e, int a, double b);
+__code cs4a (double b, int c, float d, char e, int a);
+int main ();
+
+__code end(int a) {
+	dprint("exit code is %d\n",a);
+	exit(a);
+}
+
+int i=0;
+__code cs0a(int a, double b, int c, float d, char e) {
+	if ( i++ >= 10 ) {
+		dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+		goto end((int)(a*b*c*d*e));
+	}
+	goto cs1a(e, a, b, c, d);
+}
+__code cs1a(char e, int a, double b, int c, float d) {
+	//dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+	goto cs2a(d, e, a, b, c);
+}
+__code cs2a(float d, char e, int a, double b, int c) {
+	//dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+	goto cs3a(c, d, e, a, b);
+}
+__code cs3a(int c, float d, char e, int a, double b) {
+	//dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+	goto cs4a(b, c, d, e, a);
+}
+__code cs4a(double b, int c, float d, char e, int a) {
+	//dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+	goto cs0a(a, b, c, d, e);
+}
+
+__code starter(int a, double b, int c, float d, char e) {
+	dprint("exit code is expected to %d\n",(int)(a*b*c*d*e));
+	dprint("int a=%d,double b=%2.3lf,int c=%d,float d=%2.3f,char e=%d\n", a, b, c, d, e);
+	goto cs0a(a,b,c,d,e);
+}
+int main() {
+	goto starter(11, 22.2, 33, 44.44, 55);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/code_segment_pointer_check/code_segment_pointer_check.cbc	Tue Nov 10 16:34:29 2009 +0900
@@ -0,0 +1,120 @@
+#include<stdio.h>
+#include<stdlib.h>
+#define dprint(f, args...) \
+	printf("in %s env=%p: "f, __FUNCTION__, __builtin_frame_address(0), ## args)
+
+/*
+ * コードセグメント間の遷移で
+ *
+ *
+ *
+ */
+
+__code schedule ();
+__code cs0a ();
+__code cs1a (int a);
+__code cs2a (int a, double b);
+__code cs3a (int a, double b, int c);
+__code cs4a (int a, double b, int c, float d);
+__code cs0b ();
+__code cs1b (int a);
+__code cs2b (int a, double b);
+__code cs3b (int a, double b, int c);
+__code cs4b (int a, double b, int c, float d);
+
+/* defined in file code_segment_pointer_check.cbc at offset 1649  */
+int main ();
+
+__code end(int a) {
+	dprint("exit with code %d\n",a);
+	exit(a);
+}
+
+__code (*cs0) ();
+__code (*cs1) (int);
+__code (*cs2) (int, double);
+__code (*cs3) (int, double, int);
+__code (*cs4) (int, double, int, float);
+int i=0;
+__code schedule() {
+	dprint("i=%d\n",i);
+	if ( i>=100 ) {
+		goto end(0);
+	}
+	switch (i++%5) {
+	case 0:
+		goto cs0();
+	case 1:
+		goto cs1(i);
+	case 2:
+		goto cs2(i, i*1.3);
+	case 3:
+		goto cs3(i, i*1.3, 20*i);
+	case 4:
+		goto cs4(i, i*1.3, 20*i, i*0.8);
+	default:
+		exit(0);
+	}
+	dprint("code unreachable!\n");
+}
+
+__code cs0a() {
+	dprint("no args\n");
+	cs0 = cs0b;
+	goto schedule();
+}
+__code cs1a(int a) {
+	dprint("int a=%d\n", a);
+	cs1 = cs1b;
+	goto schedule();
+}
+__code cs2a(int a, double b) {
+	dprint("int a=%d, double b=%lf\n", a, b);
+	cs2 = cs2b;
+	goto schedule();
+}
+__code cs3a(int a, double b, int c) {
+	dprint("int a=%d, double b=%lf, int c=%d\n", a, b, c);
+	cs3 = cs3b;
+	goto schedule();
+}
+__code cs4a(int a, double b, int c, float d) {
+	dprint("int a=%d, double b=%lf, int c=%d, float d=%f\n", a, b, c, d);
+	cs4 = cs4b;
+	goto schedule();
+}
+
+__code cs0b() {
+	dprint("no args\n");
+	cs0 = cs0a;
+	goto schedule();
+}
+__code cs1b(int a) {
+	dprint("int a=%d\n", a);
+	cs1 = cs1a;
+	goto schedule();
+}
+__code cs2b(int a, double b) {
+	dprint("int a=%d, double b=%lf\n", a, b);
+	cs2 = cs2a;
+	goto schedule();
+}
+__code cs3b(int a, double b, int c) {
+	dprint("int a=%d, double b=%lf, int c=%d\n", a, b, c);
+	cs3 = cs3a;
+	goto schedule();
+}
+__code cs4b(int a, double b, int c, float d) {
+	dprint("int a=%d, double b=%lf, int c=%d, float d=%f\n", a, b, c, d);
+	cs4 = cs4a;
+	goto schedule();
+}
+
+int main() {
+	cs0 = cs0a;
+	cs1 = cs1a;
+	cs2 = cs2a;
+	cs3 = cs3a;
+	cs4 = cs4a;
+	goto schedule();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/code_segment_pointer_check/code_segment_pointer_check2.cbc	Tue Nov 10 16:34:29 2009 +0900
@@ -0,0 +1,655 @@
+#include<stdio.h>
+#include<stdlib.h>
+#include"code_segment_pointer_check2.h"
+#define dprint(f, args...) \
+	printf("in %s env=%p: "f, __FUNCTION__, __builtin_frame_address(0), ## args)
+
+/*
+ * コードセグメント間の遷移をチェック
+ *
+ */
+
+typedef __code (*CODEP)(int,int,int,int,int,int);
+extern CODEP csps[];
+CODEP csps[] = {
+	//cs0,cs1
+	cs0,cs1,cs2,cs3,cs4,cs5,cs6,cs7,cs8,cs9,
+	cs10,cs11,cs12,cs13,cs14,cs15,cs16,cs17,cs18,cs19,
+	cs20,cs21,cs22,cs23,cs24,cs25,cs26,cs27,cs28,cs29,
+	cs30,cs31,cs32,cs33,cs34,cs35,cs36,cs37,cs38,cs39,
+	cs40,cs41,cs42,cs43,cs44,cs45,cs46,cs47,cs48,cs49,
+	cs50,cs51,cs52,cs53,cs54,cs55,cs56,cs57,cs58,cs59,
+	cs60,cs61,cs62,cs63,cs64,cs65,cs66,cs67,cs68,cs69,
+	cs70,cs71,cs72,cs73,cs74,cs75,cs76,cs77,cs78,cs79,
+	cs80,cs81,cs82,cs83,cs84,cs85,cs86,cs87,cs88,cs89,
+	cs90,cs91,cs92,cs93,cs94,cs95,cs96,cs97,cs98,cs99,
+	cs100,cs101,cs102,cs103,cs104,cs105,cs106,cs107,cs108,cs109,
+	cs110,cs111,cs112,cs113,cs114,cs115,cs116,cs117,cs118,cs119
+};
+
+__code end(int a, int b, int c, int d, int e) {
+	dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	exit(a);
+}
+
+__code schedule(int i, int a, int b, int c, int d, int e) {
+	//CODEP p;
+	//p = csps[i%120];
+
+	if ( i>=1000 ) {
+		goto end(a, b, c, d, e);
+	}
+
+	dprint("i=%d\n", i);
+	goto csps[i%120](i+1, a, b, c, d, e);
+
+	dprint("code unreachable!\n");
+}
+
+int main() {
+	goto schedule(0, 11,22,33,44,55);
+}
+
+
+
+/* created by script make_permutations.py.  */
+
+__code cs0(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,c,d,e);
+}
+
+__code cs1(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,c,d,e);
+}
+
+__code cs2(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,a,d,e);
+}
+
+__code cs3(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,d,a,e);
+}
+
+__code cs4(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,d,e,a);
+}
+
+__code cs5(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,b,d,e);
+}
+
+__code cs6(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,b,d,e);
+}
+
+__code cs7(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,a,d,e);
+}
+
+__code cs8(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,d,a,e);
+}
+
+__code cs9(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,d,e,a);
+}
+
+__code cs10(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,d,b,e);
+}
+
+__code cs11(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,d,b,e);
+}
+
+__code cs12(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,a,b,e);
+}
+
+__code cs13(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,b,a,e);
+}
+
+__code cs14(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,b,e,a);
+}
+
+__code cs15(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,d,e,b);
+}
+
+__code cs16(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,d,e,b);
+}
+
+__code cs17(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,a,e,b);
+}
+
+__code cs18(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,e,a,b);
+}
+
+__code cs19(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,d,e,b,a);
+}
+
+__code cs20(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,d,c,e);
+}
+
+__code cs21(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,d,c,e);
+}
+
+__code cs22(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,a,c,e);
+}
+
+__code cs23(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,c,a,e);
+}
+
+__code cs24(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,c,e,a);
+}
+
+__code cs25(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,b,c,e);
+}
+
+__code cs26(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,b,c,e);
+}
+
+__code cs27(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,a,c,e);
+}
+
+__code cs28(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,c,a,e);
+}
+
+__code cs29(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,c,e,a);
+}
+
+__code cs30(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,c,b,e);
+}
+
+__code cs31(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,c,b,e);
+}
+
+__code cs32(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,a,b,e);
+}
+
+__code cs33(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,b,a,e);
+}
+
+__code cs34(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,b,e,a);
+}
+
+__code cs35(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,c,e,b);
+}
+
+__code cs36(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,c,e,b);
+}
+
+__code cs37(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,a,e,b);
+}
+
+__code cs38(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,e,a,b);
+}
+
+__code cs39(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,c,e,b,a);
+}
+
+__code cs40(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,d,e,c);
+}
+
+__code cs41(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,d,e,c);
+}
+
+__code cs42(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,a,e,c);
+}
+
+__code cs43(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,e,a,c);
+}
+
+__code cs44(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,d,e,c,a);
+}
+
+__code cs45(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,b,e,c);
+}
+
+__code cs46(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,b,e,c);
+}
+
+__code cs47(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,a,e,c);
+}
+
+__code cs48(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,e,a,c);
+}
+
+__code cs49(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,b,e,c,a);
+}
+
+__code cs50(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,e,b,c);
+}
+
+__code cs51(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,e,b,c);
+}
+
+__code cs52(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,a,b,c);
+}
+
+__code cs53(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,b,a,c);
+}
+
+__code cs54(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,b,c,a);
+}
+
+__code cs55(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,d,e,c,b);
+}
+
+__code cs56(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,a,e,c,b);
+}
+
+__code cs57(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,a,c,b);
+}
+
+__code cs58(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,c,a,b);
+}
+
+__code cs59(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, d,e,c,b,a);
+}
+
+__code cs60(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,c,e,d);
+}
+
+__code cs61(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,c,e,d);
+}
+
+__code cs62(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,a,e,d);
+}
+
+__code cs63(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,e,a,d);
+}
+
+__code cs64(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,c,e,d,a);
+}
+
+__code cs65(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,b,e,d);
+}
+
+__code cs66(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,b,e,d);
+}
+
+__code cs67(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,a,e,d);
+}
+
+__code cs68(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,e,a,d);
+}
+
+__code cs69(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,b,e,d,a);
+}
+
+__code cs70(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,e,b,d);
+}
+
+__code cs71(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,e,b,d);
+}
+
+__code cs72(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,a,b,d);
+}
+
+__code cs73(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,b,a,d);
+}
+
+__code cs74(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,b,d,a);
+}
+
+__code cs75(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,c,e,d,b);
+}
+
+__code cs76(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,a,e,d,b);
+}
+
+__code cs77(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,a,d,b);
+}
+
+__code cs78(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,d,a,b);
+}
+
+__code cs79(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, c,e,d,b,a);
+}
+
+__code cs80(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,e,c,d);
+}
+
+__code cs81(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,e,c,d);
+}
+
+__code cs82(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,a,c,d);
+}
+
+__code cs83(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,c,a,d);
+}
+
+__code cs84(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,c,d,a);
+}
+
+__code cs85(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,b,c,d);
+}
+
+__code cs86(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,b,c,d);
+}
+
+__code cs87(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,a,c,d);
+}
+
+__code cs88(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,c,a,d);
+}
+
+__code cs89(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,c,d,a);
+}
+
+__code cs90(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,c,b,d);
+}
+
+__code cs91(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,c,b,d);
+}
+
+__code cs92(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,a,b,d);
+}
+
+__code cs93(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,b,a,d);
+}
+
+__code cs94(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,b,d,a);
+}
+
+__code cs95(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,c,d,b);
+}
+
+__code cs96(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,c,d,b);
+}
+
+__code cs97(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,a,d,b);
+}
+
+__code cs98(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,d,a,b);
+}
+
+__code cs99(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,c,d,b,a);
+}
+
+__code cs100(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,b,e,d,c);
+}
+
+__code cs101(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,a,e,d,c);
+}
+
+__code cs102(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,a,d,c);
+}
+
+__code cs103(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,d,a,c);
+}
+
+__code cs104(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, b,e,d,c,a);
+}
+
+__code cs105(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,b,d,c);
+}
+
+__code cs106(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,b,d,c);
+}
+
+__code cs107(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,a,d,c);
+}
+
+__code cs108(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,d,a,c);
+}
+
+__code cs109(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,b,d,c,a);
+}
+
+__code cs110(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,d,b,c);
+}
+
+__code cs111(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,d,b,c);
+}
+
+__code cs112(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,a,b,c);
+}
+
+__code cs113(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,b,a,c);
+}
+
+__code cs114(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,b,c,a);
+}
+
+__code cs115(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, a,e,d,c,b);
+}
+
+__code cs116(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,a,d,c,b);
+}
+
+__code cs117(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,a,c,b);
+}
+
+__code cs118(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,c,a,b);
+}
+
+__code cs119(int i, int a, int b, int c, int d, int e) {
+	//dprint("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
+	goto schedule(i, e,d,c,b,a);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/code_segment_pointer_check/code_segment_pointer_check2.h	Tue Nov 10 16:34:29 2009 +0900
@@ -0,0 +1,369 @@
+/* defined in file code_segment_pointer_check2.cbc at offset 987  */
+__code end (int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1102  */
+__code schedule (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1345  */
+int main ();
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1398  */
+__code cs0 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1542  */
+__code cs1 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1686  */
+__code cs2 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1830  */
+__code cs3 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 1974  */
+__code cs4 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2118  */
+__code cs5 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2262  */
+__code cs6 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2406  */
+__code cs7 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2550  */
+__code cs8 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2694  */
+__code cs9 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2838  */
+__code cs10 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 2983  */
+__code cs11 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3128  */
+__code cs12 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3273  */
+__code cs13 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3418  */
+__code cs14 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3563  */
+__code cs15 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3708  */
+__code cs16 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3853  */
+__code cs17 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 3998  */
+__code cs18 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4143  */
+__code cs19 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4288  */
+__code cs20 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4433  */
+__code cs21 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4578  */
+__code cs22 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4723  */
+__code cs23 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 4868  */
+__code cs24 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5013  */
+__code cs25 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5158  */
+__code cs26 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5303  */
+__code cs27 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5448  */
+__code cs28 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5593  */
+__code cs29 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5738  */
+__code cs30 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 5883  */
+__code cs31 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6028  */
+__code cs32 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6173  */
+__code cs33 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6318  */
+__code cs34 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6463  */
+__code cs35 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6608  */
+__code cs36 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6753  */
+__code cs37 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 6898  */
+__code cs38 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7043  */
+__code cs39 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7188  */
+__code cs40 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7333  */
+__code cs41 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7478  */
+__code cs42 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7623  */
+__code cs43 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7768  */
+__code cs44 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 7913  */
+__code cs45 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8058  */
+__code cs46 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8203  */
+__code cs47 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8348  */
+__code cs48 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8493  */
+__code cs49 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8638  */
+__code cs50 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8783  */
+__code cs51 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 8928  */
+__code cs52 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9073  */
+__code cs53 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9218  */
+__code cs54 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9363  */
+__code cs55 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9508  */
+__code cs56 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9653  */
+__code cs57 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9798  */
+__code cs58 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 9943  */
+__code cs59 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10088  */
+__code cs60 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10233  */
+__code cs61 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10378  */
+__code cs62 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10523  */
+__code cs63 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10668  */
+__code cs64 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10813  */
+__code cs65 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 10958  */
+__code cs66 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11103  */
+__code cs67 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11248  */
+__code cs68 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11393  */
+__code cs69 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11538  */
+__code cs70 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11683  */
+__code cs71 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11828  */
+__code cs72 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 11973  */
+__code cs73 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12118  */
+__code cs74 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12263  */
+__code cs75 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12408  */
+__code cs76 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12553  */
+__code cs77 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12698  */
+__code cs78 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12843  */
+__code cs79 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 12988  */
+__code cs80 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13133  */
+__code cs81 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13278  */
+__code cs82 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13423  */
+__code cs83 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13568  */
+__code cs84 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13713  */
+__code cs85 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 13858  */
+__code cs86 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14003  */
+__code cs87 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14148  */
+__code cs88 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14293  */
+__code cs89 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14438  */
+__code cs90 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14583  */
+__code cs91 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14728  */
+__code cs92 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 14873  */
+__code cs93 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15018  */
+__code cs94 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15163  */
+__code cs95 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15308  */
+__code cs96 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15453  */
+__code cs97 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15598  */
+__code cs98 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15743  */
+__code cs99 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 15888  */
+__code cs100 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16034  */
+__code cs101 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16180  */
+__code cs102 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16326  */
+__code cs103 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16472  */
+__code cs104 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16618  */
+__code cs105 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16764  */
+__code cs106 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 16910  */
+__code cs107 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17056  */
+__code cs108 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17202  */
+__code cs109 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17348  */
+__code cs110 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17494  */
+__code cs111 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17640  */
+__code cs112 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17786  */
+__code cs113 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 17932  */
+__code cs114 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 18078  */
+__code cs115 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 18224  */
+__code cs116 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 18370  */
+__code cs117 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 18516  */
+__code cs118 (int i, int a, int b, int c, int d, int e);
+
+/* defined in file code_segment_pointer_check2.cbc at offset 18662  */
+__code cs119 (int i, int a, int b, int c, int d, int e);
+
--- a/CbC-examples/quicksort/Makefile	Thu Oct 29 18:19:02 2009 +0900
+++ b/CbC-examples/quicksort/Makefile	Tue Nov 10 16:34:29 2009 +0900
@@ -1,12 +1,10 @@
 
-#CbCC=../../../build_cbc44/INSTALL_DIR/bin/gcc
-CbCC=../../../build_cbc44_fast/INSTALL_DIR/bin/gcc
+CbCC=../../../build_gcc/INSTALL_DIR/bin/gcc
 
 #CC=gcc
-#CC=../../../build_cbc44/INSTALL_DIR/bin/gcc
-CC=../../../build_cbc44_fast/INSTALL_DIR/bin/gcc
+CC=../../../build_gcc/INSTALL_DIR/bin/gcc
 
-HEADERMAKER=../../CbC-scripts/make_headers.py
+HEADERMAKER=../../CbC-scripts/make_headers.py2
 
 # fastcall版では-O0,-O2は動作確認、-O3以上はだめ
 CFLAGS=-g -O2 -fomit-frame-pointer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CbC-examples/test05.c	Tue Nov 10 16:34:29 2009 +0900
@@ -0,0 +1,58 @@
+//#include<stdio.h>
+#define dprint(f, args...) \
+    printf("in %s: "f, __FUNCTION__, ## args)
+
+__code caller (int a);
+void f01 (int a);
+void f02 (int a, float b);
+__code cs01 (int a);
+__code cs02 (int a, float b);
+int main ();
+
+
+int g=0;
+void (*funcp)(int);
+__code (*csp)(int);
+
+__code caller(int a) {
+    f01(a+2);
+    f02(a+3, 13.2);
+    funcp(a+4);
+    goto csp(a+4);
+    dprint("\n");
+}
+
+__code end() {
+    dprint("\n");
+    exit(0);
+}
+
+void f01(int a) {
+    dprint("%d\n", a);
+    g += a;
+    return ;
+}
+void f02(int a, float b) {
+    dprint("%d, %f\n", a, b);
+    g -= a;
+    g += b*0.3;
+    return ;
+}
+__code cs01(int a) {
+    dprint("%d\n", a);
+    g += a;
+    goto end() ;
+}
+__code cs02(int a, float b) {
+    dprint("%d, %f\n", a, b);
+    g -= a;
+    g += b*0.3;
+    goto end() ;
+}
+
+int main() {
+    funcp = f01;
+    csp = cs01;
+    caller(10);
+}
+
--- a/CbC-examples/test_csp1.c	Thu Oct 29 18:19:02 2009 +0900
+++ b/CbC-examples/test_csp1.c	Tue Nov 10 16:34:29 2009 +0900
@@ -3,6 +3,30 @@
 
 //static __code (*csp)(int, int, int, int);
 
+__code cs_end (int a);
+__code cs0 (int a, int b, int c, int d);
+void* freturn ();
+__code cs_goto (int a, int b, int c, int d);
+int function (double a, float b, int c);
+int main (int argc, char **argv);
+
+
+__code cs_goto(int a, int b, int c, int d){
+	__code (*csp)(int, int, int, int);
+	csp = freturn();
+	printf("csp = %x.\n", csp);
+
+	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g);
+	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d);
+	//printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16));
+	//printf("cs_goto : cs0(a, b, c, d)\n");
+#ifdef INDIRECT
+	goto csp(b+a, d+b, a+c, c+d);
+#else
+	goto cs0(b+a, d+b, a+c, c+d);
+#endif
+}
+
 __code cs_end(int a){
 	printf("cs_exit : a=%d.\n", a);
 	exit(a);
@@ -19,17 +43,6 @@
 void* freturn(){
 	return cs0;
 }
-__code cs_goto(int a, int b, int c, int d){
-	__code (*csp)(int, int, int, int);
-	csp = freturn();
-	printf("csp = %x.\n", csp);
-
-	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g);
-	//printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d);
-	//printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16));
-	//printf("cs_goto : cs0(a, b, c, d)\n");
-	goto csp(b+a, d+b, a+c, c+d);
-}
 
 int function(double a, float b, int c){
 
@@ -45,4 +58,3 @@
 	return 0;
 }
 
-
--- a/CbC-scripts/make_headers.py	Thu Oct 29 18:19:02 2009 +0900
+++ b/CbC-scripts/make_headers.py	Tue Nov 10 16:34:29 2009 +0900
@@ -1,12 +1,13 @@
 #!/usr/bin/env python3.0
 
+
 import sys
 import re
 import getopt
 
 reserved_words = [ "if", "for", "switch", "return", "while", "else", ]
 
-PATTERN = "([a-zA-Z_][\w\s]*\**)\s([a-zA-Z_]\w*)\s*\(([^{/;]*)\)\s*\{"
+PATTERN =  "([a-zA-Z_][\w\s]*\**)\s([a-zA-Z_]\w*)\s*\(([^{/;]*)\)\s*\{"
 # TODO: 関数パラメータ内にコメントがあると正しく動かない!
 # TODO: int * const * とか大丈夫?
 PROG = re.compile(PATTERN, re.S)
@@ -119,6 +120,5 @@
 			#debug_print(decl)
 			format_print(decl, file)
 
-#usage()
 main()
 
--- a/CbC-scripts/make_headers.py2	Thu Oct 29 18:19:02 2009 +0900
+++ b/CbC-scripts/make_headers.py2	Tue Nov 10 16:34:29 2009 +0900
@@ -3,15 +3,19 @@
 
 import sys
 import re
+import getopt
 
 reserved_words = [ "if", "for", "switch", "return", "while", "else", ]
 
+PATTERN = r"([a-zA-Z_][\w\s]*\**)\s([a-zA-Z_]\w*)\s*\(([^\{/;]*)\)\s*\{"
 #PATTERN = r"([a-zA-Z_]\w*)\s+([a-zA-Z_]\w*)\s*\(([^;]*)\)\s*\{"
 #PATTERN = r"((?:[a-zA-Z_]\w*)\s+)+?([a-zA-Z_]\w*)\s*\(([^;]*)\)\s*\{"
-PATTERN = r"([a-zA-Z_][\w\s]*\**)\s([a-zA-Z_]\w*)\s*\(([^/;]*)\)\s*\{"
 # TODO: 関数パラメータ内にコメントがあると正しく動かない!
 PROG = re.compile(PATTERN, re.S)
 
+omit_static=False
+add_extern=""
+
 def truncate_comments(data):
 	pass
 
@@ -33,6 +37,7 @@
 		truncate_comments(data)
 	except IOError:
 		print "cannot read file %s" % file
+		return None
 
 	# find all matched strings.
 	# moiter is iterator of MatchObject.
@@ -66,21 +71,56 @@
 			decl[key] = value.replace("\n"," ").replace("\t"," ")
 
 	print "/* defined in file %s at offset %d  */" % (file,decl["offset"])
-	print "%s %s (%s);" % (decl["type"],decl["name"],decl["parms"])
+	print "%s%s %s (%s);" % (add_extern, decl["type"],decl["name"],decl["parms"])
 	print ""
 
+def getoptions():
+	global omit_static, add_extern
+
+	try:
+		opts, args = getopt.getopt(sys.argv[1:], 'se', [ 'omit-static', 'add-extern' ])
+	except getopt.GetoptError:
+		print(err)
+		usage()
+		sys.exit(2)
+
+	for opt,a in opts:
+		if opt in ("-s", "--omit-static"):
+			omit_static=True
+		elif opt in ("-e", "--add-extern"):
+			add_extern="extern "
+		else:
+			print("unhandled option {0}".format(opt))
+			usage()
+	
+	return args
+
+def usage():
+	print( """\
+Usage: {0:s} OPION... [FILE]...
+OPTIONS:
+	-s, --omit-static	omit static functions
+	-e, --add-extern	add extern to all function declarations
+	""".format(sys.argv[0]))
+
 def main():
-	for file in sys.argv[1:]:
+	# option handling.
+	args = getoptions()
+
+	for file in args:
+		# read function declaration from each file.
 		decls = read_decls(file)
-
 		if decls==None or len(decls)==0:
+			# no function found.
 			print "%s have no function definition!" % file
 			continue
+
 		for decl in decls:
+			if omit_static and 0 <= decl["type"].find("static"):
+				# static function is ignored.
+				continue
 			#debug_print(decl)
 			format_print(decl, file)
-		#print decls[0]
-
 
 main()
 
--- a/configure	Thu Oct 29 18:19:02 2009 +0900
+++ b/configure	Tue Nov 10 16:34:29 2009 +0900
@@ -272,7 +272,7 @@
 PACKAGE_BUGREPORT=
 
 ac_unique_file="move-if-change"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TOPLEVEL_CONFIGURE_ARGUMENTS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc extra_mpfr_configure_flags ppllibs pplinc clooglibs clooginc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR GCC_SHLIB_SUBDIR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TOPLEVEL_CONFIGURE_ARGUMENTS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc ppllibs pplinc clooglibs clooginc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR GCC_SHLIB_SUBDIR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
 ac_subst_files='serialization_dependencies host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag'
 ac_pwd=`pwd`
 
@@ -4596,7 +4596,6 @@
 if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then
   gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/gmp/_libs '"$gmplibs"
   gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc"
-  extra_mpfr_configure_flags='--with-gmp-build=$$r/$(HOST_SUBDIR)/gmp'
   # Do not test the gmp version.  Assume that it is sufficient, since
   # it is in the source tree, and the library has not been built yet
   # but it would be included on the link line in the version check below
@@ -4811,7 +4810,6 @@
 
 
 
-
 # Allow host libstdc++ to be specified for static linking with PPL.
 
 # Check whether --with-host-libstdcxx or --without-host-libstdcxx was given.
@@ -13253,7 +13251,6 @@
 s,@do_compare@,$do_compare,;t t
 s,@gmplibs@,$gmplibs,;t t
 s,@gmpinc@,$gmpinc,;t t
-s,@extra_mpfr_configure_flags@,$extra_mpfr_configure_flags,;t t
 s,@ppllibs@,$ppllibs,;t t
 s,@pplinc@,$pplinc,;t t
 s,@clooglibs@,$clooglibs,;t t
--- a/gcc/config/rs6000/rs6000.md	Thu Oct 29 18:19:02 2009 +0900
+++ b/gcc/config/rs6000/rs6000.md	Tue Nov 10 16:34:29 2009 +0900
@@ -11681,6 +11681,35 @@
   [(set_attr "type" "branch,branch")
    (set_attr "length" "4,8")])
 
+
+;; added by kent.
+;; for indirect sibcalls of Continuation based C.
+;; this is based on call_indirect_nonlocal_sysv<mode>"
+(define_insn "*sibcall_indirect_nonlocal_sysv<mode>"
+  [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l,c,*l"))
+	 (match_operand 1 "" "g,g,g,g"))
+   (use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
+   (use (reg:SI LR_REGNO))
+   (return)]
+  "DEFAULT_ABI == ABI_V4
+   || DEFAULT_ABI == ABI_DARWIN"
+{
+  /*
+  if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
+    output_asm_insn ("crxor 6,6,6", operands);
+
+  else if (INTVAL (operands[2]) & CALL_V4_CLEAR_FP_ARGS)
+    output_asm_insn ("creqv 6,6,6", operands);
+  */
+
+  return "b%T0";
+}
+  [(set_attr "type" "branch,branch")
+   (set_attr "length" "4,8")])
+
+
+
+
 (define_expand "sibcall_value"
   [(parallel [(set (match_operand 0 "register_operand" "")
 		(call (mem:SI (match_operand 1 "address_operand" ""))