Mercurial > hg > CbC > old > device
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)),¯o); - 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");