-- This file has been created by using cpp on CONFIG.proto
-- in this directory and by using many variables defined 
-- in the top level Makefile. Please do not edit it
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- Cofiguration File for the Sather Compiler Version 1.1
-- some options for the compiler (see the runtime spec
-- for a detailed description of them).
PLATFORMS:		"linux";
DEFAULT_PLATFORM:	"netbsd";
DISTRIBUTED:		false;
THREADS:		false;
ZONES:			false;
TRACE:			false;
LIBRARY:		"SATHER_LIBRARY","Library/Library.module";
VERSION:		"1.2.1";
C_COMPILER:		"gcc";
CC_OPTIONS:		"-I/usr/pkg/include/gc";
GC_LINK:		"-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lgc";
LINK_OPTIONS:		"-lm";
MAKE_COMMAND:		"/usr/pkg/bin/gmake";
OBJECT_EXT:		".o";
LIB_EXT:		".a";
C_EXT:			".c";
SHELL_SEP:		"; ";
EXEC_OPTION:		"-o ";
NULL_SEGFAULTS:		false;
SEPARATE_POINTERS:	false;
PSATHER_FLAG:		"","";
CC_DEBUG_FLAG:		"","-g";
CC_OPTIMIZE_FLAG:	"","-O2";
CC_PROLIX_FLAG:		"",""; -- passed to the C compiler (prolix implies verbose)
MAKE_VERBOSE_FLAG:	"-s","-s"; -- passed to make
FORTRAN_APPEND_UNDERSCORE:	"true";
FORTRAN_PREFIX_UNDERSCORE:	"false";
FORTRAN_BIND_FUNC:		"true";
-- Define here all classes if their assignment is guaranteed to
-- be atomic (by the underlying Compiler/Hardware). Those classes may NOT
-- have a reference object as attribute, but the list is not restricted
-- to builtin classes. If you add a class here that is not atomic,
-- you will get very hard to trace bugs, and if you forget to add
-- some classes, your program runs slower. Note that you should not
-- try to add classes by trial and error, as an error may show up
-- only much too late.
ATOMIC_CLASSES:		"INT","CHAR","FLT","FLTD","BOOL","CPX","PREFETCH","THREAD_ID", "F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL", "F_DOUBLE", "F_COMPLEX", "C_CHAR", "C_UNSIGNED_CHAR", "C_SIGNED_CHAR", "C_SHORT", "C_INT", "C_LONG", "C_UNSIGNED_SHORT", "C_UNSIGNED_INT", "C_UNSIGNED_LONG", "C_FLOAT", "C_DOUBLE", "C_PTR", "C_CHAR_PTR", "C_UNSIGNED_CHAR_PTR", "C_SIGNED_CHAR_PTR", "C_SHORT_PTR", "C_INT_PTR", "C_LONG_PTR", "C_UNSIGNED_SHORT_PTR", "C_UNSIGNED_INT_PTR", "C_UNSIGNED_LONG_PTR", "C_FLOAT_PTR", "C_DOUBLE_PTR", "C_LONG_DOUBLE_PTR", "C_SIZE_T", "C_PTR_DIFF_T";
-- List here all classes whose layout is defined in runtime.h (or
-- some other header file)
BUILTIN_CLASSES:	"$OB","INT","CHAR","BOOL","STR","FLT","FLTD",
			"FLTX","FLTDX", "EXT_OB", "RUNTIME", "C_UNIX",
			"THREAD_ID","PREFETCH","LL_LOCK","SPINLOCK","SEMA", "ZONE",
			"F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL",
			"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
			"F_STRING", "F_HANDLER",
			"F_ARRAY{F_INTEGER}", "F_ARRAY{F_REAL}", 
			"F_ARRAY{F_CHARACTER}", "F_ARRAY{F_LOGICAL}", 
			"F_ARRAY{F_DOUBLE}", "F_ARRAY{F_COMPLEX}", 
			"F_ARRAY{F_DOUBLE_COMPLEX}",
			"F_ARRAY2{F_INTEGER}", "F_ARRAY2{F_REAL}", 
			"F_ARRAY2{F_CHARACTER}", "F_ARRAY2{F_LOGICAL}", 
			"F_ARRAY2{F_DOUBLE}", "F_ARRAY2{F_COMPLEX}", 
			"F_ARRAY2{F_DOUBLE_COMPLEX}",
			"F_ARRAY3{F_INTEGER}", "F_ARRAY3{F_REAL}", 
			"F_ARRAY3{F_CHARACTER}", "F_ARRAY3{F_LOGICAL}", 
			"F_ARRAY3{F_DOUBLE}", "F_ARRAY3{F_COMPLEX}", 
			"F_ARRAY3{F_DOUBLE_COMPLEX}",
			C_CHAR, C_UNSIGNED_CHAR, C_SIGNED_CHAR, C_SHORT, 
			C_INT, C_LONG, C_UNSIGNED_SHORT, C_UNSIGNED_INT, 
			C_UNSIGNED_LONG, C_FLOAT, C_DOUBLE, C_LONG_DOUBLE,
			C_PTR, C_CHAR_PTR, C_UNSIGNED_CHAR_PTR, 
			C_SIGNED_CHAR_PTR, C_SHORT_PTR, C_INT_PTR, C_LONG_PTR,
			C_UNSIGNED_SHORT_PTR, C_UNSIGNED_INT_PTR, 
			C_UNSIGNED_LONG_PTR, C_FLOAT_PTR, C_DOUBLE_PTR, 
			C_LONG_DOUBLE_PTR, C_SIZE_T, C_PTRDIFF_T;
-- Here you should list all the builtin classes that are reference free,
-- that is, they do not have an attribute of an abstract or reference type
REFERENCE_FREE:		"INT","CHAR","BOOL","STR","FLT","FLTD",
			"FLTX","FLTDX",
			"F_INTEGER","F_REAL", "F_CHARACTER","F_LOGICAL",
			"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
			"THREAD_ID","PREFETCH";
POLLING:		0;
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
AREF_ASIZE:			no_pre,no_post,reads "@0::asize",
				attr_access 1,
				var "@r $$;",exec "$$=ASIZE(@(0)$0);" "$$",
				f_var "@r $$;",f_exec "if(^0) $$=ASIZE(@(0)$0); else READASIZE($$,@0,$0);" "$$";
AREF_AGET:		 	no_pre,no_post,reads "@0::[]" "@0::asize",
				attr_access 1 0 0,
				var "@r $$;",
				exec "$$=@(r)ARR(@(0)$0,$1);" "$$",
				f_exec "#if %r==0"   "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_R_RARR_NA($$,@0,$0,$1);" 
				       "#elif %r==1" "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_VA_RARR_NA($$,@0,$0,$1);" 
				       "#elif %r==2" "\tif(^0) VASS_LP($$,@r,ARR(@(0)$0,$1)); else F_V_RARR_LP(@r,$$,@0,$0,$1);" 
				       "#endif" "$$";
AREF_ASET:			no_pre,no_post,writes "@0::[]",reads "@0::asize",
				attr_access 1 0 0,
				exec "SARR(@(0)$0,$1,@(2)$2);",
				f_exec "#if %2==0" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_R_WARR_NA(@0,$0,$1,$2);" 
				       "#elif %2==1" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_VA_WARR_NA(@0,$0,$1,$2);" 
				       "#elif %2==2" "\tif(^0) { CHK_BOUNDS($1,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$1],@2,$2);} else F_V_WARR_LP(@0,$0,$1,@2,$2);" 
				       "#endif";
AREF_ACLEAR:			no_pre,no_post,writes "@0::[],@0::asize",
				attr_access 1, -- the implementation is about as expensive as one access in pSather
				exec "AREFACLEAR($0);",
				f_exec "if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0);";
AREF_ACOPY:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				attr_access 5 5,
				exec "AREFACOPY($0,$1);",
				f_exec "if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1);";
AREF_ACOPY_BEG:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				attr_access 5 0 5,
				exec "AREFACOPYB($0,$1,$2);",
				f_exec "if(^0 && ^2) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2);";
AREF_ACOPY_BEG_NUM:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				attr_access 5 0 0 5,
				exec "AREFACOPYBN($0,$1,$2,$3);",
				f_exec "if(^0 && ^3) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
AREF_ACOPY_BEG_NUM_SRCBEG:	no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				attr_access 5 0 0 0 5,
				exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
				f_exec "if(^0 && ^4) AREFACOPYBNS($0,$1,$2,$3,$4); else F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
AREF_AELTB:			reads  "@0::[]" "@0::asize",
				attr_access 1,
				var    "INT $$br;",
				init   "$$br=ASIZE(@(0)$0);",
				break  "$$br",
				temp   "@r a$$;",
				iter   "a$$=ARR(@(0)$0,$#);" "a$$",
				f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
				f_iter "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);" 
				       "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);" 
				       "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				       "#endif" "a$$";
AREF_AELT_BEGB:			reads  "@0::[]" "@0::asize",
				attr_access 1 0,
				var    "INT $$c,$$s;",
				temp   "@r a$$;",
				init   "$$c=$1-1;$$s=ASIZE(@(0)$0);",
				f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
				iter   "if(++$$c>=$$s) @@;"
				       "a$$=ARR(@(0)$0,$$c);" "a$$",
				f_iter "if(++$$c>=$$s) @@;"
				       "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				       "#endif" "a$$";
