changeset 853:280815f3111a

fix macro ( not working yet ...)
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 21 Nov 2011 21:41:20 +0900
parents 4640447d80ef
children f283fc68137f
files Changes mc-code-i64.c mc-macro.c mc-parse.c
diffstat 4 files changed, 163 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/Changes	Mon Nov 21 19:52:25 2011 +0900
+++ b/Changes	Mon Nov 21 21:41:20 2011 +0900
@@ -9967,3 +9967,23 @@
 non parse mode の CAST で、rvalue を取れば良いのかどうかがわからない。
 ad-hoc な直し方ではダメらしい。
 
+Mon Nov 21 20:37:22 JST 2011
+
+## #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
+## #define __DARWIN_ALIAS_STARTING(_mac, _iphone, x)   __DARWIN_ALIAS_STARTING_MAC_##_mac(x)
+
+FILE  *fopen(const char * __restrict, const char * __restrict) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fopen))
+
+なので、_mac を一度置き換えて、
+
+    __DARWIN_ALIAS_STARTING_MAC___MAC_10_6
+
+にしないとだめで、#define __MAC_10_6  1060 の方の
+
+    __DARWIN_ALIAS_STARTING_MAC_1060
+
+に置き換えてはダメらしい。
+
+#sym が、"sym" に置き換わっている。sym をmacro変換してから置き換える必要がある。
+
+
--- a/mc-code-i64.c	Mon Nov 21 19:52:25 2011 +0900
+++ b/mc-code-i64.c	Mon Nov 21 21:41:20 2011 +0900
@@ -87,6 +87,137 @@
 #define __builtin_va_end(v)\n\
 #define __inline inline \n\
 #define __inline__ inline \n\
