00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 static OPCODE Intconst_Opcode [4] = {
00036 OPC_I4INTCONST, OPC_U4INTCONST, OPC_I8INTCONST, OPC_U8INTCONST
00037 };
00038
00039 #define ERR_OP -1
00040
00041 #define I4_OP 0
00042 #define U4_OP 1
00043 #define I8_OP 2
00044 #define U8_OP 3
00045
00046 #define F4_OP 0
00047 #define F8_OP 1
00048 #define FQ_OP 2
00049
00050 #define C4_OP 0
00051 #define C8_OP 1
00052 #define CQ_OP 2
00053
00054
00055 static const mINT8 op_form [MTYPE_LAST + 1] = {
00056 ERR_OP,
00057 ERR_OP,
00058 I4_OP,
00059 I4_OP,
00060 I4_OP,
00061 I8_OP,
00062 U4_OP,
00063 U4_OP,
00064 U4_OP,
00065 U8_OP,
00066 F4_OP,
00067 F8_OP,
00068 ERR_OP,
00069 ERR_OP,
00070 ERR_OP,
00071 FQ_OP,
00072 ERR_OP,
00073 C4_OP,
00074 C8_OP,
00075 CQ_OP,
00076 ERR_OP,
00077 };
00078
00079
00080 static const OPCODE Const_Opcode [MTYPE_LAST + 1] = {
00081 OPCODE_UNKNOWN,
00082 OPCODE_UNKNOWN,
00083 OPC_I4INTCONST,
00084 OPC_I4INTCONST,
00085 OPC_I4INTCONST,
00086 OPC_I8INTCONST,
00087 OPC_U4INTCONST,
00088 OPC_U4INTCONST,
00089 OPC_U4INTCONST,
00090 OPC_U8INTCONST,
00091 OPC_F4CONST,
00092 OPC_F8CONST,
00093 OPCODE_UNKNOWN,
00094 OPCODE_UNKNOWN,
00095 OPCODE_UNKNOWN,
00096 OPC_FQCONST,
00097 OPCODE_UNKNOWN,
00098 OPC_C4CONST,
00099 OPC_C8CONST,
00100 OPC_CQCONST,
00101 OPCODE_UNKNOWN,
00102 };
00103
00104
00105
00106 static const ST_CLASS object_map[Name+1] = {
00107 CLASS_UNK,
00108 CLASS_VAR,
00109 CLASS_VAR,
00110 CLASS_VAR,
00111 CLASS_VAR,
00112 CLASS_VAR,
00113 CLASS_VAR,
00114 CLASS_UNK,
00115 CLASS_UNK,
00116 CLASS_UNK,
00117 CLASS_UNK,
00118 CLASS_UNK,
00119 CLASS_VAR,
00120 CLASS_VAR,
00121 CLASS_VAR,
00122 CLASS_UNK,
00123 CLASS_VAR,
00124 CLASS_VAR,
00125 CLASS_NAME,
00126 } ;
00127
00128
00129
00130
00131
00132
00133
00134 #define SCLASS_BASED SCLASS_COUNT
00135
00136
00137 static const ST_SCLASS segment_map[Seg_Coment+1] = {
00138 SCLASS_UNKNOWN,
00139 SCLASS_FSTATIC,
00140 SCLASS_AUTO,
00141 SCLASS_FORMAL,
00142 SCLASS_COMMON,
00143 SCLASS_EXTERN,
00144 SCLASS_DGLOBAL,
00145 SCLASS_UNKNOWN,
00146 SCLASS_UGLOBAL,
00147 SCLASS_UNKNOWN,
00148 SCLASS_UNKNOWN,
00149 SCLASS_PSTATIC,
00150 SCLASS_BASED,
00151 SCLASS_UNKNOWN,
00152 SCLASS_UNKNOWN,
00153 SCLASS_FSTATIC,
00154 SCLASS_UNKNOWN,
00155 SCLASS_UNKNOWN,
00156 SCLASS_UNKNOWN,
00157 SCLASS_UNKNOWN,
00158 SCLASS_PSTATIC,
00159 SCLASS_AUTO,
00160 SCLASS_FORMAL,
00161 SCLASS_AUTO,
00162 SCLASS_UNKNOWN,
00163 SCLASS_UNKNOWN,
00164 SCLASS_MODULE,
00165 SCLASS_COMMENT,
00166 } ;
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 ST * Procedure_ST ;
00189 static ST * Alttemp_ST ;
00190 static ST * Altbase_ST ;
00191 ST * Altaddress_ST ;
00192 static ST * Main_ST;
00193 static BOOL Has_nested_proc ;
00194
00195 #define NOT_IN_PU (CURRENT_SYMTAB == GLOBAL_SYMTAB)
00196
00197
00198
00199
00200 static INT32 entry_point_count = 0 ;
00201
00202
00203
00204
00205
00206
00207
00208
00209 static LIST * Top_Text = NULL ;
00210
00211
00212
00213
00214
00215
00216 static LIST * Namelist ;
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227 static STB_pkt *STB_list ;
00228
00229
00230
00231
00232
00233
00234
00235
00236 #define HOST_ST_SIZE_CHANGE 512
00237 static INT32 Host_Current_Size = 0;
00238 static ST ** Host_STs = NULL;
00239 static INT32 Host_Top = -1 ;
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252 static LIST * Equivalences;
00253 static LIST * Hosted_Equivalences;
00254 static LIST * Commons_Already_Seen;
00255
00256
00257
00258
00259 BOOL FE_Partial_Split = TRUE ;
00260
00261
00262
00263
00264
00265
00266
00267 static INT32 FE_Full_Split_Array_Limit = 16384;
00268
00269 static struct _full_split_st {
00270 INT64 rel_offset;
00271 int delta;
00272 } FE_Full_Split_Limits [] = {
00273
00274 16 * 1024, 819,
00275 512 * 1024, 26214
00276 };
00277
00278 typedef struct {
00279 ST * fp ;
00280 INT32 prev_array_index;
00281 INT64 first_offset;
00282 INT64 last_offset;
00283 } FIELD_ITEM, *FIELDS;
00284
00285
00286 typedef struct renamings {
00287 const char * oldname;
00288 char * newname;
00289 } INTRIN_NAME;
00290
00291 #define NUM_INAMEMAP sizeof(Iname_Map)/sizeof(INTRIN_NAME)
00292 static const INTRIN_NAME Iname_Map[] =
00293 {
00294 {"AMAX0","AMAX"},
00295 {"AMAX1","AMAX"},
00296 {"AMIN0","AMIN"},
00297 {"AMIN1","AMIN"},
00298 {"ATAN2D","ATAN2"},
00299 {"DATAN2D","DATAN2"},
00300 {"DMAX1","DMAX"},
00301 {"DMIN1","DMIN"},
00302 {"MAX0","MAX"},
00303 {"MAX1","MAX"},
00304 {"MIN1","MIN"},
00305 {"_ALL","ALL"},
00306 {"_ALLOCATED","ALLOCATED"},
00307 {"_ALL_1","ALL"},
00308 {"_ALL_2","ALL"},
00309 {"_ALL_4","ALL"},
00310 {"_ANY","ANY"},
00311 {"_ANY_1","ANY"},
00312 {"_ANY_2","ANY"},
00313 {"_ANY_4","ANY"},
00314 {"_ASSOCIATED_4","ASSOCIATED"},
00315 {"_ASSOCIATED_8","ASSOCIATED"},
00316 {"_CLOCK","CLOCK"},
00317 {"_COUNT","COUNT"},
00318 {"_COUNT_1","COUNT"},
00319 {"_COUNT_2","COUNT"},
00320 {"_COUNT_4","COUNT"},
00321 {"_CPU_TIME_16","CPU_TIME"},
00322 {"_CPU_TIME_4","CPU_TIME"},
00323 {"_CPU_TIME_8","CPU_TIME"},
00324 {"_CSHIFT","CSHIFT"},
00325 {"_DATE","DATE"},
00326 {"_DATE_AND_TIME","DATE_AND_TIME"},
00327 {"_DIM_","DIM"},
00328 {"_DOT_C4C","DOT_PRODUCT"},
00329 {"_DOT_C4C4","DOT_PRODUCT"},
00330 {"_DOT_C4D","DOT_PRODUCT"},
00331 {"_DOT_C4I1","DOT_PRODUCT"},
00332 {"_DOT_C4I2","DOT_PRODUCT"},
00333 {"_DOT_C4I4","DOT_PRODUCT"},
00334 {"_DOT_C4J","DOT_PRODUCT"},
00335 {"_DOT_C4S","DOT_PRODUCT"},
00336 {"_DOT_C4S4","DOT_PRODUCT"},
00337 {"_DOT_C4Z","DOT_PRODUCT"},
00338 {"_DOT_CC","DOT_PRODUCT"},
00339 {"_DOT_CC4","DOT_PRODUCT"},
00340 {"_DOT_CD","DOT_PRODUCT"},
00341 {"_DOT_CI1","DOT_PRODUCT"},
00342 {"_DOT_CI2","DOT_PRODUCT"},
00343 {"_DOT_CI4","DOT_PRODUCT"},
00344 {"_DOT_CJ","DOT_PRODUCT"},
00345 {"_DOT_CS","DOT_PRODUCT"},
00346 {"_DOT_CS4","DOT_PRODUCT"},
00347 {"_DOT_CZ","DOT_PRODUCT"},
00348 {"_DOT_DC","DOT_PRODUCT"},
00349 {"_DOT_DC4","DOT_PRODUCT"},
00350 {"_DOT_DD","DOT_PRODUCT"},
00351 {"_DOT_DI1","DOT_PRODUCT"},
00352 {"_DOT_DI2","DOT_PRODUCT"},
00353 {"_DOT_DI4","DOT_PRODUCT"},
00354 {"_DOT_DJ","DOT_PRODUCT"},
00355 {"_DOT_DS","DOT_PRODUCT"},
00356 {"_DOT_DS4","DOT_PRODUCT"},
00357 {"_DOT_DZ","DOT_PRODUCT"},
00358 {"_DOT_I1C","DOT_PRODUCT"},
00359 {"_DOT_I1C4","DOT_PRODUCT"},
00360 {"_DOT_I1D","DOT_PRODUCT"},
00361 {"_DOT_I1I1","DOT_PRODUCT"},
00362 {"_DOT_I1I2","DOT_PRODUCT"},
00363 {"_DOT_I1I4","DOT_PRODUCT"},
00364 {"_DOT_I1J","DOT_PRODUCT"},
00365 {"_DOT_I1S","DOT_PRODUCT"},
00366 {"_DOT_I1S4","DOT_PRODUCT"},
00367 {"_DOT_I1Z","DOT_PRODUCT"},
00368 {"_DOT_I2C","DOT_PRODUCT"},
00369 {"_DOT_I2C4","DOT_PRODUCT"},
00370 {"_DOT_I2D","DOT_PRODUCT"},
00371 {"_DOT_I2I1","DOT_PRODUCT"},
00372 {"_DOT_I2I2","DOT_PRODUCT"},
00373 {"_DOT_I2I4","DOT_PRODUCT"},
00374 {"_DOT_I2J","DOT_PRODUCT"},
00375 {"_DOT_I2S","DOT_PRODUCT"},
00376 {"_DOT_I2S4","DOT_PRODUCT"},
00377 {"_DOT_I2Z","DOT_PRODUCT"},
00378 {"_DOT_I4C","DOT_PRODUCT"},
00379 {"_DOT_I4C4","DOT_PRODUCT"},
00380 {"_DOT_I4D","DOT_PRODUCT"},
00381 {"_DOT_I4I1","DOT_PRODUCT"},
00382 {"_DOT_I4I2","DOT_PRODUCT"},
00383 {"_DOT_I4I4","DOT_PRODUCT"},
00384 {"_DOT_I4J","DOT_PRODUCT"},
00385 {"_DOT_I4S","DOT_PRODUCT"},
00386 {"_DOT_I4S4","DOT_PRODUCT"},
00387 {"_DOT_I4Z","DOT_PRODUCT"},
00388 {"_DOT_JC","DOT_PRODUCT"},
00389 {"_DOT_JC4","DOT_PRODUCT"},
00390 {"_DOT_JD","DOT_PRODUCT"},
00391 {"_DOT_JI1","DOT_PRODUCT"},
00392 {"_DOT_JI2","DOT_PRODUCT"},
00393 {"_DOT_JI4","DOT_PRODUCT"},
00394 {"_DOT_JJ","DOT_PRODUCT"},
00395 {"_DOT_JS","DOT_PRODUCT"},
00396 {"_DOT_JS4","DOT_PRODUCT"},
00397 {"_DOT_JZ","DOT_PRODUCT"},
00398 {"_DOT_L1L","DOT_PRODUCT"},
00399 {"_DOT_L1L1","DOT_PRODUCT"},
00400 {"_DOT_L1L2","DOT_PRODUCT"},
00401 {"_DOT_L1L4","DOT_PRODUCT"},
00402 {"_DOT_L2L","DOT_PRODUCT"},
00403 {"_DOT_L2L1","DOT_PRODUCT"},
00404 {"_DOT_L2L2","DOT_PRODUCT"},
00405 {"_DOT_L2L4","DOT_PRODUCT"},
00406 {"_DOT_L4L","DOT_PRODUCT"},
00407 {"_DOT_L4L1","DOT_PRODUCT"},
00408 {"_DOT_L4L2","DOT_PRODUCT"},
00409 {"_DOT_L4L4","DOT_PRODUCT"},
00410 {"_DOT_LL","DOT_PRODUCT"},
00411 {"_DOT_LL1","DOT_PRODUCT"},
00412 {"_DOT_LL2","DOT_PRODUCT"},
00413 {"_DOT_LL4","DOT_PRODUCT"},
00414 {"_DOT_S4C","DOT_PRODUCT"},
00415 {"_DOT_S4C4","DOT_PRODUCT"},
00416 {"_DOT_S4D","DOT_PRODUCT"},
00417 {"_DOT_S4I1","DOT_PRODUCT"},
00418 {"_DOT_S4I2","DOT_PRODUCT"},
00419 {"_DOT_S4I4","DOT_PRODUCT"},
00420 {"_DOT_S4J","DOT_PRODUCT"},
00421 {"_DOT_S4S","DOT_PRODUCT"},
00422 {"_DOT_S4S4","DOT_PRODUCT"},
00423 {"_DOT_S4Z","DOT_PRODUCT"},
00424 {"_DOT_SC","DOT_PRODUCT"},
00425 {"_DOT_SC4","DOT_PRODUCT"},
00426 {"_DOT_SD","DOT_PRODUCT"},
00427 {"_DOT_SI1","DOT_PRODUCT"},
00428 {"_DOT_SI2","DOT_PRODUCT"},
00429 {"_DOT_SI4","DOT_PRODUCT"},
00430 {"_DOT_SJ","DOT_PRODUCT"},
00431 {"_DOT_SS","DOT_PRODUCT"},
00432 {"_DOT_SS4","DOT_PRODUCT"},
00433 {"_DOT_SZ","DOT_PRODUCT"},
00434 {"_DOT_ZC","DOT_PRODUCT"},
00435 {"_DOT_ZC4","DOT_PRODUCT"},
00436 {"_DOT_ZD","DOT_PRODUCT"},
00437 {"_DOT_ZI1","DOT_PRODUCT"},
00438 {"_DOT_ZI2","DOT_PRODUCT"},
00439 {"_DOT_ZI4","DOT_PRODUCT"},
00440 {"_DOT_ZJ","DOT_PRODUCT"},
00441 {"_DOT_ZS","DOT_PRODUCT"},
00442 {"_DOT_ZS4","DOT_PRODUCT"},
00443 {"_DOT_ZZ","DOT_PRODUCT"},
00444 {"_EOSHIFT","EOSHIFT"},
00445 {"_F90_CLOCK_","F90_CLOCK"},
00446 {"_F90_DATE_","F90_DATE"},
00447 {"_F90_DATE_AND_TIME","DATE_AND_TIME"},
00448 {"_F90_JDATE_","JDATE"},
00449 {"_F90_REPEAT","REPEAT"},
00450 {"_F90_TRIM","TRIM"},
00451 {"_FREE_I4","FREE"},
00452 {"_FREE_I8","FREE"},
00453 {"_HDIM_","HDIM"},
00454 {"_IDATE_I1","IDATE"},
00455 {"_IDATE_I2","IDATE"},
00456 {"_IDATE_I4","IDATE"},
00457 {"_IDATE_I8","IDATE"},
00458 {"_ILEN_I1_I1","ILEN"},
00459 {"_ILEN_I2_I2","ILEN"},
00460 {"_ILEN_I4_I4","ILEN"},
00461 {"_ILEN_I8_I8","ILEN"},
00462 {"_JDATE","JDATE"},
00463 {"_LBOUND","LBOUND"},
00464 {"_LBOUND0_4","LBOUND"},
00465 {"_LBOUND0_8","LBOUND"},
00466 {"_LIST_SYNC","LIST_SYNC"},
00467 {"_MALLOC_I4_I4","MALLOC"},
00468 {"_MALLOC_I4_I8","MALLOC"},
00469 {"_MALLOC_I8_I4","MALLOC"},
00470 {"_MALLOC_I8_I8","MALLOC"},
00471 {"_MATMUL_C4C","MATMUL"},
00472 {"_MATMUL_C4C4","MATMUL"},
00473 {"_MATMUL_C4D","MATMUL"},
00474 {"_MATMUL_C4I1","MATMUL"},
00475 {"_MATMUL_C4I2","MATMUL"},
00476 {"_MATMUL_C4I4","MATMUL"},
00477 {"_MATMUL_C4J","MATMUL"},
00478 {"_MATMUL_C4S","MATMUL"},
00479 {"_MATMUL_C4S4","MATMUL"},
00480 {"_MATMUL_C4Z","MATMUL"},
00481 {"_MATMUL_CC","MATMUL"},
00482 {"_MATMUL_CC4","MATMUL"},
00483 {"_MATMUL_CD","MATMUL"},
00484 {"_MATMUL_CI1","MATMUL"},
00485 {"_MATMUL_CI2","MATMUL"},
00486 {"_MATMUL_CI4","MATMUL"},
00487 {"_MATMUL_CJ","MATMUL"},
00488 {"_MATMUL_CS","MATMUL"},
00489 {"_MATMUL_CS4","MATMUL"},
00490 {"_MATMUL_CZ","MATMUL"},
00491 {"_MATMUL_DC","MATMUL"},
00492 {"_MATMUL_DC4","MATMUL"},
00493 {"_MATMUL_DD","MATMUL"},
00494 {"_MATMUL_DI1","MATMUL"},
00495 {"_MATMUL_DI2","MATMUL"},
00496 {"_MATMUL_DI4","MATMUL"},
00497 {"_MATMUL_DJ","MATMUL"},
00498 {"_MATMUL_DS","MATMUL"},
00499 {"_MATMUL_DS4","MATMUL"},
00500 {"_MATMUL_DZ","MATMUL"},
00501 {"_MATMUL_I1C","MATMUL"},
00502 {"_MATMUL_I1C4","MATMUL"},
00503 {"_MATMUL_I1D","MATMUL"},
00504 {"_MATMUL_I1I1","MATMUL"},
00505 {"_MATMUL_I1I2","MATMUL"},
00506 {"_MATMUL_I1I4","MATMUL"},
00507 {"_MATMUL_I1J","MATMUL"},
00508 {"_MATMUL_I1S","MATMUL"},
00509 {"_MATMUL_I1S4","MATMUL"},
00510 {"_MATMUL_I1Z","MATMUL"},
00511 {"_MATMUL_I2C","MATMUL"},
00512 {"_MATMUL_I2C4","MATMUL"},
00513 {"_MATMUL_I2D","MATMUL"},
00514 {"_MATMUL_I2I1","MATMUL"},
00515 {"_MATMUL_I2I2","MATMUL"},
00516 {"_MATMUL_I2I4","MATMUL"},
00517 {"_MATMUL_I2J","MATMUL"},
00518 {"_MATMUL_I2S","MATMUL"},
00519 {"_MATMUL_I2S4","MATMUL"},
00520 {"_MATMUL_I2Z","MATMUL"},
00521 {"_MATMUL_I4C","MATMUL"},
00522 {"_MATMUL_I4C4","MATMUL"},
00523 {"_MATMUL_I4D","MATMUL"},
00524 {"_MATMUL_I4I1","MATMUL"},
00525 {"_MATMUL_I4I2","MATMUL"},
00526 {"_MATMUL_I4I4","MATMUL"},
00527 {"_MATMUL_I4J","MATMUL"},
00528 {"_MATMUL_I4S","MATMUL"},
00529 {"_MATMUL_I4S4","MATMUL"},
00530 {"_MATMUL_I4Z","MATMUL"},
00531 {"_MATMUL_JC","MATMUL"},
00532 {"_MATMUL_JC4","MATMUL"},
00533 {"_MATMUL_JD","MATMUL"},
00534 {"_MATMUL_JI1","MATMUL"},
00535 {"_MATMUL_JI2","MATMUL"},
00536 {"_MATMUL_JI4","MATMUL"},
00537 {"_MATMUL_JJ","MATMUL"},
00538 {"_MATMUL_JS","MATMUL"},
00539 {"_MATMUL_JS4","MATMUL"},
00540 {"_MATMUL_JZ","MATMUL"},
00541 {"_MATMUL_L1L","MATMUL"},
00542 {"_MATMUL_L1L1","MATMUL"},
00543 {"_MATMUL_L1L2","MATMUL"},
00544 {"_MATMUL_L1L4","MATMUL"},
00545 {"_MATMUL_L2L","MATMUL"},
00546 {"_MATMUL_L2L1","MATMUL"},
00547 {"_MATMUL_L2L2","MATMUL"},
00548 {"_MATMUL_L2L4","MATMUL"},
00549 {"_MATMUL_L4L","MATMUL"},
00550 {"_MATMUL_L4L1","MATMUL"},
00551 {"_MATMUL_L4L2","MATMUL"},
00552 {"_MATMUL_L4L4","MATMUL"},
00553 {"_MATMUL_LL","MATMUL"},
00554 {"_MATMUL_LL1","MATMUL"},
00555 {"_MATMUL_LL2","MATMUL"},
00556 {"_MATMUL_LL4","MATMUL"},
00557 {"_MATMUL_S4C","MATMUL"},
00558 {"_MATMUL_S4C4","MATMUL"},
00559 {"_MATMUL_S4D","MATMUL"},
00560 {"_MATMUL_S4I1","MATMUL"},
00561 {"_MATMUL_S4I2","MATMUL"},
00562 {"_MATMUL_S4I4","MATMUL"},
00563 {"_MATMUL_S4J","MATMUL"},
00564 {"_MATMUL_S4S","MATMUL"},
00565 {"_MATMUL_S4S4","MATMUL"},
00566 {"_MATMUL_S4Z","MATMUL"},
00567 {"_MATMUL_SC","MATMUL"},
00568 {"_MATMUL_SC4","MATMUL"},
00569 {"_MATMUL_SD","MATMUL"},
00570 {"_MATMUL_SI1","MATMUL"},
00571 {"_MATMUL_SI2","MATMUL"},
00572 {"_MATMUL_SI4","MATMUL"},
00573 {"_MATMUL_SJ","MATMUL"},
00574 {"_MATMUL_SS","MATMUL"},
00575 {"_MATMUL_SS4","MATMUL"},
00576 {"_MATMUL_SZ","MATMUL"},
00577 {"_MATMUL_ZC","MATMUL"},
00578 {"_MATMUL_ZC4","MATMUL"},
00579 {"_MATMUL_ZD","MATMUL"},
00580 {"_MATMUL_ZI1","MATMUL"},
00581 {"_MATMUL_ZI2","MATMUL"},
00582 {"_MATMUL_ZI4","MATMUL"},
00583 {"_MATMUL_ZJ","MATMUL"},
00584 {"_MATMUL_ZS","MATMUL"},
00585 {"_MATMUL_ZS4","MATMUL"},
00586 {"_MATMUL_ZZ","MATMUL"},
00587 {"_MAXLOC__D","MAXLOC"},
00588 {"_MAXLOC__I1","MAXLOC"},
00589 {"_MAXLOC__I2","MAXLOC"},
00590 {"_MAXLOC__I4","MAXLOC"},
00591 {"_MAXLOC__J","MAXLOC"},
00592 {"_MAXLOC__S","MAXLOC"},
00593 {"_MAXLOC__S4","MAXLOC"},
00594 {"_MAXVAL0__D","MAXVAL"},
00595 {"_MAXVAL0__I1","MAXVAL"},
00596 {"_MAXVAL0__I2","MAXVAL"},
00597 {"_MAXVAL0__I4","MAXVAL"},
00598 {"_MAXVAL0__J","MAXVAL"},
00599 {"_MAXVAL0__S","MAXVAL"},
00600 {"_MAXVAL0__S4","MAXVAL"},
00601 {"_MAXVAL__D","MAXVAL"},
00602 {"_MAXVAL__I1","MAXVAL"},
00603 {"_MAXVAL__I2","MAXVAL"},
00604 {"_MAXVAL__I4","MAXVAL"},
00605 {"_MAXVAL__J","MAXVAL"},
00606 {"_MAXVAL__S","MAXVAL"},
00607 {"_MAXVAL__S4","MAXVAL"},
00608 {"_MINLOC__D","MINLOC"},
00609 {"_MINLOC__I1","MINLOC"},
00610 {"_MINLOC__I2","MINLOC"},
00611 {"_MINLOC__I4","MINLOC"},
00612 {"_MINLOC__J","MINLOC"},
00613 {"_MINLOC__S","MINLOC"},
00614 {"_MINLOC__S4","MINLOC"},
00615 {"_MINVAL0__D","MINVAL"},
00616 {"_MINVAL0__I1","MINVAL"},
00617 {"_MINVAL0__I2","MINVAL"},
00618 {"_MINVAL0__I4","MINVAL"},
00619 {"_MINVAL0__J","MINVAL"},
00620 {"_MINVAL0__S","MINVAL"},
00621 {"_MINVAL0__S4","MINVAL"},
00622 {"_MINVAL__D","MINVAL"},
00623 {"_MINVAL__I1","MINVAL"},
00624 {"_MINVAL__I2","MINVAL"},
00625 {"_MINVAL__I4","MINVAL"},
00626 {"_MINVAL__J","MINVAL"},
00627 {"_MINVAL__S","MINVAL"},
00628 {"_MINVAL__S4","MINVAL"},
00629 {"_PACK","PACK"},
00630 {"_PAIR_SYNC","PAIR_SYNC"},
00631 {"_PROD0__C","PRODUCT"},
00632 {"_PROD0__C4","PRODUCT"},
00633 {"_PROD0__D","PRODUCT"},
00634 {"_PROD0__I1","PRODUCT"},
00635 {"_PROD0__I2","PRODUCT"},
00636 {"_PROD0__I4","PRODUCT"},
00637 {"_PROD0__J","PRODUCT"},
00638 {"_PROD0__S","PRODUCT"},
00639 {"_PROD0__S4","PRODUCT"},
00640 {"_PROD__C","PRODUCT"},
00641 {"_PROD__C4","PRODUCT"},
00642 {"_PROD__D","PRODUCT"},
00643 {"_PROD__I1","PRODUCT"},
00644 {"_PROD__I2","PRODUCT"},
00645 {"_PROD__I4","PRODUCT"},
00646 {"_PROD__J","PRODUCT"},
00647 {"_PROD__S","PRODUCT"},
00648 {"_PROD__S4","PRODUCT"},
00649 {"_PROD__Z","PRODUCT"},
00650 {"_QSIGN","QSIGN"},
00651 {"_REPEAT","REPEAT"},
00652 {"_RESHAPE","RESHAPE"},
00653 {"_SCAN_4","SCAN"},
00654 {"_SCAN_8","SCAN"},
00655 {"_SELECTED_REAL_KIND_4","SELECTED_REAL_KIND"},
00656 {"_SELECTED_REAL_KIND_8","SELECTED_REAL_KIND"},
00657 {"_SHAPE","SHAPE"},
00658 {"_SIZEOF_4","SIZEOF"},
00659 {"_SIZEOF_8","SIZEOF"},
00660 {"_SIZE_4","SIZE"},
00661 {"_SIZE_8","SIZE"},
00662 {"_SPREAD","SPREAD"},
00663 {"_SUM0__C","SUM"},
00664 {"_SUM0__C4","SUM"},
00665 {"_SUM0__D","SUM"},
00666 {"_SUM0__I1","SUM"},
00667 {"_SUM0__I2","SUM"},
00668 {"_SUM0__I4","SUM"},
00669 {"_SUM0__J","SUM"},
00670 {"_SUM0__S","SUM"},
00671 {"_SUM0__S4","SUM"},
00672 {"_SUM__C","SUM"},
00673 {"_SUM__C4","SUM"},
00674 {"_SUM__D","SUM"},
00675 {"_SUM__I1","SUM"},
00676 {"_SUM__I2","SUM"},
00677 {"_SUM__I4","SUM"},
00678 {"_SUM__J","SUM"},
00679 {"_SUM__S","SUM"},
00680 {"_SUM__S4","SUM"},
00681 {"_SUM__Z","SUM"},
00682 {"_SYSTEM_CLOCK_4","SYSTEM_CLOCK"},
00683 {"_SYSTEM_CLOCK_8","SYSTEM_CLOCK"},
00684 {"_THIS_IMAGE0","THIS_IMAGE"},
00685 {"_THIS_IMAGE2","THIS_IMAGE"},
00686 {"_THIS_IMAGE3","THIS_IMAGE"},
00687 {"shmem_n_pes","NUM_IMAGES"},
00688 {"_TIME","TIME"},
00689 {"_TRANS","TRANSPOSE"},
00690 {"_TRANSFER","TRANSFER"},
00691 {"_TRIM","TRIM"},
00692 {"_UBOUND","UBOUND"},
00693 {"_UBOUND0_4","UBOUND"},
00694 {"_UBOUND0_8","UBOUND"},
00695 {"_UNPACK","UNPACK"}
00696 };
00697
00698 #define FIELDS_fp(i) (fp_table[i].fp)
00699 #define FIELDS_prev_array_index(i) (fp_table[i].prev_array_index)
00700 #define FIELDS_first_offset(i) (fp_table[i].first_offset)
00701 #define FIELDS_last_offset(i) (fp_table[i].last_offset)
00702
00703 static INT32 FE_Full_Split_Limits_Count = 2;
00704
00705
00706 PREG_det preg_for_distribute;
00707 static ST *st_for_distribute_temp;
00708
00709 BOOL cwh_stab_pu_has_globals;
00710
00711
00712
00713
00714 static char * const crayf90_def_main = "main___" ;
00715 static char * const def_main_u = "MAIN__" ;
00716 static char * const def_main = "MAIN_" ;
00717
00718
00719
00720 static ST * cwh_stab_earlier_hosted(const char * name);
00721 static void cwh_stab_enter_hosted(ST * st) ;
00722 static void cwh_stab_adjust_name(ST * st) ;
00723 static void cwh_stab_set_linenum(ST *st, INT32 lineno);
00724 static void cwh_stab_formal_ref(ST * st, BOOL host);
00725 static void cwh_stab_find_overlaps(FIELDS fp, INT32 nf);
00726 static BOOL cwh_stab_split_common(ST * c, FIELDS fp_table, INT32 nf) ;
00727 static BOOL need_to_split (INT64 cur_offset,INT64 base_offset, INT64 rel_offset,int delta );
00728 static void cwh_stab_dump_FIELDS(FIELDS fp_table, INT32 ftom, INT32 to) ;
00729 static void cwh_stab_full_split(ST *c, enum list_name list = l_COMLIST) ;
00730 static void cwh_stab_emit_split(ST * c, FIELDS fp_table, INT32 from, INT32 to);
00731 static ST * cwh_stab_split_ST(ST * c, INT64 low_off, INT64 high_off) ;
00732 static ST * cwh_stab_common_ST(char *name,INT64 size,mUINT16 al);
00733
00734 static ST * cwh_stab_module_ST(char *name,INT64 size,mUINT16 al);
00735
00736 static void cwh_stab_altres_offset(ST *st,BOOL hosted) ;
00737 static void cwh_stab_altres_offset_comp(ST *st,BOOL allF4C4) ;
00738 static ST * cwh_stab_altentry_temp(char * name, BOOL hosted) ;
00739 static void cwh_stab_distrib_pragmas(ST * st);
00740 static void cwh_stab_mk_flds(ST *block,enum list_name list);
00741 static void cwh_stab_emit_list(LIST ** lp, enum list_name list, void (*fp) (ST *, enum list_name)) ;
00742 static void cwh_stab_to_list_of_equivs(ST *st, BOOL hosted) ;
00743 static ST* cwh_stab_earlier_common(char *name_string, BOOL is_dup);
00744 static ST* cwh_stab_seen_common_element(ST *c, INT64 offset,char * name) ;
00745
00746 static PU_IDX cwh_stab_mk_pu(TY_IDX pty, SYMTAB_IDX level);
00747
00748 static INTPTR fei_proc_parent ( char *name_string,
00749 INT32 lineno,
00750 INT32 sym_class,
00751 INT32 unused1,
00752 INT32 num_dum_args,
00753 INT32 parent_stx,
00754 INT32 first_st_idx,
00755 INT32 aux_idx,
00756 TYPE result_type,
00757 INTPTR st_idx,
00758 INT64 flags );
00759
00760 static INTPTR fei_proc_def ( char *name_string,
00761 INT32 lineno,
00762 INT32 sym_class,
00763 INT32 Class,
00764 INT32 unused1,
00765 INT32 unused2,
00766 INT32 num_dum_args,
00767 INT32 parent_stx,
00768 INT32 first_st_idx,
00769 INT32 aux_idx,
00770 TYPE result_type,
00771 INT32 cmcs_node,
00772 INT32 st_idx,
00773 INT64 flags,
00774 INT32 coarray_concurrent );
00775
00776 static INTPTR fei_proc_interface ( char *name_string,
00777 INT32 lineno,
00778 INT32 sym_class,
00779 INT32 Class,
00780 INT32 unused1,
00781 INT32 unused2,
00782 INT32 num_dum_args,
00783 INT32 parent_stx,
00784 INT32 first_st_idx,
00785 INT32 aux_idx,
00786 TYPE result_type,
00787 INT32 cmcs_node,
00788 INT32 st_idx,
00789 INT64 flags,
00790 INT32 coarray_concurrent);
00791
00792
00793 static INTPTR fei_proc_imp ( INT32 lineno,
00794 char *name_string,
00795 INT32 unused1,
00796 INT32 unused2,
00797 INT32 sclass,
00798 INT32 Class,
00799 TYPE result_type,
00800 INT64 flags,
00801 INT32 in_interface);
00802
00803
00804 static void cwh_stab_adjust_base_name(ST * st);
00805
00806 static INT32 interface_pu = 0;