AREF_AELT_BEG_NUMB:		reads  "@0::[]" "@0::asize",
				attr_access 1 0 0,
				var    "INT $$c,$$m;",
				temp   "@r a$$;",
				init   "$$c=$1-1;$$m=$1+$2;",
				iter   "if(++$$c>=$$m) @@;"
				       "a$$=ARR(@(0)$0,$$c);" "a$$",
				f_iter "if(++$$c>=$$m) @@;"
				       "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				       "#endif"
				       "a$$";
AREF_AELT_BEG_NUM_STEPB:	reads  "@0::[]" "@0::asize",
				attr_access 1 0 0 0,
				var    "INT $$c,$$m;",
				temp   "@r a$$;",
				init   "$$c=$1;$$m=$1+$2*$3;",
				iter   "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
				       "a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
				f_iter "if($$c>=$$m) @@;"
				       "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				       "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				       "#endif" "$$c+=$3;" "a$$";
AREF_ASETB:			writes "@0::[]",
				attr_access 1,
				reads  "@0::asize",
				var    "INT $$br;",
				init   "$$br=ASIZE(@(0)$0);",
				f_init "$$br=F_ASIZE(@0,$0);",
				break  "$$br",
				iter   "SARR(@(0)$0,$#,@(1)$1);",
				f_iter "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);" 
				       "#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);" 
				       "#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);" 
				       "#endif";
AREF_ASET_BEGB:			writes "@0::[]",
				reads  "@0::asize",
				attr_access 1 0,
				var    "INT $$c,$$s;",
				init   "$$c=$1-1;$$s=ASIZE(@(0)$0);",
				f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
				iter   "if(++$$c>=$$s) @@;"
				       "SARR(@(0)$0,$$c,@(2)$2);",
				f_iter "if(++$$c>=$$s) @@;"
				       "#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);" 
				       "#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);" 
				       "#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);" 
				       "#endif";
AREF_ASET_BEG_NUMB:		writes "@0::[]",
				reads  "@0::asize",
				attr_access 1 0 0,
				var    "INT $$c,$$m;",
				init   "$$c=$1-1;$$m=$1+$2;",
				iter   "if(++$$c>=$$m) @@;"
				       "SARR(@(0)$0,$$c,@(3)$3);",
				f_iter "if(++$$c>=$$m) @@;"
				       "#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);" 
				       "#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);" 
				       "#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);" 
				       "#endif";
AREF_ASET_BEG_NUM_STEPB:	reads  "@0::[]",
				writes "@0::asize",
				attr_access 1 0 0 0,
				var    "INT $$c,$$m;",
				init   "$$c=$1;$$m=$1+$2*$3;",
				iter   "if($$c>=$$m) @@;"
				       "SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
				f_iter "if($$c>=$$m) @@;"
				       "#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);" 
				       "#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);" 
				       "#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);" 
				       "#endif" "$$c+=$3;";
AREF_AINDB:			reads  "@0::asize",
				attr_access 0,
				var    "INT $$br;",
				init   "$$br=ASIZE(@(0)$0);",
				f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
				break  "$$br",
				temp   "@r r$$;",
				iter   "r$$=$#;" "r$$";
AREF_ARRAY_PTR:			exec   "(void *)$0->arr_part";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- THIS FILE IS WRONG FOR pSather and VALUE TYPES!
AVAL_ASIZE:			no_pre,no_post,reads "@0::asize",
				var "@r $$;",exec "$$=VASIZE(@0);" "$$";
AVAL_AGET:		 	no_pre,no_post,reads "@0::[]" "@0::asize",
				var "@r $$;",
				exec "$$=@(r)VARR(@0,$0,$1);" "$$";
AVAL_ASET:			no_pre,no_post,writes "@0::[]",reads "@0::asize",
				var "@r $$;",
				exec "$$=$0;VSARR(@0,$$,$1,@(2)$2);" "$$";
AVAL_ACOPY:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				var "@r $$;",
				exec "$$=$0;AVALACOPY(@0,$$,$1);" "$$";
AVAL_ACOPY_BEG:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				var "@r $$;",
				exec "$$=$0;AVALACOPYB(@0,$$,$1,$2);" "$$";
AVAL_ACOPY_BEG_NUM:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				var "@r $$;",
				exec "$$=$0;AVALACOPYBN(@0,$$,$1,$2,$3);" "$$";
AVAL_ACOPY_BEG_NUM_SRCBEG:	no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				var "@r $$;",
				exec "$$=$0;AVALACOPYBNS(@0,$$,$1,$2,$3,$4);" "$$";
AVAL_AELTB:			reads "@0::[]" "@0::asize",
				var "INT $$br;",
				init "$$br=VASIZE(@0);",
				break "$$br",
				temp "@r a$$;",
				iter "a$$=VARR(@0,$0,$#);" "a$$";
AVAL_AELT_BEGB:			reads "@0::[]" "@0::asize",
				var  "INT $$c,$$s;",
				temp "@r a$$;",
				init "$$c=$1-1;$$s=VASIZE(@0);",
				iter "if(++$$c>=$$s) @@;"
				     "a$$=VARR(@0,$0,$$c);" "a$$";
AVAL_AELT_BEG_NUMB:		reads "@0::[]" "@0::asize",
				var  "INT $$c,$$m;",
				temp "@r a$$;",
				init "$$c=$1-1;$$m=$1+$2;",
				iter "if(++$$c>=$$m) @@;"
				     "a$$=VARR(@0,$0,$$c);" "a$$";
AVAL_AELT_BEG_NUM_STEPB:	reads "@0::[]" "@0::asize",
				var  "INT $$c,$$m;",
				temp "@r a$$;",
				init "$$c=$1;$$m=$1+$2*$3;",
				iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
				     "a$$=VARR(@0,$0,$$c);" "$$c+=$3;" "a$$";
AVAL_AINDB:			reads "@0::asize",
				var "INT $$br;",
				init "$$br=VASIZE(@0);",
				break "$$br",
				temp "@r r$$;",
				iter "r$$=$#;" "r$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