+"
+
+#ifdef __llvm__
+"\
+#define __DBL_MIN_EXP__ (-1021)\n\
+#define __FLT_MIN__ 1.17549435e-38F\n\
+#define __DEC64_DEN__ 0.000000000000001E-383DD\n\
+#define __CHAR_BIT__ 8\n\
+#define __WCHAR_MAX__ 2147483647\n\
+#define __NO_MATH_INLINES 1\n\
+#define __DBL_DENORM_MIN__ 4.9406564584124654e-324\n\
+#define __FLT_EVAL_METHOD__ 0\n\
+#define __DBL_MIN_10_EXP__ (-307)\n\
+#define __FINITE_MATH_ONLY__ 0\n\
+#define __DEC64_MAX_EXP__ 384\n\
+#define __SHRT_MAX__ 32767\n\
+#define __LDBL_MAX__ 1.18973149535723176502e+4932L\n\
+#define __APPLE_CC__ 5658\n\
+#define __UINTMAX_TYPE__ long unsigned int\n\
+#define __DEC32_EPSILON__ 1E-6DF\n\
+#define __SCHAR_MAX__ 127\n\
+#define __USER_LABEL_PREFIX__ _\n\
+#define __STDC_HOSTED__ 1\n\
+#define __DEC64_MIN_EXP__ (-383)\n\
+#define __DBL_DIG__ 15\n\
+#define __FLT_EPSILON__ 1.19209290e-7F\n\
+#define __LDBL_MIN__ 3.36210314311209350626e-4932L\n\
+#define __DEC32_MAX__ 9.999999E96DF\n\
+#define __strong \n\
+#define __APPLE__ 1\n\
+#define __DECIMAL_DIG__ 21\n\
+#define __LDBL_HAS_QUIET_NAN__ 1\n\
+#define __DYNAMIC__ 1\n\
+#define __GNUC__ 4\n\
+#define __MMX__ 1\n\
+#define __FLT_HAS_DENORM__ 1\n\
+#define __DBL_MAX__ 1.7976931348623157e+308\n\
+#define __DBL_HAS_INFINITY__ 1\n\
+#define __DEC32_MIN_EXP__ (-95)\n\
+#define OBJC_NEW_PROPERTIES 1\n\
+#define __STRICT_ANSI__ 1\n\
+#define __LDBL_HAS_DENORM__ 1\n\
+#define __DEC32_MIN__ 1E-95DF\n\
+#define __weak __attribute__((objc_gc(weak)))\n\
+#define __DBL_MAX_EXP__ 1024\n\
+#define __DEC128_EPSILON__ 1E-33DL\n\
+#define __SSE2_MATH__ 1\n\
+#define __amd64 1\n\
+#define __tune_core2__ 1\n\
+#define __LONG_LONG_MAX__ 9223372036854775807LL\n\
+#define __GXX_ABI_VERSION 1002\n\
+#define __FLT_MIN_EXP__ (-125)\n\
+#define __x86_64 1\n\
+#define __DBL_MIN__ 2.2250738585072014e-308\n\
+#define __LP64__ 1\n\
+#define __DBL_HAS_QUIET_NAN__ 1\n\
+#define __DEC128_MIN__ 1E-6143DL\n\
+#define __REGISTER_PREFIX__ \n\
+#define __DBL_HAS_DENORM__ 1\n\
+#define __NO_INLINE__ 1\n\
+#define __DEC_EVAL_METHOD__ 2\n\
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL\n\
+#define __FLT_MANT_DIG__ 24\n\
+#define __VERSION__ \"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)\"\n\
+#define __DEC64_EPSILON__ 1E-15DD\n\
+#define __DEC128_MIN_EXP__ (-6143)\n\
+#define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 1072\n\
+#define __SIZE_TYPE__ long unsigned int\n\
+#define __DEC32_DEN__ 0.000001E-95DF\n\
+#define __FLT_RADIX__ 2\n\
+#define __LDBL_EPSILON__ 1.08420217248550443401e-19L\n\
+#define __SSE_MATH__ 1\n\
+#define __k8 1\n\
+#define __LDBL_DIG__ 18\n\
+#define __x86_64__ 1\n\
+#define __FLT_HAS_QUIET_NAN__ 1\n\
+#define __FLT_MAX_10_EXP__ 38\n\
+#define __LONG_MAX__ 9223372036854775807L\n\
+#define __FLT_HAS_INFINITY__ 1\n\
+#define __DEC64_MAX__ 9.999999999999999E384DD\n\
+#define __DEC64_MANT_DIG__ 16\n\
+#define __STDC_VERSION__ 199901L\n\
+#define __DEC32_MAX_EXP__ 96\n\
+#define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL\n\
+#define __LITTLE_ENDIAN__ 1\n\
+#define __LDBL_MANT_DIG__ 64\n\
+#define __CONSTANT_CFSTRINGS__ 1\n\
+#define __DEC32_MANT_DIG__ 7\n\
+#define __k8__ 1\n\
+#define __WCHAR_TYPE__ int\n\
+#define __pic__ 2\n\
+#define __FLT_DIG__ 6\n\
+#define __INT_MAX__ 2147483647\n\
+#define __FLT_MAX_EXP__ 128\n\
+#define __DBL_MANT_DIG__ 53\n\
+#define __DEC64_MIN__ 1E-383DD\n\
+#define __WINT_TYPE__ int\n\
+#define __SSE__ 1\n\
+#define __LDBL_MIN_EXP__ (-16381)\n\
+#define __MACH__ 1\n\
+#define __amd64__ 1\n\
+#define __LDBL_MAX_EXP__ 16384\n\
+#define __SSP__ 1\n\
+#define __LDBL_MAX_10_EXP__ 4932\n\
+#define __DBL_EPSILON__ 2.2204460492503131e-16\n\
+#define _LP64 1\n\
+#define __GNUC_PATCHLEVEL__ 1\n\
+#define __LDBL_HAS_INFINITY__ 1\n\
+#define __INTMAX_MAX__ 9223372036854775807L\n\
+#define __FLT_DENORM_MIN__ 1.40129846e-45F\n\
+#define __PIC__ 2\n\
+#define __FLT_MAX__ 3.40282347e+38F\n\
+#define __SSE2__ 1\n\
+#define __FLT_MIN_10_EXP__ (-37)\n\
+#define __INTMAX_TYPE__ long int\n\
+#define __DEC128_MAX_EXP__ 6144\n\
+#define __GNUC_MINOR__ 2\n\
+#define __DBL_MAX_10_EXP__ 308\n\
+#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L\n\
+#define __STDC__ 1\n\
+#define __PTRDIFF_TYPE__ long int\n\
+#define __DEC128_MANT_DIG__ 34\n\
+#define __LDBL_MIN_10_EXP__ (-4931)\n\
+#define __llvm__ 1\n\
+#define __GNUC_GNU_INLINE__ 1\n\
+#define __SSE3__ 1\n\
+"
+
+#else
+
+"\
 #define __DARWIN_1050(x) \n\
 #define __AVAILABILITY_INTERNAL1000_DEP1050\n\
 #define __OSX_AVAILABLE_BUT_DEPRECATED(a,b,c,d) \n\
@@ -211,12 +342,12 @@
 #define __LDBL_MIN_10_EXP__ (-4931) \n\
 #define __SSE3__ 1 \n\
 "
