Ticket #103: self.patch
| File self.patch, 53.4 KB (added by kjs, 4 years ago) |
|---|
-
compilers/imcc/imcc.y
1169 1169 vtable: 1170 1170 VTABLE_METHOD 1171 1171 { 1172 $$ = 0;1172 $$ = P_VTABLE; 1173 1173 IMCC_INFO(interp)->cur_unit->vtable_name = NULL; 1174 1174 IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; 1175 1175 } 1176 1176 | VTABLE_METHOD '(' STRINGC ')' 1177 1177 { 1178 $$ = 0;1178 $$ = P_VTABLE; 1179 1179 IMCC_INFO(interp)->cur_unit->vtable_name = $3; 1180 1180 IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; 1181 1181 } -
compilers/imcc/imcparser.c
2950 2950 { 2951 2951 case 2: 2952 2952 #line 880 "compilers/imcc/imcc.y" 2953 { if (yynerrs) YYABORT; (yyval.i) = 0; }2953 { if (yynerrs) YYABORT; (yyval.i) = 0; ;} 2954 2954 break; 2955 2955 2956 2956 case 5: 2957 2957 #line 889 "compilers/imcc/imcc.y" 2958 { (yyval.i) = (yyvsp[(1) - (1)].i); }2958 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 2959 2959 break; 2960 2960 2961 2961 case 6: 2962 2962 #line 890 "compilers/imcc/imcc.y" 2963 { (yyval.i) = (yyvsp[(1) - (1)].i); }2963 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 2964 2964 break; 2965 2965 2966 2966 case 7: … … 2969 2969 (yyval.i) = (yyvsp[(1) - (1)].i); 2970 2970 imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 2971 2971 IMCC_INFO(interp)->cur_unit = 0; 2972 }2972 ;} 2973 2973 break; 2974 2974 2975 2975 case 8: … … 2978 2978 (yyval.i) = (yyvsp[(1) - (1)].i); 2979 2979 imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 2980 2980 IMCC_INFO(interp)->cur_unit = 0; 2981 }2981 ;} 2982 2982 break; 2983 2983 2984 2984 case 9: 2985 2985 #line 903 "compilers/imcc/imcc.y" 2986 { (yyval.i) = 0; }2986 { (yyval.i) = 0; ;} 2987 2987 break; 2988 2988 2989 2989 case 10: 2990 2990 #line 904 "compilers/imcc/imcc.y" 2991 { (yyval.i) = 0; }2991 { (yyval.i) = 0; ;} 2992 2992 break; 2993 2993 2994 2994 case 11: 2995 2995 #line 905 "compilers/imcc/imcc.y" 2996 { (yyval.i) = 0; }2996 { (yyval.i) = 0; ;} 2997 2997 break; 2998 2998 2999 2999 case 12: 3000 3000 #line 906 "compilers/imcc/imcc.y" 3001 { (yyval.i) = 0; }3001 { (yyval.i) = 0; ;} 3002 3002 break; 3003 3003 3004 3004 case 13: 3005 3005 #line 910 "compilers/imcc/imcc.y" 3006 { (yyval.i) = 0; }3006 { (yyval.i) = 0; ;} 3007 3007 break; 3008 3008 3009 3009 case 14: … … 3012 3012 (yyval.i) = 0; 3013 3013 do_loadlib(interp, (yyvsp[(2) - (3)].s)); 3014 3014 mem_sys_free((yyvsp[(2) - (3)].s)); 3015 }3015 ;} 3016 3016 break; 3017 3017 3018 3018 case 15: … … 3020 3020 { 3021 3021 IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s)); 3022 3022 set_filename(interp, (yyvsp[(4) - (5)].s)); 3023 }3023 ;} 3024 3024 break; 3025 3025 3026 3026 case 16: 3027 3027 #line 926 "compilers/imcc/imcc.y" 3028 3028 { 3029 3029 set_filename(interp, (yyvsp[(2) - (3)].s)); 3030 }3030 ;} 3031 3031 break; 3032 3032 3033 3033 case 17: … … 3038 3038 SymReg * const key = mk_const(interp, (yyvsp[(2) - (4)].s), 'S'); 3039 3039 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, ".annotate", 2, key, (yyvsp[(4) - (4)].sr)); 3040 3040 mem_sys_free((yyvsp[(2) - (4)].s)); 3041 }3041 ;} 3042 3042 break; 3043 3043 3044 3044 case 18: … … 3050 3050 3051 3051 IMCC_INFO(interp)->cur_namespace = NULL; 3052 3052 (yyval.t) = 0; 3053 }3053 ;} 3054 3054 break; 3055 3055 3056 3056 case 19: … … 3068 3068 Parrot_register_HLL_type(interp, ctx->current_HLL, 3069 3069 built_in_type, language_type); 3070 3070 (yyval.t) = 0; 3071 }3071 ;} 3072 3072 break; 3073 3073 3074 3074 case 20: 3075 3075 #line 971 "compilers/imcc/imcc.y" 3076 { is_def = 1; }3076 { is_def = 1; ;} 3077 3077 break; 3078 3078 3079 3079 case 21: … … 3082 3082 mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); 3083 3083 mem_sys_free((yyvsp[(4) - (6)].s)); 3084 3084 is_def = 0; 3085 }3085 ;} 3086 3086 break; 3087 3087 3088 3088 case 22: 3089 3089 #line 980 "compilers/imcc/imcc.y" 3090 { is_def=1; }3090 { is_def=1; ;} 3091 3091 break; 3092 3092 3093 3093 case 23: … … 3095 3095 { 3096 3096 (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); 3097 3097 is_def = 0; 3098 }3098 ;} 3099 3099 break; 3100 3100 3101 3101 case 24: 3102 3102 #line 986 "compilers/imcc/imcc.y" 3103 { is_def=1; }3103 { is_def=1; ;} 3104 3104 break; 3105 3105 3106 3106 case 25: … … 3108 3108 { 3109 3109 (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); 3110 3110 is_def = 0; 3111 }3111 ;} 3112 3112 break; 3113 3113 3114 3114 case 30: 3115 3115 #line 1003 "compilers/imcc/imcc.y" 3116 { (yyval.i) = 0; }3116 { (yyval.i) = 0; ;} 3117 3117 break; 3118 3118 3119 3119 case 31: 3120 3120 #line 1004 "compilers/imcc/imcc.y" 3121 { (yyval.i) = 0; }3121 { (yyval.i) = 0; ;} 3122 3122 break; 3123 3123 3124 3124 case 32: 3125 3125 #line 1005 "compilers/imcc/imcc.y" 3126 { (yyval.i) = 0; }3126 { (yyval.i) = 0; ;} 3127 3127 break; 3128 3128 3129 3129 case 33: 3130 3130 #line 1006 "compilers/imcc/imcc.y" 3131 { (yyval.i) = 0; }3131 { (yyval.i) = 0; ;} 3132 3132 break; 3133 3133 3134 3134 case 34: 3135 3135 #line 1007 "compilers/imcc/imcc.y" 3136 { (yyval.i) = (yyvsp[(1) - (1)].i); }3136 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 3137 3137 break; 3138 3138 3139 3139 case 37: 3140 3140 #line 1012 "compilers/imcc/imcc.y" 3141 { clear_state(interp); }3141 { clear_state(interp); ;} 3142 3142 break; 3143 3143 3144 3144 case 38: … … 3148 3148 (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs, 3149 3149 IMCC_INFO(interp)->nargs, IMCC_INFO(interp) -> keyvec, 1); 3150 3150 mem_sys_free((yyvsp[(2) - (3)].s)); 3151 }3151 ;} 3152 3152 break; 3153 3153 3154 3154 case 39: … … 3156 3156 { 3157 3157 imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); 3158 3158 IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); 3159 }3159 ;} 3160 3160 break; 3161 3161 3162 3162 case 40: … … 3166 3166 IMCC_INFO(interp)->cur_unit, 3167 3167 mk_sub_label(interp, (yyvsp[(4) - (4)].s))); 3168 3168 IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(3) - (4)].t); 3169 }3169 ;} 3170 3170 break; 3171 3171 3172 3172 case 41: 3173 3173 #line 1033 "compilers/imcc/imcc.y" 3174 3174 { 3175 3175 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); 3176 }3176 ;} 3177 3177 break; 3178 3178 3179 3179 case 42: … … 3184 3184 (yyval.i) = 0; 3185 3185 mem_sys_free((yyvsp[(2) - (4)].s)); 3186 3186 mem_sys_free((yyvsp[(4) - (4)].s)); 3187 }3187 ;} 3188 3188 break; 3189 3189 3190 3190 case 43: 3191 3191 #line 1044 "compilers/imcc/imcc.y" 3192 { (yyval.i) = 0; }3192 { (yyval.i) = 0;;} 3193 3193 break; 3194 3194 3195 3195 case 45: 3196 3196 #line 1052 "compilers/imcc/imcc.y" 3197 { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }3197 { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); ;} 3198 3198 break; 3199 3199 3200 3200 case 46: … … 3205 3205 emit_flush(interp); 3206 3206 */ 3207 3207 (yyval.i) = 0; 3208 }3208 ;} 3209 3209 break; 3210 3210 3211 3211 case 49: … … 3220 3220 IMCC_INFO(interp)->cur_namespace = (yyvsp[(2) - (3)].sr); 3221 3221 if (re_open) 3222 3222 IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); 3223 }3223 ;} 3224 3224 break; 3225 3225 3226 3226 case 50: … … 3231 3231 "Slice not allowed in namespace."); 3232 3232 3233 3233 (yyval.sr) = (yyvsp[(2) - (3)].sr); 3234 }3234 ;} 3235 3235 break; 3236 3236 3237 3237 case 51: 3238 3238 #line 1093 "compilers/imcc/imcc.y" 3239 { (yyval.sr) = NULL; }3239 { (yyval.sr) = NULL; ;} 3240 3240 break; 3241 3241 3242 3242 case 52: 3243 3243 #line 1098 "compilers/imcc/imcc.y" 3244 3244 { 3245 3245 IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB); 3246 }3246 ;} 3247 3247 break; 3248 3248 3249 3249 case 53: 3250 3250 #line 1102 "compilers/imcc/imcc.y" 3251 3251 { 3252 3252 iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr)); 3253 }3253 ;} 3254 3254 break; 3255 3255 3256 3256 case 54: … … 3261 3261 IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup( 3262 3262 IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->name); 3263 3263 } 3264 }3264 ;} 3265 3265 break; 3266 3266 3267 3267 case 55: 3268 3268 #line 1114 "compilers/imcc/imcc.y" 3269 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }3269 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;} 3270 3270 break; 3271 3271 3272 3272 case 56: 3273 3273 #line 1118 "compilers/imcc/imcc.y" 3274 { (yyval.sr) = 0; }3274 { (yyval.sr) = 0; ;} 3275 3275 break; 3276 3276 3277 3277 case 57: 3278 3278 #line 1119 "compilers/imcc/imcc.y" 3279 { (yyval.sr) = 0; }3279 { (yyval.sr) = 0; ;} 3280 3280 break; 3281 3281 3282 3282 case 58: … … 3289 3289 } 3290 3290 else 3291 3291 add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 3292 }3292 ;} 3293 3293 break; 3294 3294 3295 3295 case 59: 3296 3296 #line 1133 "compilers/imcc/imcc.y" 3297 { is_def=1; }3297 { is_def=1; ;} 3298 3298 break; 3299 3299 3300 3300 case 60: 3301 3301 #line 1133 "compilers/imcc/imcc.y" 3302 { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }3302 { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; ;} 3303 3303 break; 3304 3304 3305 3305 case 61: … … 3311 3311 (yyval.sr) = mk_ident(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t)); 3312 3312 (yyval.sr)->type |= (yyvsp[(3) - (3)].t); 3313 3313 mem_sys_free((yyvsp[(2) - (3)].s)); 3314 }3314 ;} 3315 3315 break; 3316 3316 3317 3317 case 62: 3318 3318 #line 1151 "compilers/imcc/imcc.y" 3319 { (yyval.t) = 0; }3319 { (yyval.t) = 0; ;} 3320 3320 break; 3321 3321 3322 3322 case 63: … … 3325 3325 (yyval.t) = 0; 3326 3326 IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s)); 3327 3327 mem_sys_free((yyvsp[(3) - (4)].s)); 3328 }3328 ;} 3329 3329 break; 3330 3330 3331 3331 case 64: … … 3334 3334 (yyval.t) = 0; 3335 3335 IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); 3336 3336 mem_sys_free((yyvsp[(3) - (4)].s)); 3337 }3337 ;} 3338 3338 break; 3339 3339 3340 3340 case 65: 3341 3341 #line 1171 "compilers/imcc/imcc.y" 3342 3342 { 3343 (yyval.t) = 0;3343 (yyval.t) = P_VTABLE; 3344 3344 IMCC_INFO(interp)->cur_unit->vtable_name = NULL; 3345 3345 IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; 3346 }3346 ;} 3347 3347 break; 3348 3348 3349 3349 case 66: 3350 3350 #line 1177 "compilers/imcc/imcc.y" 3351 3351 { 3352 (yyval.t) = 0;3352 (yyval.t) = P_VTABLE; 3353 3353 IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s); 3354 3354 IMCC_INFO(interp)->cur_unit->is_vtable_method = 1; 3355 }3355 ;} 3356 3356 break; 3357 3357 3358 3358 case 67: … … 3361 3361 (yyval.t) = P_METHOD; 3362 3362 IMCC_INFO(interp)->cur_unit->method_name = NULL; 3363 3363 IMCC_INFO(interp)->cur_unit->is_method = 1; 3364 }3364 ;} 3365 3365 break; 3366 3366 3367 3367 case 68: … … 3370 3370 (yyval.t) = P_METHOD; 3371 3371 IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s); 3372 3372 IMCC_INFO(interp)->cur_unit->is_method = 1; 3373 }3373 ;} 3374 3374 break; 3375 3375 3376 3376 case 69: … … 3379 3379 (yyval.t) = 0; 3380 3380 IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL; 3381 3381 IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1; 3382 }3382 ;} 3383 3383 break; 3384 3384 3385 3385 case 70: … … 3388 3388 (yyval.t) = 0; 3389 3389 IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s); 3390 3390 IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1; 3391 }3391 ;} 3392 3392 break; 3393 3393 3394 3394 case 71: … … 3396 3396 { 3397 3397 (yyval.t) = 0; 3398 3398 IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s); 3399 }3399 ;} 3400 3400 break; 3401 3401 3402 3402 case 72: … … 3404 3404 { 3405 3405 (yyval.t) = 0; 3406 3406 IMCC_INFO(interp)->cur_unit->subid = NULL; 3407 }3407 ;} 3408 3408 break; 3409 3409 3410 3410 case 73: … … 3414 3414 IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); 3415 3415 IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes((yyvsp[(3) - (4)].s)); 3416 3416 mem_sys_free((yyvsp[(3) - (4)].s)); 3417 }3417 ;} 3418 3418 break; 3419 3419 3420 3420 case 74: 3421 3421 #line 1239 "compilers/imcc/imcc.y" 3422 3422 { 3423 3423 add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL); 3424 }3424 ;} 3425 3425 break; 3426 3426 3427 3427 case 75: … … 3429 3429 { 3430 3430 (yyval.t) = 0; 3431 3431 add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr)); 3432 }3432 ;} 3433 3433 break; 3434 3434 3435 3435 case 76: … … 3437 3437 { 3438 3438 (yyval.t) = 0; 3439 3439 add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr)); 3440 }3440 ;} 3441 3441 break; 3442 3442 3443 3443 case 77: 3444 3444 #line 1255 "compilers/imcc/imcc.y" 3445 { (yyval.sr) = mk_const(interp, "INTVAL", 'S'); }3445 { (yyval.sr) = mk_const(interp, "INTVAL", 'S'); ;} 3446 3446 break; 3447 3447 3448 3448 case 78: 3449 3449 #line 1256 "compilers/imcc/imcc.y" 3450 { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }3450 { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); ;} 3451 3451 break; 3452 3452 3453 3453 case 79: 3454 3454 #line 1257 "compilers/imcc/imcc.y" 3455 { (yyval.sr) = mk_const(interp, "PMC", 'S'); }3455 { (yyval.sr) = mk_const(interp, "PMC", 'S'); ;} 3456 3456 break; 3457 3457 3458 3458 case 80: 3459 3459 #line 1258 "compilers/imcc/imcc.y" 3460 { (yyval.sr) = mk_const(interp, "STRING", 'S'); }3460 { (yyval.sr) = mk_const(interp, "STRING", 'S'); ;} 3461 3461 break; 3462 3462 3463 3463 case 81: … … 3471 3471 } 3472 3472 mem_sys_free((yyvsp[(1) - (1)].s)); 3473 3473 (yyval.sr) = r; 3474 }3474 ;} 3475 3475 break; 3476 3476 3477 3477 case 82: … … 3485 3485 } 3486 3486 mem_sys_free((yyvsp[(1) - (1)].s)); 3487 3487 (yyval.sr) = r; 3488 }3488 ;} 3489 3489 break; 3490 3490 3491 3491 case 83: 3492 3492 #line 1281 "compilers/imcc/imcc.y" 3493 { (yyval.sr) = (yyvsp[(2) - (3)].sr); }3493 { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;} 3494 3494 break; 3495 3495 3496 3496 case 86: … … 3517 3517 r1 = IMCC_INFO(interp)->cur_unit->instructions->symregs[0]; 3518 3518 if (r1 && r1->pcc_sub) 3519 3519 r1->pcc_sub->calls_a_sub |= 1; 3520 }3520 ;} 3521 3521 break; 3522 3522 3523 3523 case 87: 3524 3524 #line 1319 "compilers/imcc/imcc.y" 3525 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }3525 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;} 3526 3526 break; 3527 3527 3528 3528 case 88: 3529 3529 #line 1323 "compilers/imcc/imcc.y" 3530 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }3530 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; ;} 3531 3531 break; 3532 3532 3533 3533 case 89: 3534 3534 #line 1324 "compilers/imcc/imcc.y" 3535 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }3535 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; ;} 3536 3536 break; 3537 3537 3538 3538 case 90: 3539 3539 #line 1328 "compilers/imcc/imcc.y" 3540 { (yyval.i) = NULL; }3540 { (yyval.i) = NULL; ;} 3541 3541 break; 3542 3542 3543 3543 case 91: 3544 3544 #line 1329 "compilers/imcc/imcc.y" 3545 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }3545 { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); ;} 3546 3546 break; 3547 3547 3548 3548 case 92: 3549 3549 #line 1333 "compilers/imcc/imcc.y" 3550 { (yyval.t) = 0; }3550 { (yyval.t) = 0; ;} 3551 3551 break; 3552 3552 3553 3553 case 94: 3554 3554 #line 1338 "compilers/imcc/imcc.y" 3555 { (yyval.t) = (yyvsp[(1) - (1)].t); }3555 { (yyval.t) = (yyvsp[(1) - (1)].t); ;} 3556 3556 break; 3557 3557 3558 3558 case 95: 3559 3559 #line 1339 "compilers/imcc/imcc.y" 3560 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }3560 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;} 3561 3561 break; 3562 3562 3563 3563 case 96: 3564 3564 #line 1343 "compilers/imcc/imcc.y" 3565 { (yyval.t) = P_LOAD; }3565 { (yyval.t) = P_LOAD; ;} 3566 3566 break; 3567 3567 3568 3568 case 97: 3569 3569 #line 1344 "compilers/imcc/imcc.y" 3570 { (yyval.t) = P_INIT; }3570 { (yyval.t) = P_INIT; ;} 3571 3571 break; 3572 3572 3573 3573 case 98: 3574 3574 #line 1345 "compilers/imcc/imcc.y" 3575 { (yyval.t) = P_MAIN; }3575 { (yyval.t) = P_MAIN; ;} 3576 3576 break; 3577 3577 3578 3578 case 99: 3579 3579 #line 1346 "compilers/imcc/imcc.y" 3580 { (yyval.t) = P_IMMEDIATE; }3580 { (yyval.t) = P_IMMEDIATE; ;} 3581 3581 break; 3582 3582 3583 3583 case 100: 3584 3584 #line 1347 "compilers/imcc/imcc.y" 3585 { (yyval.t) = P_POSTCOMP; }3585 { (yyval.t) = P_POSTCOMP; ;} 3586 3586 break; 3587 3587 3588 3588 case 101: 3589 3589 #line 1348 "compilers/imcc/imcc.y" 3590 { (yyval.t) = P_ANON; }3590 { (yyval.t) = P_ANON; ;} 3591 3591 break; 3592 3592 3593 3593 case 102: 3594 3594 #line 1349 "compilers/imcc/imcc.y" 3595 { (yyval.t) = P_NEED_LEX; }3595 { (yyval.t) = P_NEED_LEX; ;} 3596 3596 break; 3597 3597 3598 3598 case 110: … … 3600 3600 { 3601 3601 add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); 3602 3602 add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 3603 }3603 ;} 3604 3604 break; 3605 3605 3606 3606 case 111: 3607 3607 #line 1366 "compilers/imcc/imcc.y" 3608 3608 { 3609 3609 add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 3610 }3610 ;} 3611 3611 break; 3612 3612 3613 3613 case 112: … … 3615 3615 { 3616 3616 add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 3617 3617 IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI; 3618 }3618 ;} 3619 3619 break; 3620 3620 3621 3621 case 113: 3622 3622 #line 1375 "compilers/imcc/imcc.y" 3623 3623 { 3624 3624 add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 3625 }3625 ;} 3626 3626 break; 3627 3627 3628 3628 case 114: 3629 3629 #line 1379 "compilers/imcc/imcc.y" 3630 3630 { 3631 3631 add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S')); 3632 }3632 ;} 3633 3633 break; 3634 3634 3635 3635 case 115: … … 3637 3637 { 3638 3638 add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); 3639 3639 add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 3640 }3640 ;} 3641 3641 break; 3642 3642 3643 3643 case 116: … … 3645 3645 { 3646 3646 add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S')); 3647 3647 add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); 3648 }3648 ;} 3649 3649 break; 3650 3650 3651 3651 case 117: 3652 3652 #line 1396 "compilers/imcc/imcc.y" 3653 { (yyval.sr) = 0; }3653 { (yyval.sr) = 0; ;} 3654 3654 break; 3655 3655 3656 3656 case 118: 3657 3657 #line 1397 "compilers/imcc/imcc.y" 3658 { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }3658 { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;} 3659 3659 break; 3660 3660 3661 3661 case 119: 3662 3662 #line 1401 "compilers/imcc/imcc.y" 3663 { (yyval.sr) = (yyvsp[(2) - (2)].sr); }3663 { (yyval.sr) = (yyvsp[(2) - (2)].sr); ;} 3664 3664 break; 3665 3665 3666 3666 case 120: 3667 3667 #line 1406 "compilers/imcc/imcc.y" 3668 { (yyval.sr) = 0; }3668 { (yyval.sr) = 0; ;} 3669 3669 break; 3670 3670 3671 3671 case 121: … … 3673 3673 { 3674 3674 if ((yyvsp[(2) - (3)].sr)) 3675 3675 add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); 3676 }3676 ;} 3677 3677 break; 3678 3678 3679 3679 case 122: 3680 3680 #line 1415 "compilers/imcc/imcc.y" 3681 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }3681 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;} 3682 3682 break; 3683 3683 3684 3684 case 123: 3685 3685 #line 1416 "compilers/imcc/imcc.y" 3686 { is_def=1; }3686 { is_def=1; ;} 3687 3687 break; 3688 3688 3689 3689 case 124: … … 3698 3698 UNUSED(ignored); 3699 3699 is_def=0; 3700 3700 (yyval.sr)=0; 3701 }3701 ;} 3702 3702 break; 3703 3703 3704 3704 case 125: 3705 3705 #line 1431 "compilers/imcc/imcc.y" 3706 { (yyval.t) = 0; }3706 { (yyval.t) = 0; ;} 3707 3707 break; 3708 3708 3709 3709 case 126: 3710 3710 #line 1432 "compilers/imcc/imcc.y" 3711 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }3711 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;} 3712 3712 break; 3713 3713 3714 3714 case 127: 3715 3715 #line 1436 "compilers/imcc/imcc.y" 3716 { (yyval.t) = VT_FLAT; }3716 { (yyval.t) = VT_FLAT; ;} 3717 3717 break; 3718 3718 3719 3719 case 128: 3720 3720 #line 1437 "compilers/imcc/imcc.y" 3721 { (yyval.t) = VT_OPTIONAL; }3721 { (yyval.t) = VT_OPTIONAL; ;} 3722 3722 break; 3723 3723 3724 3724 case 129: 3725 3725 #line 1438 "compilers/imcc/imcc.y" 3726 { (yyval.t) = VT_OPT_FLAG; }3726 { (yyval.t) = VT_OPT_FLAG; ;} 3727 3727 break; 3728 3728 3729 3729 case 130: 3730 3730 #line 1439 "compilers/imcc/imcc.y" 3731 { (yyval.t) = VT_NAMED; }3731 { (yyval.t) = VT_NAMED; ;} 3732 3732 break; 3733 3733 3734 3734 case 131: 3735 3735 #line 1440 "compilers/imcc/imcc.y" 3736 { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }3736 { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;} 3737 3737 break; 3738 3738 3739 3739 case 132: 3740 3740 #line 1441 "compilers/imcc/imcc.y" 3741 { (yyval.t) = VT_UNIQUE_REG; }3741 { (yyval.t) = VT_UNIQUE_REG; ;} 3742 3742 break; 3743 3743 3744 3744 case 133: 3745 3745 #line 1446 "compilers/imcc/imcc.y" 3746 { begin_return_or_yield(interp, 0); }3746 { begin_return_or_yield(interp, 0); ;} 3747 3747 break; 3748 3748 3749 3749 case 134: 3750 3750 #line 1448 "compilers/imcc/imcc.y" 3751 { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }3751 { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;} 3752 3752 break; 3753 3753 3754 3754 case 135: … … 3756 3756 { 3757 3757 IMCC_INFO(interp)->asm_state = AsmDefault; 3758 3758 (yyval.i) = 0; 3759 }3759 ;} 3760 3760 break; 3761 3761 3762 3762 case 136: 3763 3763 #line 1457 "compilers/imcc/imcc.y" 3764 { begin_return_or_yield(interp, 1); }3764 { begin_return_or_yield(interp, 1); ;} 3765 3765 break; 3766 3766 3767 3767 case 137: 3768 3768 #line 1459 "compilers/imcc/imcc.y" 3769 { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }3769 { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;} 3770 3770 break; 3771 3771 3772 3772 case 138: 3773 3773 #line 1463 "compilers/imcc/imcc.y" 3774 { (yyval.sr) = 0; }3774 { (yyval.sr) = 0; ;} 3775 3775 break; 3776 3776 3777 3777 case 139: … … 3779 3779 { 3780 3780 if ((yyvsp[(1) - (2)].sr)) 3781 3781 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); 3782 }3782 ;} 3783 3783 break; 3784 3784 3785 3785 case 140: … … 3787 3787 { 3788 3788 if ((yyvsp[(2) - (3)].sr)) 3789 3789 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); 3790 }3790 ;} 3791 3791 break; 3792 3792 3793 3793 case 141: 3794 3794 #line 1477 "compilers/imcc/imcc.y" 3795 { (yyval.sr) = 0; }3795 { (yyval.sr) = 0; ;} 3796 3796 break; 3797 3797 3798 3798 case 142: … … 3800 3800 { 3801 3801 if ((yyvsp[(1) - (2)].sr)) 3802 3802 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); 3803 }3803 ;} 3804 3804 break; 3805 3805 3806 3806 case 143: … … 3808 3808 { 3809 3809 if ((yyvsp[(2) - (3)].sr)) 3810 3810 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); 3811 }3811 ;} 3812 3812 break; 3813 3813 3814 3814 case 144: 3815 3815 #line 1491 "compilers/imcc/imcc.y" 3816 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }3816 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;} 3817 3817 break; 3818 3818 3819 3819 case 145: 3820 3820 #line 1495 "compilers/imcc/imcc.y" 3821 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }3821 { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;} 3822 3822 break; 3823 3823 3824 3824 case 146: … … 3826 3826 { 3827 3827 if (IMCC_INFO(interp)->asm_state == AsmDefault) 3828 3828 begin_return_or_yield(interp, (yyvsp[(1) - (2)].t)); 3829 }3829 ;} 3830 3830 break; 3831 3831 3832 3832 case 147: … … 3834 3834 { 3835 3835 IMCC_INFO(interp)->asm_state = AsmDefault; 3836 3836 (yyval.t) = 0; 3837 }3837 ;} 3838 3838 break; 3839 3839 3840 3840 case 148: 3841 3841 #line 1512 "compilers/imcc/imcc.y" 3842 { (yyval.t) = 0; }3842 { (yyval.t) = 0; ;} 3843 3843 break; 3844 3844 3845 3845 case 149: 3846 3846 #line 1513 "compilers/imcc/imcc.y" 3847 { (yyval.t) = 1; }3847 { (yyval.t) = 1; ;} 3848 3848 break; 3849 3849 3850 3850 case 150: 3851 3851 #line 1517 "compilers/imcc/imcc.y" 3852 { (yyval.i) = 0; }3852 { (yyval.i) = 0; ;} 3853 3853 break; 3854 3854 3855 3855 case 151: … … 3862 3862 } 3863 3863 else 3864 3864 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (1)].sr)); 3865 }3865 ;} 3866 3866 break; 3867 3867 3868 3868 case 152: 3869 3869 #line 1529 "compilers/imcc/imcc.y" 3870 3870 { 3871 3871 add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr)); 3872 }3872 ;} 3873 3873 break; 3874 3874 3875 3875 case 153: … … 3882 3882 } 3883 3883 else 3884 3884 add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (3)].sr)); 3885 }3885 ;} 3886 3886 break; 3887 3887 3888 3888 case 154: 3889 3889 #line 1543 "compilers/imcc/imcc.y" 3890 3890 { 3891 3891 add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr)); 3892 }3892 ;} 3893 3893 break; 3894 3894 3895 3895 case 157: 3896 3896 #line 1563 "compilers/imcc/imcc.y" 3897 { clear_state(interp); }3897 { clear_state(interp); ;} 3898 3898 break; 3899 3899 3900 3900 case 158: 3901 3901 #line 1568 "compilers/imcc/imcc.y" 3902 { (yyval.i) = (yyvsp[(2) - (2)].i); }3902 { (yyval.i) = (yyvsp[(2) - (2)].i); ;} 3903 3903 break; 3904 3904 3905 3905 case 159: 3906 3906 #line 1569 "compilers/imcc/imcc.y" 3907 { (yyval.i) = 0; }3907 { (yyval.i) = 0; ;} 3908 3908 break; 3909 3909 3910 3910 case 160: 3911 3911 #line 1570 "compilers/imcc/imcc.y" 3912 { (yyval.i) = 0; }3912 { (yyval.i) = 0; ;} 3913 3913 break; 3914 3914 3915 3915 case 161: 3916 3916 #line 1571 "compilers/imcc/imcc.y" 3917 { (yyval.i) = 0; }3917 { (yyval.i) = 0; ;} 3918 3918 break; 3919 3919 3920 3920 case 162: 3921 3921 #line 1572 "compilers/imcc/imcc.y" 3922 { (yyval.i) = 0; }3922 { (yyval.i) = 0; ;} 3923 3923 break; 3924 3924 3925 3925 case 163: 3926 3926 #line 1573 "compilers/imcc/imcc.y" 3927 { (yyval.i) = (yyvsp[(1) - (1)].i); }3927 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 3928 3928 break; 3929 3929 3930 3930 case 164: 3931 3931 #line 1577 "compilers/imcc/imcc.y" 3932 { (yyval.i) = NULL; }3932 { (yyval.i) = NULL; ;} 3933 3933 break; 3934 3934 3935 3935 case 168: 3936 3936 #line 1588 "compilers/imcc/imcc.y" 3937 3937 { 3938 3938 (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s))); 3939 }3939 ;} 3940 3940 break; 3941 3941 3942 3942 case 169: 3943 3943 #line 1596 "compilers/imcc/imcc.y" 3944 { (yyval.i) = (yyvsp[(2) - (3)].i); }3944 { (yyval.i) = (yyvsp[(2) - (3)].i); ;} 3945 3945 break; 3946 3946 3947 3947 case 170: … … 3952 3952 YYABORT; 3953 3953 } 3954 3954 yyerrok; 3955 }3955 ;} 3956 3956 break; 3957 3957 3958 3958 case 171: … … 3961 3961 IdList* l = (yyvsp[(1) - (1)].idlist); 3962 3962 l->next = NULL; 3963 3963 (yyval.idlist) = l; 3964 }3964 ;} 3965 3965 break; 3966 3966 3967 3967 case 172: … … 3970 3970 IdList* l = (yyvsp[(3) - (3)].idlist); 3971 3971 l->next = (yyvsp[(1) - (3)].idlist); 3972 3972 (yyval.idlist) = l; 3973 }3973 ;} 3974 3974 break; 3975 3975 3976 3976 case 173: … … 3980 3980 l->id = (yyvsp[(1) - (2)].s); 3981 3981 l->unique_reg = (yyvsp[(2) - (2)].t); 3982 3982 (yyval.idlist) = l; 3983 }3983 ;} 3984 3984 break; 3985 3985 3986 3986 case 174: 3987 3987 #line 1634 "compilers/imcc/imcc.y" 3988 { (yyval.t) = 0; }3988 { (yyval.t) = 0; ;} 3989 3989 break; 3990 3990 3991 3991 case 175: 3992 3992 #line 1635 "compilers/imcc/imcc.y" 3993 { (yyval.t) = 1; }3993 { (yyval.t) = 1; ;} 3994 3994 break; 3995 3995 3996 3996 case 178: 3997 3997 #line 1642 "compilers/imcc/imcc.y" 3998 { is_def=1; }3998 { is_def=1; ;} 3999 3999 break; 4000 4000 4001 4001 case 179: … … 4014 4014 mem_sys_free(l1); 4015 4015 } 4016 4016 is_def=0; (yyval.i)=0; 4017 }4017 ;} 4018 4018 break; 4019 4019 4020 4020 case 180: 4021 4021 #line 1659 "compilers/imcc/imcc.y" 4022 4022 { 4023 4023 set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0; 4024 }4024 ;} 4025 4025 break; 4026 4026 4027 4027 case 181: 4028 4028 #line 1662 "compilers/imcc/imcc.y" 4029 { is_def=1; }4029 { is_def=1; ;} 4030 4030 break; 4031 4031 4032 4032 case 182: … … 4035 4035 mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0); 4036 4036 is_def=0; 4037 4037 mem_sys_free((yyvsp[(4) - (6)].s)); 4038 }4038 ;} 4039 4039 break; 4040 4040 4041 4041 case 184: 4042 4042 #line 1670 "compilers/imcc/imcc.y" 4043 { is_def=1; }4043 { is_def=1; ;} 4044 4044 break; 4045 4045 4046 4046 case 185: … … 4049 4049 mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); 4050 4050 is_def=0; 4051 4051 mem_sys_free((yyvsp[(4) - (6)].s)); 4052 }4052 ;} 4053 4053 break; 4054 4054 4055 4055 case 186: … … 4058 4058 (yyval.i) = NULL; 4059 4059 IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL; 4060 4060 IMCC_INFO(interp)->cur_call = NULL; 4061 }4061 ;} 4062 4062 break; 4063 4063 4064 4064 case 187: 4065 4065 #line 1682 "compilers/imcc/imcc.y" 4066 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }4066 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); ;} 4067 4067 break; 4068 4068 4069 4069 case 188: … … 4078 4078 IMCC_INFO(interp)->keyvec, 4079 4079 1); 4080 4080 mem_sys_free((yyvsp[(1) - (2)].s)); 4081 }4081 ;} 4082 4082 break; 4083 4083 4084 4084 case 189: 4085 4085 #line 1695 "compilers/imcc/imcc.y" 4086 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }4086 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); ;} 4087 4087 break; 4088 4088 4089 4089 case 190: 4090 4090 #line 1696 "compilers/imcc/imcc.y" 4091 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }4091 { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;} 4092 4092 break; 4093 4093 4094 4094 case 191: 4095 4095 #line 1697 "compilers/imcc/imcc.y" 4096 { (yyval.i) = 0; }4096 { (yyval.i) = 0; ;} 4097 4097 break; 4098 4098 4099 4099 case 194: 4100 4100 #line 1700 "compilers/imcc/imcc.y" 4101 { (yyval.i) = 0; }4101 { (yyval.i) = 0;;} 4102 4102 break; 4103 4103 4104 4104 case 195: 4105 4105 #line 1704 "compilers/imcc/imcc.y" 4106 { (yyval.t) = 'I'; }4106 { (yyval.t) = 'I'; ;} 4107 4107 break; 4108 4108 4109 4109 case 196: 4110 4110 #line 1705 "compilers/imcc/imcc.y" 4111 { (yyval.t) = 'N'; }4111 { (yyval.t) = 'N'; ;} 4112 4112 break; 4113 4113 4114 4114 case 197: 4115 4115 #line 1706 "compilers/imcc/imcc.y" 4116 { (yyval.t) = 'S'; }4116 { (yyval.t) = 'S'; ;} 4117 4117 break; 4118 4118 4119 4119 case 198: 4120 4120 #line 1707 "compilers/imcc/imcc.y" 4121 { (yyval.t) = 'P'; }4121 { (yyval.t) = 'P'; ;} 4122 4122 break; 4123 4123 4124 4124 case 199: … … 4131 4131 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, 4132 4132 "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s)); 4133 4133 } 4134 }4134 ;} 4135 4135 break; 4136 4136 4137 4137 case 200: 4138 4138 #line 1725 "compilers/imcc/imcc.y" 4139 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }4139 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); ;} 4140 4140 break; 4141 4141 4142 4142 case 201: 4143 4143 #line 1727 "compilers/imcc/imcc.y" 4144 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }4144 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;} 4145 4145 break; 4146 4146 4147 4147 case 202: 4148 4148 #line 1729 "compilers/imcc/imcc.y" 4149 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }4149 { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); ;} 4150 4150 break; 4151 4151 4152 4152 case 203: 4153 4153 #line 1731 "compilers/imcc/imcc.y" 4154 { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }4154 { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); ;} 4155 4155 break; 4156 4156 4157 4157 case 204: 4158 4158 #line 1733 "compilers/imcc/imcc.y" 4159 { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }4159 { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;} 4160 4160 break; 4161 4161 4162 4162 case 205: 4163 4163 #line 1738 "compilers/imcc/imcc.y" 4164 { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }4164 { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); ;} 4165 4165 break; 4166 4166 4167 4167 case 206: … … 4170 4170 add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr)); 4171 4171 IMCC_INFO(interp)->cur_call = NULL; 4172 4172 (yyval.i) = 0; 4173 }4173 ;} 4174 4174 break; 4175 4175 4176 4176 case 207: 4177 4177 #line 1747 "compilers/imcc/imcc.y" 4178 4178 { 4179 4179 (yyval.i) = IMCC_create_itcall_label(interp); 4180 }4180 ;} 4181 4181 break; 4182 4182 4183 4183 case 208: … … 4185 4185 { 4186 4186 IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr)); 4187 4187 IMCC_INFO(interp)->cur_call = NULL; 4188 }4188 ;} 4189 4189 break; 4190 4190 4191 4191 case 212: 4192 4192 #line 1759 "compilers/imcc/imcc.y" 4193 4193 { 4194 4194 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr)); 4195 }4195 ;} 4196 4196 break; 4197 4197 4198 4198 case 213: 4199 4199 #line 1766 "compilers/imcc/imcc.y" 4200 { (yyval.s) = (char *)"not"; }4200 { (yyval.s) = (char *)"not"; ;} 4201 4201 break; 4202 4202 4203 4203 case 214: 4204 4204 #line 1767 "compilers/imcc/imcc.y" 4205 { (yyval.s) = (char *)"bnot"; }4205 { (yyval.s) = (char *)"bnot"; ;} 4206 4206 break; 4207 4207 4208 4208 case 215: 4209 4209 #line 1768 "compilers/imcc/imcc.y" 4210 { (yyval.s) = (char *)"neg"; }4210 { (yyval.s) = (char *)"neg"; ;} 4211 4211 break; 4212 4212 4213 4213 case 216: 4214 4214 #line 1772 "compilers/imcc/imcc.y" 4215 { (yyval.s) = (char *)"sub"; }4215 { (yyval.s) = (char *)"sub"; ;} 4216 4216 break; 4217 4217 4218 4218 case 217: 4219 4219 #line 1773 "compilers/imcc/imcc.y" 4220 { (yyval.s) = (char *)"add"; }4220 { (yyval.s) = (char *)"add"; ;} 4221 4221 break; 4222 4222 4223 4223 case 218: 4224 4224 #line 1774 "compilers/imcc/imcc.y" 4225 { (yyval.s) = (char *)"mul"; }4225 { (yyval.s) = (char *)"mul"; ;} 4226 4226 break; 4227 4227 4228 4228 case 219: 4229 4229 #line 1775 "compilers/imcc/imcc.y" 4230 { (yyval.s) = (char *)"div"; }4230 { (yyval.s) = (char *)"div"; ;} 4231 4231 break; 4232 4232 4233 4233 case 220: 4234 4234 #line 1776 "compilers/imcc/imcc.y" 4235 { (yyval.s) = (char *)"mod"; }4235 { (yyval.s) = (char *)"mod"; ;} 4236 4236 break; 4237 4237 4238 4238 case 221: 4239 4239 #line 1777 "compilers/imcc/imcc.y" 4240 { (yyval.s) = (char *)"fdiv"; }4240 { (yyval.s) = (char *)"fdiv"; ;} 4241 4241 break; 4242 4242 4243 4243 case 222: 4244 4244 #line 1778 "compilers/imcc/imcc.y" 4245 { (yyval.s) = (char *)"pow"; }4245 { (yyval.s) = (char *)"pow"; ;} 4246 4246 break; 4247 4247 4248 4248 case 223: 4249 4249 #line 1779 "compilers/imcc/imcc.y" 4250 { (yyval.s) = (char *)"concat"; }4250 { (yyval.s) = (char *)"concat"; ;} 4251 4251 break; 4252 4252 4253 4253 case 224: 4254 4254 #line 1780 "compilers/imcc/imcc.y" 4255 { (yyval.s) = (char *)"iseq"; }4255 { (yyval.s) = (char *)"iseq"; ;} 4256 4256 break; 4257 4257 4258 4258 case 225: 4259 4259 #line 1781 "compilers/imcc/imcc.y" 4260 { (yyval.s) = (char *)"isne"; }4260 { (yyval.s) = (char *)"isne"; ;} 4261 4261 break; 4262 4262 4263 4263 case 226: 4264 4264 #line 1782 "compilers/imcc/imcc.y" 4265 { (yyval.s) = (char *)"isgt"; }4265 { (yyval.s) = (char *)"isgt"; ;} 4266 4266 break; 4267 4267 4268 4268 case 227: 4269 4269 #line 1783 "compilers/imcc/imcc.y" 4270 { (yyval.s) = (char *)"isge"; }4270 { (yyval.s) = (char *)"isge"; ;} 4271 4271 break; 4272 4272 4273 4273 case 228: 4274 4274 #line 1784 "compilers/imcc/imcc.y" 4275 { (yyval.s) = (char *)"islt"; }4275 { (yyval.s) = (char *)"islt"; ;} 4276 4276 break; 4277 4277 4278 4278 case 229: 4279 4279 #line 1785 "compilers/imcc/imcc.y" 4280 { (yyval.s) = (char *)"isle"; }4280 { (yyval.s) = (char *)"isle"; ;} 4281 4281 break; 4282 4282 4283 4283 case 230: 4284 4284 #line 1786 "compilers/imcc/imcc.y" 4285 { (yyval.s) = (char *)"shl"; }4285 { (yyval.s) = (char *)"shl"; ;} 4286 4286 break; 4287 4287 4288 4288 case 231: 4289 4289 #line 1787 "compilers/imcc/imcc.y" 4290 { (yyval.s) = (char *)"shr"; }4290 { (yyval.s) = (char *)"shr"; ;} 4291 4291 break; 4292 4292 4293 4293 case 232: 4294 4294 #line 1788 "compilers/imcc/imcc.y" 4295 { (yyval.s) = (char *)"lsr"; }4295 { (yyval.s) = (char *)"lsr"; ;} 4296 4296 break; 4297 4297 4298 4298 case 233: 4299 4299 #line 1789 "compilers/imcc/imcc.y" 4300 { (yyval.s) = (char *)"and"; }4300 { (yyval.s) = (char *)"and"; ;} 4301 4301 break; 4302 4302 4303 4303 case 234: 4304 4304 #line 1790 "compilers/imcc/imcc.y" 4305 { (yyval.s) = (char *)"or"; }4305 { (yyval.s) = (char *)"or"; ;} 4306 4306 break; 4307 4307 4308 4308 case 235: 4309 4309 #line 1791 "compilers/imcc/imcc.y" 4310 { (yyval.s) = (char *)"xor"; }4310 { (yyval.s) = (char *)"xor"; ;} 4311 4311 break; 4312 4312 4313 4313 case 236: 4314 4314 #line 1792 "compilers/imcc/imcc.y" 4315 { (yyval.s) = (char *)"band"; }4315 { (yyval.s) = (char *)"band"; ;} 4316 4316 break; 4317 4317 4318 4318 case 237: 4319 4319 #line 1793 "compilers/imcc/imcc.y" 4320 { (yyval.s) = (char *)"bor"; }4320 { (yyval.s) = (char *)"bor"; ;} 4321 4321 break; 4322 4322 4323 4323 case 238: 4324 4324 #line 1794 "compilers/imcc/imcc.y" 4325 { (yyval.s) = (char *)"bxor"; }4325 { (yyval.s) = (char *)"bxor"; ;} 4326 4326 break; 4327 4327 4328 4328 case 239: … … 4331 4331 (yyval.i) = IMCC_create_itcall_label(interp); 4332 4332 (yyval.i)->type &= ~ITCALL; 4333 4333 (yyval.i)->type |= ITRESULT; 4334 }4334 ;} 4335 4335 break; 4336 4336 4337 4337 case 240: 4338 4338 #line 1805 "compilers/imcc/imcc.y" 4339 { (yyval.i) = 0; }4339 { (yyval.i) = 0; ;} 4340 4340 break; 4341 4341 4342 4342 case 241: 4343 4343 #line 1812 "compilers/imcc/imcc.y" 4344 4344 { 4345 4345 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); 4346 }4346 ;} 4347 4347 break; 4348 4348 4349 4349 case 242: 4350 4350 #line 1818 "compilers/imcc/imcc.y" 4351 { (yyval.s) = (char *)"add"; }4351 { (yyval.s) = (char *)"add"; ;} 4352 4352 break; 4353 4353 4354 4354 case 243: 4355 4355 #line 1819 "compilers/imcc/imcc.y" 4356 { (yyval.s) = (char *)"sub"; }4356 { (yyval.s) = (char *)"sub"; ;} 4357 4357 break; 4358 4358 4359 4359 case 244: 4360 4360 #line 1820 "compilers/imcc/imcc.y" 4361 { (yyval.s) = (char *)"mul"; }4361 { (yyval.s) = (char *)"mul"; ;} 4362 4362 break; 4363 4363 4364 4364 case 245: 4365 4365 #line 1821 "compilers/imcc/imcc.y" 4366 { (yyval.s) = (char *)"div"; }4366 { (yyval.s) = (char *)"div"; ;} 4367 4367 break; 4368 4368 4369 4369 case 246: 4370 4370 #line 1822 "compilers/imcc/imcc.y" 4371 { (yyval.s) = (char *)"mod"; }4371 { (yyval.s) = (char *)"mod"; ;} 4372 4372 break; 4373 4373 4374 4374 case 247: 4375 4375 #line 1823 "compilers/imcc/imcc.y" 4376 { (yyval.s) = (char *)"fdiv"; }4376 { (yyval.s) = (char *)"fdiv"; ;} 4377 4377 break; 4378 4378 4379 4379 case 248: 4380 4380 #line 1824 "compilers/imcc/imcc.y" 4381 { (yyval.s) = (char *)"concat"; }4381 { (yyval.s) = (char *)"concat"; ;} 4382 4382 break; 4383 4383 4384 4384 case 249: 4385 4385 #line 1825 "compilers/imcc/imcc.y" 4386 { (yyval.s) = (char *)"band"; }4386 { (yyval.s) = (char *)"band"; ;} 4387 4387 break; 4388 4388 4389 4389 case 250: 4390 4390 #line 1826 "compilers/imcc/imcc.y" 4391 { (yyval.s) = (char *)"bor"; }4391 { (yyval.s) = (char *)"bor"; ;} 4392 4392 break; 4393 4393 4394 4394 case 251: 4395 4395 #line 1827 "compilers/imcc/imcc.y" 4396 { (yyval.s) = (char *)"bxor"; }4396 { (yyval.s) = (char *)"bxor"; ;} 4397 4397 break; 4398 4398 4399 4399 case 252: 4400 4400 #line 1828 "compilers/imcc/imcc.y" 4401 { (yyval.s) = (char *)"shr"; }4401 { (yyval.s) = (char *)"shr"; ;} 4402 4402 break; 4403 4403 4404 4404 case 253: 4405 4405 #line 1829 "compilers/imcc/imcc.y" 4406 { (yyval.s) = (char *)"shl"; }4406 { (yyval.s) = (char *)"shl"; ;} 4407 4407 break; 4408 4408 4409 4409 case 254: 4410 4410 #line 1830 "compilers/imcc/imcc.y" 4411 { (yyval.s) = (char *)"lsr"; }4411 { (yyval.s) = (char *)"lsr"; ;} 4412 4412 break; 4413 4413 4414 4414 case 255: … … 4419 4419 IMCC_INFO(interp) -> nargs, 4420 4420 IMCC_INFO(interp) -> keyvec, 1); 4421 4421 mem_sys_free((yyvsp[(3) - (4)].s)); 4422 }4422 ;} 4423 4423 break; 4424 4424 4425 4425 case 256: 4426 4426 #line 1846 "compilers/imcc/imcc.y" 4427 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4427 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4428 4428 break; 4429 4429 4430 4430 case 257: 4431 4431 #line 1847 "compilers/imcc/imcc.y" 4432 { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4432 { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4433 4433 break; 4434 4434 4435 4435 case 258: 4436 4436 #line 1848 "compilers/imcc/imcc.y" 4437 { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4437 { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4438 4438 break; 4439 4439 4440 4440 case 259: … … 4443 4443 (yyval.sr) = (yyvsp[(1) - (1)].sr); 4444 4444 if ((yyvsp[(1) - (1)].sr)->set != 'P') 4445 4445 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "Sub isn't a PMC"); 4446 }4446 ;} 4447 4447 break; 4448 4448 4449 4449 case 260: … … 4460 4460 4461 4461 IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); 4462 4462 (yyval.sr) = (yyvsp[(3) - (3)].sr); 4463 }4463 ;} 4464 4464 break; 4465 4465 4466 4466 case 261: … … 4469 4469 IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); 4470 4470 (yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S'); 4471 4471 mem_sys_free((yyvsp[(3) - (3)].s)); 4472 }4472 ;} 4473 4473 break; 4474 4474 4475 4475 case 262: 4476 4476 #line 1875 "compilers/imcc/imcc.y" 4477 { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }4477 { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); ;} 4478 4478 break; 4479 4479 4480 4480 case 263: … … 4482 4482 { 4483 4483 (yyval.i) = IMCC_create_itcall_label(interp); 4484 4484 IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr)); 4485 }4485 ;} 4486 4486 break; 4487 4487 4488 4488 case 264: 4489 4489 #line 1885 "compilers/imcc/imcc.y" 4490 { (yyval.i) = (yyvsp[(2) - (5)].i); }4490 { (yyval.i) = (yyvsp[(2) - (5)].i); ;} 4491 4491 break; 4492 4492 4493 4493 case 265: 4494 4494 #line 1889 "compilers/imcc/imcc.y" 4495 { (yyval.sr) = 0; }4495 { (yyval.sr) = 0; ;} 4496 4496 break; 4497 4497 4498 4498 case 266: … … 4505 4505 } 4506 4506 else 4507 4507 add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr)); 4508 }4508 ;} 4509 4509 break; 4510 4510 4511 4511 case 267: … … 4518 4518 } 4519 4519 else 4520 4520 add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr)); 4521 }4521 ;} 4522 4522 break; 4523 4523 4524 4524 case 268: … … 4527 4527 (yyval.sr) = 0; 4528 4528 add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr)); 4529 4529 mem_sys_free((yyvsp[(3) - (5)].s)); 4530 }4530 ;} 4531 4531 break; 4532 4532 4533 4533 case 269: … … 4536 4536 (yyval.sr) = 0; 4537 4537 add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr)); 4538 4538 mem_sys_free((yyvsp[(1) - (3)].s)); 4539 }4539 ;} 4540 4540 break; 4541 4541 4542 4542 case 270: 4543 4543 #line 1925 "compilers/imcc/imcc.y" 4544 { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }4544 { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;} 4545 4545 break; 4546 4546 4547 4547 case 271: 4548 4548 #line 1929 "compilers/imcc/imcc.y" 4549 { (yyval.t) = 0; }4549 { (yyval.t) = 0; ;} 4550 4550 break; 4551 4551 4552 4552 case 272: 4553 4553 #line 1930 "compilers/imcc/imcc.y" 4554 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }4554 { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;} 4555 4555 break; 4556 4556 4557 4557 case 273: 4558 4558 #line 1934 "compilers/imcc/imcc.y" 4559 { (yyval.t) = VT_FLAT; }4559 { (yyval.t) = VT_FLAT; ;} 4560 4560 break; 4561 4561 4562 4562 case 274: 4563 4563 #line 1935 "compilers/imcc/imcc.y" 4564 { (yyval.t) = VT_NAMED; }4564 { (yyval.t) = VT_NAMED; ;} 4565 4565 break; 4566 4566 4567 4567 case 275: 4568 4568 #line 1938 "compilers/imcc/imcc.y" 4569 { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }4569 { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;} 4570 4570 break; 4571 4571 4572 4572 case 276: 4573 4573 #line 1942 "compilers/imcc/imcc.y" 4574 { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }4574 { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;} 4575 4575 break; 4576 4576 4577 4577 case 277: … … 4584 4584 } 4585 4585 else 4586 4586 add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr)); 4587 }4587 ;} 4588 4588 break; 4589 4589 4590 4590 case 278: … … 4592 4592 { 4593 4593 add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr)); 4594 4594 mem_sys_free((yyvsp[(3) - (5)].s)); 4595 }4595 ;} 4596 4596 break; 4597 4597 4598 4598 case 279: … … 4605 4605 } 4606 4606 else 4607 4607 add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr)); 4608 }4608 ;} 4609 4609 break; 4610 4610 4611 4611 case 280: … … 4613 4613 { 4614 4614 add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr)); 4615 4615 mem_sys_free((yyvsp[(1) - (3)].s)); 4616 }4616 ;} 4617 4617 break; 4618 4618 4619 4619 case 281: 4620 4620 #line 1976 "compilers/imcc/imcc.y" 4621 { (yyval.sr) = 0; }4621 { (yyval.sr) = 0; ;} 4622 4622 break; 4623 4623 4624 4624 case 282: 4625 4625 #line 1980 "compilers/imcc/imcc.y" 4626 { (yyval.i) = (yyvsp[(1) - (1)].i); }4626 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 4627 4627 break; 4628 4628 4629 4629 case 283: 4630 4630 #line 1981 "compilers/imcc/imcc.y" 4631 { (yyval.i) = (yyvsp[(1) - (1)].i); }4631 { (yyval.i) = (yyvsp[(1) - (1)].i); ;} 4632 4632 break; 4633 4633 4634 4634 case 284: 4635 4635 #line 1986 "compilers/imcc/imcc.y" 4636 4636 { 4637 4637 (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); 4638 }4638 ;} 4639 4639 break; 4640 4640 4641 4641 case 285: 4642 4642 #line 1990 "compilers/imcc/imcc.y" 4643 4643 { 4644 4644 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); 4645 }4645 ;} 4646 4646 break; 4647 4647 4648 4648 case 286: 4649 4649 #line 1994 "compilers/imcc/imcc.y" 4650 4650 { 4651 4651 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); 4652 }4652 ;} 4653 4653 break; 4654 4654 4655 4655 case 287: 4656 4656 #line 2001 "compilers/imcc/imcc.y" 4657 4657 { 4658 4658 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); 4659 }4659 ;} 4660 4660 break; 4661 4661 4662 4662 case 288: 4663 4663 #line 2005 "compilers/imcc/imcc.y" 4664 4664 { 4665 4665 (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); 4666 }4666 ;} 4667 4667 break; 4668 4668 4669 4669 case 289: 4670 4670 #line 2009 "compilers/imcc/imcc.y" 4671 4671 { 4672 4672 (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); 4673 }4673 ;} 4674 4674 break; 4675 4675 4676 4676 case 290: 4677 4677 #line 2015 "compilers/imcc/imcc.y" 4678 { (yyval.t) = 0; }4678 { (yyval.t) = 0; ;} 4679 4679 break; 4680 4680 4681 4681 case 291: 4682 4682 #line 2016 "compilers/imcc/imcc.y" 4683 { (yyval.t) = 0; }4683 { (yyval.t) = 0; ;} 4684 4684 break; 4685 4685 4686 4686 case 292: 4687 4687 #line 2020 "compilers/imcc/imcc.y" 4688 { (yyval.s) = (char *)"eq"; }4688 { (yyval.s) = (char *)"eq"; ;} 4689 4689 break; 4690 4690 4691 4691 case 293: 4692 4692 #line 2021 "compilers/imcc/imcc.y" 4693 { (yyval.s) = (char *)"ne"; }4693 { (yyval.s) = (char *)"ne"; ;} 4694 4694 break; 4695 4695 4696 4696 case 294: 4697 4697 #line 2022 "compilers/imcc/imcc.y" 4698 { (yyval.s) = (char *)"gt"; }4698 { (yyval.s) = (char *)"gt"; ;} 4699 4699 break; 4700 4700 4701 4701 case 295: 4702 4702 #line 2023 "compilers/imcc/imcc.y" 4703 { (yyval.s) = (char *)"ge"; }4703 { (yyval.s) = (char *)"ge"; ;} 4704 4704 break; 4705 4705 4706 4706 case 296: 4707 4707 #line 2024 "compilers/imcc/imcc.y" 4708 { (yyval.s) = (char *)"lt"; }4708 { (yyval.s) = (char *)"lt"; ;} 4709 4709 break; 4710 4710 4711 4711 case 297: 4712 4712 #line 2025 "compilers/imcc/imcc.y" 4713 { (yyval.s) = (char *)"le"; }4713 { (yyval.s) = (char *)"le"; ;} 4714 4714 break; 4715 4715 4716 4716 case 300: 4717 4717 #line 2034 "compilers/imcc/imcc.y" 4718 { (yyval.sr) = NULL; }4718 { (yyval.sr) = NULL; ;} 4719 4719 break; 4720 4720 4721 4721 case 301: 4722 4722 #line 2035 "compilers/imcc/imcc.y" 4723 { (yyval.sr) = (yyvsp[(1) - (1)].sr); }4723 { (yyval.sr) = (yyvsp[(1) - (1)].sr); ;} 4724 4724 break; 4725 4725 4726 4726 case 302: 4727 4727 #line 2039 "compilers/imcc/imcc.y" 4728 { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }4728 { (yyval.sr) = IMCC_INFO(interp)->regs[0]; ;} 4729 4729 break; 4730 4730 4731 4731 case 304: 4732 4732 #line 2044 "compilers/imcc/imcc.y" 4733 { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }4733 { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); ;} 4734 4734 break; 4735 4735 4736 4736 case 305: … … 4740 4740 IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs); 4741 4741 IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(3) - (4)].sr); 4742 4742 (yyval.sr) = (yyvsp[(1) - (4)].sr); 4743 }4743 ;} 4744 4744 break; 4745 4745 4746 4746 case 306: … … 4748 4748 { 4749 4749 IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr); 4750 4750 (yyval.sr) = (yyvsp[(2) - (3)].sr); 4751 }4751 ;} 4752 4752 break; 4753 4753 4754 4754 case 308: 4755 4755 #line 2060 "compilers/imcc/imcc.y" 4756 { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4756 { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4757 4757 break; 4758 4758 4759 4759 case 309: 4760 4760 #line 2061 "compilers/imcc/imcc.y" 4761 { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4761 { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4762 4762 break; 4763 4763 4764 4764 case 310: 4765 4765 #line 2065 "compilers/imcc/imcc.y" 4766 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4766 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4767 4767 break; 4768 4768 4769 4769 case 311: 4770 4770 #line 2066 "compilers/imcc/imcc.y" 4771 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4771 { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4772 4772 break; 4773 4773 4774 4774 case 312: 4775 4775 #line 2070 "compilers/imcc/imcc.y" 4776 { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4776 { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4777 4777 break; 4778 4778 4779 4779 case 313: 4780 4780 #line 2071 "compilers/imcc/imcc.y" 4781 { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4781 { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4782 4782 break; 4783 4783 4784 4784 case 318: … … 4786 4786 { 4787 4787 IMCC_INFO(interp)->nkeys = 0; 4788 4788 IMCC_INFO(interp)->in_slice = 0; 4789 }4789 ;} 4790 4790 break; 4791 4791 4792 4792 case 319: … … 4795 4795 (yyval.sr) = link_keys(interp, 4796 4796 IMCC_INFO(interp)->nkeys, 4797 4797 IMCC_INFO(interp)->keys, 0); 4798 }4798 ;} 4799 4799 break; 4800 4800 4801 4801 case 320: … … 4803 4803 { 4804 4804 IMCC_INFO(interp)->nkeys = 0; 4805 4805 IMCC_INFO(interp)->in_slice = 0; 4806 }4806 ;} 4807 4807 break; 4808 4808 4809 4809 case 321: … … 4812 4812 (yyval.sr) = link_keys(interp, 4813 4813 IMCC_INFO(interp)->nkeys, 4814 4814 IMCC_INFO(interp)->keys, 1); 4815 }4815 ;} 4816 4816 break; 4817 4817 4818 4818 case 322: 4819 4819 #line 2111 "compilers/imcc/imcc.y" 4820 { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }4820 { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); ;} 4821 4821 break; 4822 4822 4823 4823 case 323: … … 4825 4825 { 4826 4826 IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr); 4827 4827 (yyval.sr) = IMCC_INFO(interp)->keys[0]; 4828 }4828 ;} 4829 4829 break; 4830 4830 4831 4831 case 324: … … 4834 4834 if (IMCC_INFO(interp)->in_slice) 4835 4835 (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE; 4836 4836 (yyval.sr) = (yyvsp[(1) - (1)].sr); 4837 }4837 ;} 4838 4838 break; 4839 4839 4840 4840 case 325: 4841 4841 #line 2129 "compilers/imcc/imcc.y" 4842 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }4842 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); ;} 4843 4843 break; 4844 4844 4845 4845 case 326: 4846 4846 #line 2130 "compilers/imcc/imcc.y" 4847 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }4847 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); ;} 4848 4848 break; 4849 4849 4850 4850 case 327: 4851 4851 #line 2131 "compilers/imcc/imcc.y" 4852 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }4852 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;} 4853 4853 break; 4854 4854 4855 4855 case 328: 4856 4856 #line 2132 "compilers/imcc/imcc.y" 4857 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }4857 { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); ;} 4858 4858 break; 4859 4859 4860 4860 case 329: 4861 4861 #line 2133 "compilers/imcc/imcc.y" 4862 { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }4862 { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4863 4863 break; 4864 4864 4865 4865 case 330: 4866 4866 #line 2137 "compilers/imcc/imcc.y" 4867 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }4867 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4868 4868 break; 4869 4869 4870 4870 case 331: 4871 4871 #line 2138 "compilers/imcc/imcc.y" 4872 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }4872 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4873 4873 break; 4874 4874 4875 4875 case 332: 4876 4876 #line 2139 "compilers/imcc/imcc.y" 4877 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }4877 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4878 4878 break; 4879 4879 4880 4880 case 333: 4881 4881 #line 2140 "compilers/imcc/imcc.y" 4882 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }4882 { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); ;} 4883 4883 break; 4884 4884 4885 4885 -
compilers/imcc/pcc.c
387 387 SymReg *regs[2]; 388 388 389 389 /* if this sub is a method, unshift 'self' as first param */ 390 if ((unit->type & IMC_HAS_SELF) || (sub->pcc_sub->pragma & P_METHOD)) {390 if ((unit->type & IMC_HAS_SELF) || (sub->pcc_sub->pragma & (P_METHOD | P_VTABLE))) { 391 391 SymReg *self = get_sym(interp, "self"); 392 392 if (!self) { 393 393 self = mk_symreg(interp, "self", 'P'); -
compilers/imcc/symreg.h
443 443 typedef enum { 444 444 P_NONE = 0x00, /* 0<<0 */ 445 445 P_NEED_LEX = 0x01, /* 1<<0 */ 446 /* P_XXXX = 0x02, *//* 1<<1 */446 P_VTABLE = 0x02, /* 1<<1 */ 447 447 P_METHOD = 0x04, /* 1<<2 */ 448 448 P_ANON = SUB_FLAG_PF_ANON, /* 1<<3 0x8 - private3 */ 449 449 P_MAIN = SUB_FLAG_PF_MAIN, /* 1<<4 0x10 - private4 */