BOOL_NOT:	no_pre,no_post,var "@r $$;",exec "$$=!($0);" "$$";
BOOL_IS_EQ:	no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
BOOL_INT:	no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
CHAR_IS_EQ:	no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
CHAR_INT:	no_pre,no_post,var "@r $$;",exec "$$=(INT)((unsigned char)$0);" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- the following definitions assume that all floating point 
-- operations return NaN if used with wrong arguments (a la IEEE)
-- If this is not the case for some machines, all functions that
-- could break should get a 'fragile'
FLT_PLUS:	no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
FLT_MINUS:	no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
FLT_NEGATE:	no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
FLT_TIMES:	no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
FLT_DIV:	no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
FLT_IS_EQ:	no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
FLT_IS_LT:	no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
IR_ISNORMAL:	no_pre,no_post,var "@r $$;",declare "_FM_B_F(isnormal)",exec "$$=ir_isnormal($0);" "$$";
IR_ISSUBNORMAL:	no_pre,no_post,var "@r $$;",declare "_FM_B_F(issubnormal)",exec "$$=ir_issubnormal($0);" "$$";
IR_ISZERO:	no_pre,no_post,var "@r $$;",declare "_FM_B_F(iszero)",exec "$$=ir_iszero($0);" "$$";
IR_SIGNBIT:	no_pre,no_post,var "@r $$;",declare "_FM_B_F(signbit)",exec "$$=ir_signbit($0);" "$$";
IR_ILOGB:	no_pre,no_post,var "@r $$;",declare "_FM_I_F(ilogb)",exec "$$=ir_ilogb($0);" "$$";
R_COPYSIGN:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(copysign)",exec "$$=r_copysign($0,$1);" "$$";
R_NEXTUP:	no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,1.0);" "$$";
R_NEXTDOWN:	no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,-1.0);" "$$";
R_REMAINDER:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(remainder)",exec "$$=r_remainder($0,$1);" "$$";
R_FMOD:		no_pre,no_post,var "@r $$;",declare "_FM_F_FF(fmod)",exec "$$=r_fmod($0,$1);" "$$";
R_SCALBN:	no_pre,no_post,var "@r $$;",declare "_FM_F_FI(scalbn)",exec "$$=r_scalbn($0,$1);" "$$";
R_J0:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(j0)",exec "$$=r_j0($0);" "$$";
R_J1:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(j1)",exec "$$=r_j1($0);" "$$";
R_JN:		no_pre,no_post,var "@r $$;",declare "_FM_F_IF(jn)",exec "$$=r_jn($1,$0);" "$$";
R_Y0:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(y0)",exec "$$=r_y0($0);" "$$";
R_Y1:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(y1)",exec "$$=r_y1($0);" "$$";
R_YN:		no_pre,no_post,var "@r $$;",declare "_FM_F_IF(yn)",exec "$$=r_yn($1,$0);" "$$";
R_ERF:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(erf)",exec "$$=r_erf($0);" "$$";
R_ERFC:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(erfc)",exec "$$=r_erfc($0);" "$$";
R_EXP:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp)",exec "$$=r_exp($0);" "$$";
R_EXPM1:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(expm1)",exec "$$=r_expm1($0);" "$$";
R_EXP2:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp2)",exec "$$=r_exp2($0);" "$$";
R_EXP10:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp10)",exec "$$=r_exp10($0);" "$$";
R_LOG:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(log)",exec "$$=r_log($0);" "$$";
R_LOG1P:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(log1p)",exec "$$=r_log1p($0);" "$$";
R_LOG10:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(log10)",exec "$$=r_log10($0);" "$$";
R_POW:		no_pre,no_post,var "@r $$;",declare "_FM_F_FF(pow)",exec "$$=r_pow($0,$1);" "$$";
R_SINH:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinh)",exec "$$=r_sinh($0);" "$$";
R_COSH:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(cosh)",exec "$$=r_cosh($0);" "$$";
R_TANH:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanh)",exec "$$=r_tanh($0);" "$$";
R_ASINH:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinh)",exec "$$=r_asinh($0);" "$$";
R_ACOSH:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(acosh)",exec "$$=r_acosh($0);" "$$";
R_ATANH:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanh)",exec "$$=r_atanh($0);" "$$";
R_HYPOT:	no_pre,no_post,var "@r $$;",declare "_FM_F_FF(hypot)",exec "$$=r_hypot($0,$1);" "$$";
R_SIN:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(sin)",exec "$$=r_sin($0);" "$$";
R_COS:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(cos)",exec "$$=r_cos($0);" "$$";
SINCOS:		no_pre,no_post,exec "sincos($0,&$1,&$2);";
R_TAN:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(tan)",exec "$$=r_tan($0);" "$$";
R_ASIN:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(asin)",exec "$$=r_asin($0);" "$$";
R_ACOS:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(acos)",exec "$$=r_acos($0);" "$$";
R_ATAN:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(atan)",exec "$$=r_atan($0);" "$$";
R_ATAN2:	no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2)",exec "$$=r_atan2($0,$1);" "$$";
R_SINPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinpi)",exec "$$=r_sinpi($0);" "$$";
R_COSPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(cospi)",exec "$$=r_cospi($0);" "$$";
SINCOSPI:	no_pre,no_post,exec "sincospi($0,&$1,&$2);";
R_TANPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanpi)",exec "$$=r_tanpi($0);" "$$";
R_ASINPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinpi)",exec "$$=r_asinpi($0);" "$$";
R_ACOSPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(acospi)",exec "$$=r_acospi($0);" "$$";
R_ATANPI:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanpi)",exec "$$=r_atanpi($0);" "$$";
R_ATAN2PI:	no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2pi)",exec "$$=r_atan2pi($0,$1);" "$$";
R_FABS:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(fabs)",exec "$$=r_fabs($0);" "$$";
R_LGAMMA:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(lgamma)",exec "$$=r_lgamma($0);" "$$";
R_SQRT:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(sqrt)",exec "$$=r_sqrt($0);" "$$";
R_CBRT:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(cbrt)",exec "$$=r_cbrt($0);" "$$";
ATOF:		no_pre,no_post,var "@r $$;",exec "$$=atof($1->arr_part);" "$$";
FLT_INT:	no_pre,no_post,var "@r $$;",exec "$$=FLTINT($0);" "$$";
FLT_FLTD: 	no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_FLTX: 	no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_FLTDX:	no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
FLT_TRUNCATE:	no_pre,no_post,var "@r $$;",exec "$$=FLTTRUNCATE($0);" "$$";
R_FLOOR:	no_pre,no_post,var "@r $$;",declare "_FM_F_F(floor)",exec "$$=r_floor($0);" "$$";
R_CEIL:		no_pre,no_post,var "@r $$;",declare "_FM_F_F(ceil)",exec "$$=r_ceil($0);" "$$";
FLT_ROUND:	no_pre,no_post,var "@r $$;",exec "$$=FLTROUND($0);" "$$";
R_SIGNALING_NAN:no_pre,no_post,var "@r $$;",declare "_FM_F_I(signaling_nan)",exec "$$=r_signaling_nan($1);" "$$";
R_QUIET_NAN:	no_pre,no_post,var "@r $$;",declare "_FM_F_I(quiet_nan)",exec "$$=r_quiet_nan($1);" "$$";
R_INFINITY:	no_pre,no_post,var "@r $$;",declare "_FM_F(infinity)",exec "$$=r_infinity();" "$$";
MIN_NORMAL:	no_pre,no_post,var "@r $$;",exec "$$=FLTMINNORMAL;" "$$";
MAX_NORMAL:	no_pre,no_post,var "@r $$;",exec "$$=FLTMAXNORMAL;" "$$";
MIN_SUBNORMAL:	no_pre,no_post,var "@r $$;",exec "$$=FLTMINSUBNORMAL;" "$$";
MAX_SUBNORMAL:	no_pre,no_post,var "@r $$;",exec "$$=FLTMAXSUBNORMAL;" "$$";
FLT_STORE_INTO: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTORE($0,$1);" "$$";
FLT_STORE_PREC: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTOREPREC($0,$1,$2);" "$$";
FLT_GET_REP:	no_pre,no_post,exec "rt_flt_get_rep($0,$1,$2,$3);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- the following definitions assume that all floating point 
-- operations return NaN if used with wrong arguments (a la IEEE)
-- If this is not the case for some machines, all functions that
-- could break should get a 'fragile'
FLTD_PLUS:		no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
FLTD_MINUS:		no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
FLTD_NEGATE:		no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
FLTD_TIMES:		no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
FLTD_DIV:		no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
FLTD_IS_EQ:		no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
FLTD_IS_LT:		no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
FLTD_FINITE:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=finite($0)!=0;" "$$";
FLTD_ISINF:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isinf($0)!=0;" "$$";
FLTD_ISNORMAL:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isnormal($0)!=0;" "$$";
FLTD_ISSUBNORMAL:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=issubnormal($0)!=0;" "$$";
FLTD_ISZERO:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=iszero($0)!=0;" "$$";
FLTD_SIGNBIT:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signbit($0);" "$$";
FLTD_ILOGB:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ilogb($0);" "$$";
FLTD_COPYSIGN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=copysign($0);" "$$";
FLTD_NEXTUP:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,1.0d);" "$$";
FLTD_NEXTDOWN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,-1.0d);" "$$";
FLTD_REMAINDER:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=remainder($0);" "$$";
FLTD_FMOD:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fmod($0);" "$$";
FLTD_SCALBN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=scalbn($0);" "$$";
FLTD_J0:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j0($0);" "$$";
FLTD_J1:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j1($0);" "$$";
FLTD_JN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=jn($0);" "$$";
FLTD_Y0:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y0($0);" "$$";
FLTD_Y1:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y1($0);" "$$";
FLTD_YN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=yn($0);" "$$";
FLTD_ERF:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erf($0);" "$$";
FLTD_ERFC:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erfc($0);" "$$";
FLTD_EXP:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp($0);" "$$";
FLTD_EXPM1:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=expm1($0);" "$$";
FLTD_EXP2:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp2($0);" "$$";
FLTD_EXP10:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDEXP10($0);" "$$";
FLTD_LOG:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log($0);" "$$";
FLTD_LOG1P:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log1p($0);" "$$";
FLTD_LOG10:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log10($0);" "$$";
FLTD_POW:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=pow($0,$1);" "$$";
FLTD_SINH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinh($0);" "$$";
FLTD_COSH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cosh($0);" "$$";
FLTD_TANH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanh($0);" "$$";
FLTD_ASINH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinh($0);" "$$";
FLTD_ACOSH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acosh($0);" "$$";
FLTD_ATANH:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanh($0);" "$$";
FLTD_HYPOT:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=hypot($0);" "$$";
FLTD_SIN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sin($0);" "$$";
FLTD_COS:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cos($0);" "$$";
FLTD_SINCOS:		no_pre,no_post,declare "#include <math.h>",exec "sincos($0,&$1,&$2);";
FLTD_TAN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tan($0);" "$$";
FLTD_ASIN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asin($0);" "$$";
FLTD_ACOS:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acos($0);" "$$";
FLTD_ATAN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan($0);" "$$";
FLTD_ATAN2:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2($0,$1);" "$$";
FLTD_SINPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinpi($0);" "$$";
FLTD_COSPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cospi($0);" "$$";
FLTD_SINCOSPI:		no_pre,no_post,declare "#include <math.h>",exec "sincospi($0,&$1,&$2);";
FLTD_TANPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanpi($0);" "$$";
FLTD_ASINPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinpi($0);" "$$";
FLTD_ACOSPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acospi($0);" "$$";
FLTD_ATANPI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanpi($0);" "$$";
FLTD_ATAN2PI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2pi($0,$1);" "$$";
FLTD_FABS:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fabs($0);" "$$";
FLTD_LGAMMA:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=lgamma($0);" "$$";
FLTD_SQRT:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sqrt($0);" "$$";
FLTD_CBRT:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cbrt($0);" "$$";
FLTD_STORE_INTO:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTORE($0,$1);" "$$";
FLTD_STORE_INTO_PREC:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTOREPREC($0,$1,$2);" "$$";
FLTD_ATOF:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atof($1->arr_part);" "$$";
FLTD_INT:		no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
FLTD_FLT:		no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
FLTD_FLTX: 		no_pre,no_post,var "@r $$;",exec "$$=(FLTX)$0;" "$$";
FLTD_FLTDX: 		no_pre,no_post,var "@r $$;",exec "$$=(FLTDX)$0;" "$$";
FLTD_TRUNCATE:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDTRUNCATE($0);" "$$";
FLTD_FLOOR:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=floor($0);" "$$";
FLTD_CEIL:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ceil($0);" "$$";
FLTD_ROUND:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDROUND($0);" "$$";
FLTD_PI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI;" "$$";
FLTD_E:			no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_E;" "$$";
FLTD_SQRT_2:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT2;" "$$";
FLTD_LOG_2:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2;" "$$";
FLTD_LOG2_E:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2E;" "$$";
FLTD_LOG10_E:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG10E;" "$$";
FLTD_LOG_10:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LN10;" "$$";
FLTD_HALF_PI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_2;" "$$";
FLTD_QUARTER_PI:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_4;" "$$";
FLTD_INV_SQRT_2:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT1_2;" "$$";
FLTD_INV_PI:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_1_PI;" "$$";
FLTD_DOUBLE_INV_PI:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_PI;" "$$";
FLTD_DOUBLE_SQRT_PI:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_SQRTPI;" "$$";
FLTD_SIGNALING_NAN:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signaling_nan($1);" "$$";
FLTD_QUIET_NAN:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=quiet_nan($1);" "$$";
FLTD_INFINITY:		no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=infinity();" "$$";
FLTD_MIN_NORMAL:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINNORMAL;" "$$";
FLTD_MAX_NORMAL:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMAXNORMAL;" "$$";
FLTD_MIN_SUBNORMAL:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
FLTD_MAX_SUBNORMAL:	no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
FLTD_GET_REP:		no_pre,no_post,exec "rt_fltd_get_rep($0,$1,$2,$3,$4);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
INT_PLUS:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTPLUS($0,$1);" "$$";
INT_MINUS:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS($0,$1);" "$$";
INT_NEGATE:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS(0,$0);" "$$";
INT_TIMES:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$1);" "$$";
INT_DIV:	fragile,no_pre,no_post,var "@r $$;",exec "$$=INTDIV($0,$1);" "$$";
INT_MOD:	fragile,no_pre,no_post,var "@r $$;",exec "$$=INTMOD($0,$1);" "$$";
INT_IS_EQ:	no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
INT_IS_LT:	no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
INT_BOOL:	no_pre,no_post,var "@r $$;",exec "$$=(BOOL)$0;" "$$";
INT_FLT:	no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_FLTD:	no_pre,no_post,var "@r $$;",exec "$$=(FLTD)$0;" "$$";
INT_FLTX:	no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_FLTDX:	no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
INT_CHAR:	no_pre,no_post,var "@r $$;",exec "$$=(CHAR)$0;" "$$";
INT_C_UNSIGNED_INT:	no_pre,no_post,var "@r $$;",exec "$$=(unsigned int)$0;" "$$";
INT_INT:	no_pre,no_post,exec "$0";
INT_ABS:	no_pre,no_post,var "@r $$;",exec "$$=($0<0)?-$0:$0;" "$$";
INT_SQUARE:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$0);" "$$";
INT_MAX:	no_pre,no_post,var "@r $$;",exec "$$=($0>$1)?$0:$1;" "$$";
INT_MIN:	no_pre,no_post,var "@r $$;",exec "$$=($0<$1)?$0:$1;" "$$";
INT_IS_EVEN:	no_pre,no_post,var "@r $$;",exec "$$=($0&1)==0;" "$$";
INT_IS_ODD:	no_pre,no_post,var "@r $$;",exec "$$=($0&1)!=0;" "$$";
INT_IS_BETWEEN:	no_pre,no_post,var "@r $$;",exec "$$=($1<=$0&&$0<=$2)||($2<=$0&&$0<=$1);" "$$";
INT_UPLUS:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTUPLUS($0,$1);" "$$";
INT_UMINUS:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTUMINUS($0,$1);" "$$";
INT_UTIMES:	arith,no_pre,no_post,var "@r $$;",exec "$$=INTUTIMES($0,$1);" "$$";
INT_UDIV:	fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUDIV($0,$1);" "$$";
INT_UMOD:	fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUMOD($0,$1);" "$$";
INT_MPLUS:	no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0+(unsigned)$1);" "$$";
INT_MMINUS:	no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0-(unsigned)$1);" "$$";
INT_MNEGATE:	no_pre,no_post,var "@r $$;",exec "$$=(-(unsigned)$0);" "$$";
INT_MTIMES:	no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0*(unsigned)$1);" "$$";
INT_MDIV:	fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0/(unsigned)$1);" "$$";
INT_MMOD:	fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0%%(unsigned)$1);" "$$";
INT_BNOT:	no_pre,no_post,var "@r $$;",exec "$$=~$0;" "$$";
INT_BAND:	no_pre,no_post,var "@r $$;",exec "$$=$0&$1;" "$$";
INT_BOR:	no_pre,no_post,var "@r $$;",exec "$$=$0|$1;" "$$";
INT_BXOR:	no_pre,no_post,var "@r $$;",exec "$$=$0\\^$1;" "$$";
INT_LSHIFT:	no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)<<((unsigned)$1);" "$$";
INT_RSHIFT:	no_pre,no_post,var "@r $$;",exec "$$=INTRSHIFT($0,$1);" "$$";
INT_URSHIFT:	no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)>>((unsigned)$1);" "$$";
INT_CREATE_STR:	fragile,no_pre,no_post,var "@r $$;",exec "$$=atoi(((STR)$1)->arr_part);" "$$";
INT_AGET:	no_pre,no_post,var "@r $$;",exec "$$=((CHAR)(($0&(1<<$1))!=0));" "$$";
INT_ASET:	no_pre,no_post,var "@r $$;",exec "$$=((($0)&(~(1<<($1))))|(($2)<<($1)));" "$$";
INT_MAXINT:	no_pre,no_post,var "INT $$=SINT_MAX;",exec "$$";
INT_MININT:	no_pre,no_post,var "INT $$=SINT_MIN;",exec "$$";
INT_TIMESB:	no_pre,no_post,
		break "$0";