+#endif
+
 #ifdef __APPLE__
 "#define __APPLE__ 1\n"
 "#define __GNUC__ 4\n"
 "#define __BIG_ENDIAN__ 1\n"
-"#define __DARWIN_ALIAS_STARTING(a,b,c) \n"
-"#define __DARWIN_ALIAS(a) \n"
 #endif
 ;
 
--- a/mc-macro.c	Mon Nov 21 19:52:25 2011 +0900
+++ b/mc-macro.c	Mon Nov 21 21:41:20 2011 +0900
@@ -124,10 +124,10 @@
 	}
 	*t++=0;
 	// evaluate generated result again
-// if (0 && lsrc) {
-//     printf("### %s\n",macropp);
-//     if (t[-2]!='\n') putchar('\n');
-// }
+ if (1 && lsrc) {
+     printf("### %s\n",macropp);
+     if (t[-2]!='\n') putchar('\n');
+ }
         macrop=macro_eval(macrop,macropp,macro_history);
 	cheap = reset_cheap(&scheap);
 	macropp = cheap->ptr;
@@ -862,7 +862,7 @@
 static int
 macro_function(int macrop,char **pchptr,NMTBL *nptr,int history)
 {
-    int args,sargs,values,evalues;
+    int args,sargs,values;
     char *macro;
 
     // make argument list
@@ -871,22 +871,15 @@
     if (pchptr==&chptr) {
 	ch = *chptr++;
     }
-    // eval all argument list
-    evalues = 0;
-    while(values) {
-	evalues = list2(macro_eval(0,scaddr(values),history),evalues);
-	values = cadr(values);
-    }
+    // do not eval argument here
     // define all arguments locally
     //    #define arg0 arg0_value
     //    #define arg1 arg2_value ....
-    evalues = reverse0(evalues);
     enter_scope();
     while(args) {
-	mappend0(reverse0(car(evalues)),&macro);
-	local_define(scaddr(args),macro);
+	local_define(scaddr(args),scaddr(values));
 	args = cadr(args);
-	evalues = cadr(evalues);
+	values = cadr(values);
     }
     // process body replacement
     macro = scaddr(nptr->dsp);
--- a/mc-parse.c	Mon Nov 21 19:52:25 2011 +0900
+++ b/mc-parse.c	Mon Nov 21 21:41:20 2011 +0900
@@ -639,6 +639,7 @@
     reserve("volatile",VOLATILE,RESERVE);
     reserve("__volatile__",VOLATILE,RESERVE);
     reserve("restrict",RESTRICT,RESERVE);
+    reserve("__restrict",RESTRICT,RESERVE);
     reserve("typeof",TYPEOF,RESERVE);
     reserve("__typeof__",TYPEOF,RESERVE);
     reserve("__builtin_alloca",ALLOCA,RESERVE);
@@ -668,7 +669,7 @@
     reserve("noreturn",NORETURN,ATTRIBUTE);
 
     codegen_reinit();
-    macro_define("__restrict\n"); 
+    // macro_define("__restrict\n"); 
     macro_define("__micro_c__ 1\n");
 #ifdef __APPLE__
     macro_define("__APPLE__ 1\n");