INT_TIMESB_INT:	no_pre,no_post,
		break "$0",
		temp "@r a$$;",
		iter "a$$=$#;" "a$$";
INT_FORB:	no_pre,no_post,
		var "INT $$,$$m;",
		init "$$=$0-1;$$m=$1;",
		iter "if(($$m--)<=0) @@;$$++;" "$$";
INT_UPB:	no_pre,no_post,
		var "INT $$;",
		init "$$=$0-1;",
		iter "$$++;" "$$";
INT_UPTOB:	no_pre,no_post,
		var "INT $$,$$m;",
		init "$$=$0-1;$$m=$1;",
		iter "if($$++>=$$m) @@;" "$$";
INT_DOWNTOB:	no_pre,no_post,
		var "INT $$,$$m;",
		init "$$=$0+1;$$m=$1;",
		iter "if($$--<=$$m) @@;" "$$";
	
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- note: all ACOPY macros are hard coded into
-- the compiler. This was needed especially for pSather to
-- achieve highest performance. However, you should not delete
-- them here, as the compiler still needs some of the information
-- in this file.
STR_ACOPY_FSTR_INT:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "STRACOPYNF($0,$1,$2);",
				f_exec "if(^0&&^1) STRACOPYNF($0,$1,$2); else F_STRACOPYNF($0,$1,$2);";
STR_ACOPY_STR_INT:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "STRACOPYN($0,$1,$2);",
				f_exec "if(^0&&^1) STRACOPYN($0,$1,$2); else F_STRACOPYN($0,$1,$2);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- note: all ACOPY macros are hard coded int
-- the compiler. This was needed especially for pSather to
-- achieve highest performance. However, you should not delete
-- them here, as the compiler still needs some of the information
-- in this file.
FSTR_ACOPY_FSTR:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYF($0,$1);",
				f_exec "if(^0 && ^1) FSTRACOPYF($0,$1); else F_FSTRACOPYF($0,$1);";
FSTR_ACOPY_STR:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPY($0,$1);",
				f_exec "if(^0 && ^1) FSTRACOPY($0,$1); else F_FSTRACOPY($0,$1);";
FSTR_ACOPYN_FSTR_INT:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYNF($0,$1,$2);",
				f_exec "if(^0 && ^1) FSTRACOPYNF($0,$1,$2); else F_FSTRACOPYNF($0,$1,$2);";
FSTR_ACOPYN_STR_INT:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYN($0,$1,$2);",
				f_exec "if(^0 && ^1) FSTRACOPYN($0,$1,$2); else F_FSTRACOPYN($0,$1,$2);";
FSTR_ACOPY_INT_FSTR:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYIF($0,$1,$2);",
				f_exec "if(^0 && ^2) FSTRACOPYIF($0,$1,$2); else F_FSTRACOPYIF($0,$1,$2);";
FSTR_ACOPY_INT_STR:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYIS($0,$1,$2);",
				f_exec "if(^0 && ^2) FSTRACOPYIS($0,$1,$2); else F_FSTRACOPYIS($0,$1,$2);";
FSTR_MEMCMP_FSTR_INT:		no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
				exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
				f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
FSTR_MEMCMP_STR_INT:		no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
				exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
				f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
ARRAY_SIZE:			no_pre,no_post,reads "@0::asize",var "@r $$;",
				exec "$$=($0)==NULL?0:ASIZE(@(0)$0);" "$$",
				f_exec "$$=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);" "$$";
ARRAY_CLEAR:			no_pre,no_post,writes "@0::[],@0::asize",
				exec "if($0!=NULL) AREFACLEAR($0);",
				f_exec "if(!FVOID($0)) { if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0); }";
ARRAY_COPY:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "if($0!=NULL && $1!=NULL) AREFACOPY($0,$1);",
				f_exec "if(!FVOID($0) && !FVOID($1)) { if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1); }";
ARRAY_COPY_BEG:			no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "if($2!=NULL) AREFACOPYB($0,$1,$2);",
				f_exec "if(!FVOID($2)) { if(^0 && ^1) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2); }";
ARRAY_COPY_BEG_NUM:		no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "AREFACOPYBN($0,$1,$2,$3);",
				f_exec "if(^0 && ^1) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
ARRAY_COPY_BEG_NUM_SRCBEG:	no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
				f_exec "F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
ARRAY_ELTB:			reads 	"@0::[]" "@0::asize",
				attr_access 1,
				var 	"INT $$br;",
				init 	"$$br=$0==NULL?0:ASIZE(@(0)$0);",
				break 	"$$br",
				temp 	"@r a$$;",
				iter 	"a$$=ARR(@(0)$0,$#);" "a$$",
				f_init 	"$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
				f_iter  "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);" 
				        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);" 
				        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				       	"#endif"
				       	"a$$";
ARRAY_ELT_BEGB:			reads 	"@0::[]" "@0::asize",
				var  	"INT $$c,$$s;",
				attr_access 1,
				temp 	"@r a$$;",
				init 	"$$c=$1-1;$$s=$0==0?0:ASIZE(@(0)$0);",
				f_init 	"$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
				iter 	"if(++$$c>=$$s) @@;"
				     	"a$$=ARR(@(0)$0,$$c);" "a$$",
				f_iter 	"if(++$$c>=$$s) @@;"
				        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				     	"#endif"
				     	"a$$";
ARRAY_ELT_BEG_NUMB:		reads 	"@0::[]" "@0::asize",
				var  	"INT $$c,$$m;",
				temp 	"@r a$$;",
				attr_access 1,
				init 	"$$c=$1-1;$$m=$1+$2;",
				iter 	"if(++$$c>=$$m) @@;"
				     	"a$$=ARR(@(0)$0,$$c);" "a$$",
				f_iter 	"if(++$$c>=$$m) @@;"
				        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				     	"#endif" 
				     	"a$$";
ARRAY_ELT_BEG_NUM_STEPB:	reads 	"@0::[]" "@0::asize",
				var  	"INT $$c,$$m;",
				attr_access 1,
				temp 	"@r a$$;",
				init 	"$$c=$1;$$m=$1+$2*$3;",
				iter 	"if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
				     	"a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
				f_iter 	"if($$c>=$$m) @@;"
				        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
				        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
				     	"#endif" 
				     	"$$c+=$3;" "a$$";
ARRAY_SETB:			writes 	"@0::[]",
				attr_access 1,
				reads 	"@0::asize",
				var 	"INT $$br;",
				init 	"$$br=$0==NULL?0:ASIZE(@(0)$0);",
				f_init 	"$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
				break 	"$$br",
				iter 	"SARR(@(0)$0,$#,@(1)$1);",
				f_iter  "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);" 
				        "#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);" 
				        "#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);" 
					"#endif";
ARRAY_SET_BEGB:			writes  "@0::[]",
				attr_access 1,
				reads   "@0::asize",
				var     "INT $$c,$$s;",
				init    "$$c=$1-1;$$s=$0==NULL?0:ASIZE(@(0)$0);",
				f_init  "$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
				iter    "if(++$$c>=$$s) @@;"
				        "SARR(@(0)$0,$$c,@(2)$2);",
				f_iter  "if(++$$c>=$$s) @@;"
				        "#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);" 
				        "#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);" 
				        "#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);" 
				        "#endif";
ARRAY_SET_BEG_NUMB:		writes  "@0::[]",
				attr_access 1,
				reads   "@0::asize",
				var     "INT $$c,$$m;",
				init    "$$c=$1-1;$$m=$1+$2;",
				iter    "if(++$$c>=$$m) @@;"
				        "SARR(@(0)$0,$$c,@(3)$3);",
				f_iter  "if(++$$c>=$$m) @@;"
				        "#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);" 
				        "#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);" 
				        "#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);" 
				        "#endif";
ARRAY_SET_BEG_NUM_STEPB:	reads   "@0::[]",
				attr_access 1,
				writes  "@0::asize",
				var     "INT $$c,$$m;",
				init    "$$c=$1;$$m=$1+$2*$3;",
				iter    "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
				        "SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
				f_iter  "if($$c>=$$m) @@;"
				        "#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);" 
				        "#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);" 
				        "#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);" 
				        "#endif" 
				        "$$c+=$3;";
ARRAY_INDB:			reads 	"@0::asize",
				var 	"INT $$br;",
				init 	"$$br=$0==NULL?0:ASIZE(@(0)$0);",
				f_init 	"$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
				break 	"$$br",
				temp 	"@r r$$;",
				iter 	"r$$=$#;" "r$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
FILE_STDIN:	no_pre,no_post,declare "#include <stdio.h>",exec "stdin";
FILE_STDOUT:	no_pre,no_post,declare "#include <stdio.h>",exec "stdout";
FILE_STDERR:	no_pre,no_post,declare "#include <stdio.h>",exec "stderr";
FILE_CLEAR:	volatile,no_pre,no_post,declare "#include <stdio.h>",exec "clearerr((FILE *)$0);";
FILE_FWRITE_FSTR: volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
		  f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
FILE_FWRITE_STR:  volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
		  f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
IN_GETCHAR:	volatile,no_pre,no_post,var "@r $$;",declare "#include <stdio.h>",exec "$$=(INT)getchar();" "$$";
IN_GET_STR_SIZED: volatile,no_pre,no_post,declare "#include <stdio.h>",exec "INGETSTRSIZED(((@1)$1),$2);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
SYS_FLT_REP:	no_pre,no_post,
		exec "SYSFLTREP($1,$2);",
		f_exec "SYSFLTREP($1,$2);";
SYS_FLTD_REP:	no_pre,no_post,
		exec "SYSFLTDREP($1,$2,$3);",
		f_exec "SYSFLTDREP($1,$2,$3);";
SYS_DESTROY:	volatile,no_pre,no_post,
		exec "SYSDESTROY($1);",
		f_exec "if(^0) SYSDESTROY($1); else F_SYSDESTROY($1);";
SYS_ID:		no_pre,no_post,var "@r $$;",
		exec "$$=SYSID($1);" "$$",
		f_exec "$$=^0?SYSID($1):F_SYSID($1);" "$$";
SYS_TP:		no_pre,no_post,var "@r $$;",
		exec "$$=SYSTP($1);" "$$",
		f_exec "$$=^0?SYSTP($1):F_SYSTP($1);" "$$";
SYS_STR_FOR_TP: no_pre,no_post,var "@r $$;",
		exec "$$=SYSSTRFORTP($1);" "$$";
SYS_EXT_OB_FOR: no_pre,no_post,var "@r $$;",
		exec "$$=SYSEXTOBFOR($1);" "$$";
SYS_OB_EQ:	no_pre,no_post,var "@r $$;",
		exec "$$=SYSOBEQ($1);" "$$",
		f_exec "$$=(^0&&^1)?SYSOBEQ($1):F_SYSOBEQ($1);" "$$";
SYS_IMPORT:	import,no_pre,no_post, exec "SYS_IMPORT;";
SYS_EXPORT:	export,no_pre,no_post,exec "SYS_EXPORT;";
SYS_DEFER:	no_pre,no_post,exec "SYS_DEFER;";
SYS_PSATHER_STATISTICS:	exec "use_statistics((int)$1);";
SYS_PSATHER_TRACE:	exec "use_trace((int)$1);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
TIME_SECONDS:	volatile,no_pre,no_post,var "@r $$;",exec "$$=(FLTD)time(NULL);" "$$";
TIMES_NOW:	volatile,no_pre,no_post,declare "#include <sys/times.h>" "#include <limits.h>",
	        var "struct tms $$;",
	        exec "$0->$.wall_time=times(&$$);"
		     "$0->$.sys_time=$$.tms_stime;"
		     "$0->$.user_time=$$.tms_utime;"
		     "$0->$.child_sys_time=$$.tms_cstime;"
		     "$0->$.child_user_time=$$.tms_cutime;";
TIMES_CLK:	no_pre,no_post,var "@r $$;",exec "$$=CLK_TCK;",declare "#include <limits.h>";
MEMORY_NOW:	no_pre,no_post,exec "$0->$.sbrk_size=(long)sbrk(0);"
		        "$0->$.gc_size=(long)GC_get_heap_size();";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
ZONE_CREATE:	var "@r $$;", exec "$$=SI_create();" "$$";
ZONE_WITHIN:	var "@r $$;", exec "$$=SI_within($0,$1);" "$$";
ZONE_DIVISIONS:	var "@r $$;", exec "$$=SI_divisions($0);" "$$";
ZONE_DIVISION:	fragile, var "@r $$;", exec "$$=SI_division($0,$1);" "$$";
ZONE_CAPACITY:	var "@r $$;", exec "$$=SI_capacity($0);" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
F_INTEGER_CREATE_INT:	no_pre,no_post,exec		"INTF_INTEGER($1)"; 
F_INTEGER_INT:		no_pre,no_post,exec		"F_INTEGERINT($0)";
F_INTEGER_ZERO:		no_pre,no_post,exec		"F_INTEGER_zero";
F_INTEGER_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERPLUS($0,$1);" "$$";
F_INTEGER_MINUS:	arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERMINUS($0,$1);" "$$";
F_INTEGER_TIMES:	arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERTIMES($0,$1);" "$$";
F_INTEGER_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERDIV($0,$1);" "$$";
F_INTEGER_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=F_INTEGER_IS_EQ($0,$1);" "$$";
F_INTEGER_IS_LT:	no_pre,no_post,var "@r $$;",exec	"$$=F_INTEGERIS_LT($0,$1);" "$$";
F_REAL_CREATE_FLT:	no_pre,no_post,exec		"FLTF_REAL($1)";
F_REAL_FLT:		no_pre,no_post,exec		"F_REALFLT($0)";
F_REAL_ZERO:		no_pre,no_post,exec		"F_REAL_zero";
F_REAL_PLUS:		arith,no_pre,no_post,var "@r $$;",exec	"$$=F_REALPLUS($0,$1);" "$$";
F_REAL_MINUS:		arith,no_pre,no_post,var "@r $$;",exec	"$$=F_REALMINUS($0,$1);" "$$";
F_REAL_TIMES:		arith,no_pre,no_post,var "@r $$;",exec	"$$=F_REALTIMES($0,$1);" "$$";
F_REAL_DIV:		arith,no_pre,no_post,var "@r $$;",exec	"$$=F_REALDIV($0,$1);" "$$";
F_REAL_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=F_REAL_IS_EQ($0,$1);" "$$";
F_REAL_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=F_REALIS_LT($0,$1);" "$$";
F_DOUBLE_CREATE_FLTD:	no_pre,no_post,exec		"FLTDF_DOUBLE($1)";
F_DOUBLE_FLTD:		no_pre,no_post,exec		"F_DOUBLEFLTD($0)";
F_DOUBLE_ZERO:		no_pre,no_post,exec		"F_DOUBLE_zero";
F_DOUBLE_PLUS:		arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEPLUS($0,$1);" "$$";
F_DOUBLE_MINUS:		arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEMINUS($0,$1);" "$$";
F_DOUBLE_TIMES:		arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLETIMES($0,$1);" "$$";
F_DOUBLE_DIV:		arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEDIV($0,$1);" "$$";
F_DOUBLE_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=F_DOUBLE_IS_EQ($0,$1);" "$$";
F_DOUBLE_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=F_DOUBLEIS_LT($0,$1);" "$$";
F_LOGICAL_CREATE_BOOL:	no_pre,no_post,exec		"BOOLF_LOGICAL($1)";
F_LOGICAL_BOOL:		no_pre,no_post,exec		"F_LOGICALBOOL($0)";
F_LOGICAL_ZERO:		no_pre,no_post,exec		"F_LOGICAL_zero";
F_LOGICAL_NOT:		no_pre,no_post,var "@r $$;",exec	"$$=F_LOGICALNOT($0);" "$$";
F_LOGICAL_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=F_LOGICAL_IS_EQ($0,$1);" "$$";
F_LOGICAL_OR:		no_pre,no_post,var "@r $$;",exec	"$$=F_LOGICALOR($0,$1);" "$$";
F_LOGICAL_AND:		no_pre,no_post,var "@r $$;",exec	"$$=F_LOGICALAND($0,$1);" "$$";
F_CHARACTER_CREATE_CHAR: no_pre,no_post,exec	"CHARF_CHARACTER($1)";
F_CHARACTER_CHAR:	no_pre,no_post,exec		"F_CHARACTERCHAR($0)";
F_CHARACTER_ZERO:	no_pre,no_post,exec		"F_CHARACTER_zero";
F_CHARACTER_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=F_CHARACTER_IS_EQ($0,$1);" "$$";
F_CHARACTER_IS_LT:	no_pre,no_post,var "@r $$;",exec	"$$=F_CHARACTERIS_LT($0,$1);" "$$";
F_STRING_CREATE_CHAR: no_pre,no_post,var "@r $$;",
			exec	
			"$$=(@0)ZALLOC(sizeof(@0_struct));" 
			"$$->address=(F_CHARACTER *)ZALLOC(sizeof(F_CHARACTER));"
			"$$->size=(F_LENGTH)1;"
			"*($$->address)=(F_CHARACTER)$1;"
			"$$";
F_STRING_CREATE_STR:  no_pre,no_post, reads "@1::asize",
			var "@r $$;",
			exec	
			"$$=(@0)ZALLOC(sizeof(@0_struct));" 
			"$$->address=(F_CHARACTER *)ZALLOC($1->asize);"
			"$$->size=(F_LENGTH)$1->asize;"
			"memcpy($$->address,$1->arr_part,$1->asize);"
			"$$";
F_STRING_CREATE_INT:  no_pre,no_post, reads "@1::asize",
			var "@r $$;",
			exec	
			"$$=(@0)ZALLOC(sizeof(@0_struct));" 
			"$$->address=(F_CHARACTER *)ZALLOC($1);"
			"$$->size=(F_LENGTH)$1;"
			"$$";
F_STRING_ADDRESS: no_pre,no_post, exec "$0->address";
F_STRING_SIZE:    no_pre,no_post, exec "$0->size";
F_COMPLEX_READ_RE:	 no_pre,no_post, exec "$0.re";
F_COMPLEX_WRITE_RE:	 no_pre,no_post, exec "$0.re=$1;";
F_COMPLEX_READ_IM:	 no_pre,no_post, exec "$0.im";
F_COMPLEX_WRITE_IM:	 no_pre,no_post, exec "$0.im=$1;";
F_COMPLEX_ZERO:		 no_pre,no_post,exec "F_COMPLEX_zero";
F_DOUBLE_COMPLEX_READ_RE:	 no_pre,no_post, exec "$0.re";
F_DOUBLE_COMPLEX_WRITE_RE:	 no_pre,no_post, exec "$0.re=$1;";
F_DOUBLE_COMPLEX_READ_IM:	 no_pre,no_post, exec "$0.im";
F_DOUBLE_COMPLEX_WRITE_IM:	 no_pre,no_post, exec "$0.im=$1;";
F_DOUBLE_COMPLEX_ZERO:		 no_pre,no_post,exec "F_DOUBLE_COMPLEX_zero";
F_HANDLER_SET_HANDLER:	no_pre,no_post, exec "$0=(@0)$1;";
F_HANDLER_INVOKE_HANDLER: no_pre,no_post, exec "F_HANDLERINVOKE_HANDLER($0)";
-- FORTRAN arrays
F_ARRAY_CREATE_INT:       no_pre,no_post, exec "(@0)ZALLOC($1*sizeof(@P0))";
F_ARRAY_CREATE_AREF:	  no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY_AGET:		  no_pre,no_post, exec "*((@P0 *)$0 + $1)";
F_ARRAY_ASET:		  no_pre,no_post, exec "*((@P0 *)$0 + $1)=$2";
F_ARRAY2_CREATE_INT_INT:  no_pre,no_post, exec "(@0)ZALLOC($1*$2*sizeof(@P0))";
F_ARRAY2_CREATE_ARRAY2:   no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY3_CREATE_INT_INT_INT: no_pre,no_post, exec "(@0)ZALLOC($1*$2*$3*sizeof(@P0))";
F_ARRAY3_CREATE_ARRAY3:   no_pre,no_post, exec "(@0)$1->arr_part";
F_ARRAY2_CREATE_MAT:	no_pre,no_post, exec "(@0)$1->arr_part";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
C_CHAR_CREATE_CHAR:	no_pre,no_post,exec		"CHARC_CHAR($1)"; 
C_CHAR_CHAR:		no_pre,no_post,exec		"C_CHARCHAR($0)";
C_CHAR_ZERO:		no_pre,no_post,exec		"C_CHAR_zero";
C_CHAR_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARPLUS($0,$1);" "$$";
C_CHAR_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARMINUS($0,$1);" "$$";
C_CHAR_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARTIMES($0,$1);" "$$";
C_CHAR_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARDIV($0,$1);" "$$";
C_CHAR_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_CHAR_IS_EQ($0,$1);" "$$";
C_CHAR_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_CHARIS_LT($0,$1);" "$$";
C_UNSIGNED_CHAR_CREATE_CHAR:	no_pre,no_post,exec		"CHARC_UNSIGNED_CHAR($1)"; 
C_UNSIGNED_CHAR_CHAR:		no_pre,no_post,exec		"C_UNSIGNED_CHARCHAR($0)";
C_UNSIGNED_CHAR_ZERO:		no_pre,no_post,exec		"C_UNSIGNED_CHAR_zero";
C_UNSIGNED_CHAR_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARPLUS($0,$1);" "$$";
C_UNSIGNED_CHAR_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARMINUS($0,$1);" "$$";
C_UNSIGNED_CHAR_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARTIMES($0,$1);" "$$";
C_UNSIGNED_CHAR_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARDIV($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_CHARIS_LT($0,$1);" "$$";
C_SIGNED_CHAR_CREATE_CHAR:	no_pre,no_post,exec		"CHARC_SIGNED_CHAR($1)"; 
C_SIGNED_CHAR_CHAR:		no_pre,no_post,exec		"C_SIGNED_CHARCHAR($0)";
C_SIGNED_CHAR_ZERO:		no_pre,no_post,exec		"C_SIGNED_CHAR_zero";
C_SIGNED_CHAR_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARPLUS($0,$1);" "$$";
C_SIGNED_CHAR_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARMINUS($0,$1);" "$$";
C_SIGNED_CHAR_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARTIMES($0,$1);" "$$";
C_SIGNED_CHAR_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARDIV($0,$1);" "$$";
C_SIGNED_CHAR_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_SIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_SIGNED_CHARIS_LT($0,$1);" "$$";
C_SHORT_CREATE_INT:	no_pre,no_post,exec		"INTC_SHORT($1)"; 
C_SHORT_INT:		no_pre,no_post,exec		"C_SHORTINT($0)";
C_SHORT_ZERO:		no_pre,no_post,exec		"C_SHORT_zero";
C_SHORT_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTPLUS($0,$1);" "$$";
C_SHORT_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTMINUS($0,$1);" "$$";
C_SHORT_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTTIMES($0,$1);" "$$";
C_SHORT_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTDIV($0,$1);" "$$";
C_SHORT_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_SHORT_IS_EQ($0,$1);" "$$";
C_SHORT_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_SHORTIS_LT($0,$1);" "$$";
C_INT_CREATE_INT:	no_pre,no_post,exec		"INTC_INT($1)"; 
C_INT_INT:		no_pre,no_post,exec		"C_INTINT($0)";
C_INT_ZERO:		no_pre,no_post,exec		"C_INT_zero";
C_INT_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTPLUS($0,$1);" "$$";
C_INT_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTMINUS($0,$1);" "$$";
C_INT_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTTIMES($0,$1);" "$$";
C_INT_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTDIV($0,$1);" "$$";
C_INT_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_INT_IS_EQ($0,$1);" "$$";
C_INT_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_INTIS_LT($0,$1);" "$$";
C_LONG_CREATE_INT:	no_pre,no_post,exec		"INTC_LONG($1)"; 
C_LONG_INT:		no_pre,no_post,exec		"C_LONGINT($0)";
C_LONG_ZERO:		no_pre,no_post,exec		"C_LONG_zero";
C_LONG_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGPLUS($0,$1);" "$$";
C_LONG_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGMINUS($0,$1);" "$$";
C_LONG_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGTIMES($0,$1);" "$$";
C_LONG_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGDIV($0,$1);" "$$";
C_LONG_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_LONG_IS_EQ($0,$1);" "$$";
C_LONG_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_LONGIS_LT($0,$1);" "$$";
C_UNSIGNED_SHORT_CREATE_INT:	no_pre,no_post,exec		"INTC_UNSIGNED_SHORT($1)"; 
C_UNSIGNED_SHORT_INT:		no_pre,no_post,exec		"C_UNSIGNED_SHORTINT($0)";
C_UNSIGNED_SHORT_ZERO:		no_pre,no_post,exec		"C_UNSIGNED_SHORT_zero";
C_UNSIGNED_SHORT_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTPLUS($0,$1);" "$$";
C_UNSIGNED_SHORT_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTMINUS($0,$1);" "$$";
C_UNSIGNED_SHORT_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTTIMES($0,$1);" "$$";
C_UNSIGNED_SHORT_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTDIV($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_SHORT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_SHORTIS_LT($0,$1);" "$$";
C_UNSIGNED_INT_CREATE_INT:	no_pre,no_post,exec		"INTC_UNSIGNED_INT($1)"; 
C_UNSIGNED_INT_INT:		no_pre,no_post,exec		"C_UNSIGNED_INTINT($0)";
C_UNSIGNED_INT_ZERO:		no_pre,no_post,exec		"C_UNSIGNED_INT_zero";
C_UNSIGNED_INT_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTPLUS($0,$1);" "$$";
C_UNSIGNED_INT_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTMINUS($0,$1);" "$$";
C_UNSIGNED_INT_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTTIMES($0,$1);" "$$";
C_UNSIGNED_INT_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTDIV($0,$1);" "$$";
C_UNSIGNED_INT_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_INT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_INTIS_LT($0,$1);" "$$";
C_UNSIGNED_LONG_CREATE_INT:	no_pre,no_post,exec		"INTC_UNSIGNED_LONG($1)"; 
C_UNSIGNED_LONG_INT:		no_pre,no_post,exec		"C_UNSIGNED_LONGINT($0)";
C_UNSIGNED_LONG_ZERO:		no_pre,no_post,exec		"C_UNSIGNED_LONG_zero";
C_UNSIGNED_LONG_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGPLUS($0,$1);" "$$";
C_UNSIGNED_LONG_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGMINUS($0,$1);" "$$";
C_UNSIGNED_LONG_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGTIMES($0,$1);" "$$";
C_UNSIGNED_LONG_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGDIV($0,$1);" "$$";
C_UNSIGNED_LONG_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_LONG_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_LONGIS_LT($0,$1);" "$$";
C_FLOAT_CREATE_FLT:	no_pre,no_post,exec		"FLTC_FLOAT($1)"; 
C_FLOAT_FLT:		no_pre,no_post,exec		"C_FLOATFLT($0)";
C_FLOAT_ZERO:		no_pre,no_post,exec		"C_FLOAT_zero";
C_FLOAT_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATPLUS($0,$1);" "$$";
C_FLOAT_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATMINUS($0,$1);" "$$";
C_FLOAT_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATTIMES($0,$1);" "$$";
C_FLOAT_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATDIV($0,$1);" "$$";
C_FLOAT_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_FLOAT_IS_EQ($0,$1);" "$$";
C_FLOAT_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_FLOATIS_LT($0,$1);" "$$";
C_DOUBLE_CREATE_FLTD:	no_pre,no_post,exec		"FLTDC_DOUBLE($1)"; 
C_DOUBLE_FLTD:		no_pre,no_post,exec		"C_DOUBLEFLTD($0)";
C_DOUBLE_ZERO:		no_pre,no_post,exec		"C_DOUBLE_zero";
C_DOUBLE_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEPLUS($0,$1);" "$$";
C_DOUBLE_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEMINUS($0,$1);" "$$";
C_DOUBLE_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLETIMES($0,$1);" "$$";
C_DOUBLE_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEDIV($0,$1);" "$$";
C_DOUBLE_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_DOUBLE_IS_EQ($0,$1);" "$$";
C_DOUBLE_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_DOUBLEIS_LT($0,$1);" "$$";
C_LONG_DOUBLE_CREATE_FLTD:	no_pre,no_post,exec		"FLTDC_LONG_DOUBLE($1)"; 
C_LONG_DOUBLE_FLTD:		no_pre,no_post,exec		"C_LONG_DOUBLEFLTD($0)";
C_LONG_DOUBLE_ZERO:		no_pre,no_post,exec		"C_LONG_DOUBLE_zero";
C_LONG_DOUBLE_PLUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEPLUS($0,$1);" "$$";
C_LONG_DOUBLE_MINUS:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEMINUS($0,$1);" "$$";
C_LONG_DOUBLE_TIMES:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLETIMES($0,$1);" "$$";
C_LONG_DOUBLE_DIV:		arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEDIV($0,$1);" "$$";
C_LONG_DOUBLE_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_LONG_DOUBLE_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_IS_LT:		no_pre,no_post,var "@r $$;",exec	"$$=C_LONG_DOUBLEIS_LT($0,$1);" "$$";
CONVERT_FROM_C_PTR_CREATE_C_PTR:	no_pre,no_post,exec  "(@0)$1";
CONVERT_TO_C_PTR:			no_pre,no_post,exec  "(C_PTR)$0";
C_PTR_ZERO:			no_pre,no_post,exec		"C_PTR_zero";
C_CHAR_PTR_ZERO:		no_pre,no_post,exec		"C_CHAR_PTR_zero";
C_UNSIGNED_CHAR_PTR_ZERO:	no_pre,no_post,exec		"C_UNSIGNED_CHAR_PTR_zero";
C_SIGNED_CHAR_PTR_ZERO:		no_pre,no_post,exec		"C_SIGNED_CHAR_PTR_zero";
C_SHORT_PTR_ZERO:		no_pre,no_post,exec		"C_SHORT_PTR_zero";
C_INT_PTR_ZERO:			no_pre,no_post,exec		"C_INT_PTR_zero";
C_LONG_PTR_ZERO:		no_pre,no_post,exec		"C_LONG_PTR_zero";
C_UNSIGNED_SHORT_PTR_ZERO:	no_pre,no_post,exec		"C_UNSIGNED_SHORT_PTR_zero";
C_UNSIGNED_INT_PTR_ZERO:	no_pre,no_post,exec		"C_UNSIGNED_INT_PTR_zero";
C_UNSIGNED_LONG_PTR_ZERO:	no_pre,no_post,exec		"C_UNSIGNED_LONG_PTR_zero";
C_FLOAT_PTR_ZERO:		no_pre,no_post,exec		"C_FLOAT_PTR_zero";
C_DOUBLE_PTR_ZERO:		no_pre,no_post,exec		"C_DOUBLE_PTR_zero";
C_LONG_DOUBLE_PTR_ZERO:		no_pre,no_post,exec		"C_LONG_DOUBLE_PTR_zero";
C_PTR_IS_EQ:		no_pre,no_post,var "@r $$;",exec	"$$=C_PTR_IS_EQ($0,$1);" "$$";
C_CHAR_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_SIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SHORT_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_INT_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_INT_PTR_IS_EQ($0,$1);" "$$";
C_LONG_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_LONG_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_INT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_UNSIGNED_LONG_PTR_IS_EQ($0,$1);" "$$";
C_FLOAT_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_FLOAT_PTR_IS_EQ($0,$1);" "$$";
C_DOUBLE_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_PTR_IS_EQ:	no_pre,no_post,var "@r $$;",exec	"$$=C_LONG_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
THREAD_ID_NIL:			no_pre,no_post,var "@r $$;",exec "$$=BR_INVALID_ID();" "$$";
THREAD_ID_ME:			no_pre,no_post,var "@r $$;",exec "$$=PSATHER_THREAD_ID;" "$$";
THREAD_ID_IS_EQ:		no_pre,no_post,var "@r $$;",exec "$$=BR_SAME_THREAD($0,$1);" "$$";
THREAD_ID_IS_LT:		no_pre,no_post,var "@r $$;",exec "$$=BR_THREAD_LT($0,$1);" "$$";
THREAD_ID_HASH:			no_pre,no_post,var "@r $$;",exec "$$=BR_THREAD_HASH($0);" "$$";
THREAD_ID_STR:			no_pre,no_post,var "@r $$;char $$p[30];",
				   exec "thr_print_id($0,$$p);"
				        "$$=(@r)rt_arr_alloc(sizeof(struct STR_struct),STR_tag,sizeof(CHAR),strlen($$p)+1);"
					"$$->asize=strlen($$p);"
					"strcpy($$->arr_part,$$p);"
					"$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
TIMING_TIME:	no_pre,no_post,
		declare "extern int start_sec;",
		var "struct timeval $$now;",
 		exec "gettimeofday(&$$now,NULL);"
		     "*$1=$$now.tv_sec-start_sec;"
		     "*$2=$$now.tv_usec;";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
LL_LOCK_INIT:			no_pre,no_post,volatile,exec "$0->lck=BR_LOCK_CREATE();";
LL_LOCK_L_LCK:			no_pre,no_post,volatile,exec "BR_LOCK($0->lck);";
LL_LOCK_L_UNLCK:		no_pre,no_post,volatile,exec "BR_UNLOCK($0->lck);";
LL_LOCK_L_TRY:			no_pre,no_post,volatile,var "@r $$;",exec "$$=BR_TRY_LOCK($0->lck);" "$$";
LL_LOCK_LCK:			no_pre,no_post,volatile,exec "if (FAR($0)) {ll_lock_lck_remote($0);} else {BR_LOCK($0->lck);}";
LL_LOCK_UNLCK:			no_pre,no_post,volatile,exec "if (FAR($0)) {ll_lock_unlck_remote($0);;} else {BR_UNLOCK($0->lck);}";
LL_LOCK_TRY:			no_pre,no_post,volatile,var "@r $$;",exec "if (FAR($0)) {$$=ll_lock_try_remote($0);} else {$$=BR_TRY_LOCK($0->lck);}" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
SPINLOCK_INIT:			no_pre,no_post,volatile,exec "SPINLOCK_CREATE($0);";
SPINLOCK_L_LCK:			no_pre,no_post,volatile,exec "SPINLOCK_LCK($0);";
SPINLOCK_L_UNLCK:		no_pre,no_post,volatile,exec "SPINLOCK_UNLCK($0);";
SPINLOCK_L_TRY:			no_pre,no_post,volatile,var "@r $$;",exec "$$=SPINLOCK_TRY($0);" "$$";
SPINLOCK_LCK:			no_pre,no_post,volatile,exec "if (FAR($0)) {spinlock_lck_remote($0);} else {SPINLOCK_LCK($0);}";
SPINLOCK_UNLCK:			no_pre,no_post,volatile,exec "if (FAR($0)) {spinlock_unlck_remote($0);} else {SPINLOCK_UNLCK($0);}";
SPINLOCK_TRY:			no_pre,no_post,volatile,var "@r $$;",exec "if (FAR($0)) {$$=spinlock_try_remote($0);} else {$$=SPINLOCK_TRY($0);}" "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
-- most of the functions and macros used in this file are defined
-- in am.h, the rest in pSather.h
SEMA_CREATE:			no_pre,no_post,volatile,exec "SEMA_CREATE($1);";
SEMA_WAIT:			no_pre,no_post,volatile,exec "SEMA_WAIT($0);";
SEMA_SIGNAL:			no_pre,no_post,volatile,exec "SEMA_SIGNAL($0);";
SEMA_TRY:			no_pre,no_post,volatile,var "@r $$;",exec "$$=SEMA_TRY($0);" "$$";
SEMA_DELETE:			no_pre,no_post,volatile,exec "SEMA_DELETE($0);";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
LM_LOCK_C_ARRAY_CREATE: volatile, no_pre, no_post,
        var     "int i;"
                "@r $$;",
        exec    "$$ = (@r)malloc($2 * sizeof(@r));"
                "if (FAR($1) { lm_get_remote_locks($$,$1,$2); "
                "} else { for(i=0;i<$2;i++) $$[i] = ((@r)locks)[i]; }"
                "$$";
GET_REMOTE_C_ARRAY: volatile, no_pre, no_post,
        var     "int i;"
                "int offset;"
                "BR_spinlock_t spinlock;"
                "@r $$;",
        exec    "$$ = (@r)malloc(($2) * sizeof(@r));"
                "BR_SPINLOCK_INIT(spinlock);"
                "BR_SPINLOCK_LOCK(spinlock);"
                "for (i=0, offset=0; i<($2); i++, offset+=sizeof(void*)) {"
                " BR_REQUEST_3($3,(BR_handler_3_t)lm_get_remote_ptr_request,(BR_word_t)(($1)+offset),(BR_word_t)(($$)+offset),(BR_word_t)(&spinlock));"
                " BR_SPINLOCK_LOCK(spinlock);"
                "}"
                "$$";
----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 3 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------
LM_SINGLE_MUTEX_MANAGER_AASL:   volatile, no_pre, no_post,
        reads   "@0::.ll_mutex" "@0::locked" "@0::locked_by" "@0::my_manager",
        writes  "@0::locked" "@0::locked_by",
        var     "BR_spinlock_t lm_ll_mutex;"
                "@.locked_by lm_thread_id;"
                "@r $$;",
        exec    "if (FAR($0)) { $$=FALSE;"
                "} else {"
                " lm_ll_mutex = ATTR(ATTR($0,$.ll_mutex),lck);"
                " BR_SPINLOCK_LOCK(lm_ll_mutex);"
                " if((void*)(ATTR($0,$.my_manager))!=(void*)($0)) { $$=FALSE;"
                " } else {"
                "  lm_thread_id = PSATHER_THREAD_ID;"
                "  if (ATTR($0,$.locked) == 0 || BR_SAME_THREAD(ATTR($0,$.locked_by),lm_thread_id)) {"
                "   ATTR($0,$.locked) ++; ATTR($0,$.locked_by) = lm_thread_id;"
                "   BR_SPINLOCK_UNLOCK(lm_ll_mutex);"
                "   $$ = TRUE;"
                "  } else { $$ = FALSE;}"
                " }"
                "}"
                "$$";
LM_SINGLE_MUTEX_MANAGER_ATSL:   volatile, no_pre, no_post,
        reads   "@0::.ll_mutex" "@0::locked" "@0::locked_by" "@0::my_manager",
        writes  "@0::locked" "@0::locked_by",
        var     "BR_spinlock_t lm_ll_mutex;"
                "@.locked_by lm_thread_id;"
                "@r $$;",
        exec    "if (FAR($0)) { $$=FALSE;"
                "} else {"
                " lm_ll_mutex = ATTR(ATTR($0,$.ll_mutex),lck);"
                " BR_SPINLOCK_LOCK(lm_ll_mutex);"
                " if((void*)(ATTR($0,$.my_manager))!=(void*)($0)) { $$ = -1;"
                " } else {"
                "  lm_thread_id = BR_THREAD_ID();"
                "  if (ATTR($0,$.locked) == 0 || BR_SAME_THREAD(ATTR($0,$.locked_by),lm_thread_id)) {"
                "   ATTR($0,$.locked) ++; ATTR($0,$.locked_by) = lm_thread_id;"
                "   $$ = 0;"
                "  } else { $$ = 1;}"
                "  BR_SPINLOCK_UNLOCK(lm_ll_mutex);"
                " }"
                "}"
                "$$";
LM_SINGLE_MUTEX_MANAGER_ARSL:   volatile, no_pre, no_post,
        reads   "@0::.ll_mutex"
                "@0::locked"
                "@0::my_manager"
                "@0::no_thread_waiting",
        writes  "@0::locked",
        var     "BR_spinlock_t lm_ll_mutex;"
                "@.locked_by lm_thread_id;"
                "@r $$;",
        exec    "if (FAR($0)) { $$=FALSE;"
                "} else {"
                " lm_ll_mutex = ATTR(ATTR($0,$.ll_mutex),lck);"
                " BR_SPINLOCK_LOCK(lm_ll_mutex);"
                " if((void*)(ATTR($0,$.my_manager))!=(void*)($0)) { $$ = FALSE;"
                " } else {"
                "  ATTR($0,$.locked) -= 1;"
                "  if (ATTR($0,$.locked) != 0) {"
                "   BR_SPINLOCK_UNLOCK(lm_ll_mutex);"
                "   $$ = TRUE;"
                "  } else {"
                "   if (ATTR($0,$.no_thread_waiting)) {"
                "    BR_SPINLOCK_UNLOCK(lm_ll_mutex);"
                "    $$ = TRUE;"
                "   } else { $$ = FALSE; }"
                "  }"
                " }"
                "}"
                "$$";
