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
00036
00037
00038
00039
00040 #ifndef diagnostics_INCLUDED
00041 #define diagnostics_INCLUDED
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163 extern void Diag_Init(void);
00164 extern void Diag_Exit(void);
00165 extern void Diag_Set_Phase(const char *phase_name);
00166 extern void Diag_Set_File(const char *filename);
00167 extern void Diag_Set_Max_Diags(INT max_allowed_diags);
00168 extern INT Diag_Get_Warn_Count(void);
00169
00170
00171
00172
00173
00174 typedef enum Diag_Code
00175 {
00176 DIAG_FIRST = 0,
00177 DIAG_A_STRING = 0,
00178 DIAG_UNKNOWN_CMD_LINE_OPTION = 1,
00179 DIAG_UNIMPLEMENTED = 2,
00180 DIAG_CANNOT_OPEN_FILE = 3,
00181 DIAG_CANNOT_CLOSE_FILE = 4,
00182
00183
00184 DIAG_W2F_FIRST = 100,
00185 DIAG_W2F_CANNOT_HANDLE_OPC = 101,
00186 DIAG_W2F_UNEXPECTED_OPC = 110,
00187 DIAG_W2F_UNEXPECTED_IOS = 111,
00188 DIAG_W2F_UNEXPECTED_IOU = 112,
00189 DIAG_W2F_UNEXPECTED_IOF = 113,
00190 DIAG_W2F_UNEXPECTED_IOC = 114,
00191 DIAG_W2F_UNEXPECTED_IOL = 115,
00192 DIAG_W2F_UNEXPECTED_INITV = 116,
00193 DIAG_W2F_UNEXPECTED_DOLOOP_BOUNDOP = 117,
00194 DIAG_W2F_UNEXPECTED_IMPLIED_DOLOOP = 118,
00195 DIAG_W2F_UNEXPECTED_RETURNSITE = 119,
00196 DIAG_W2F_UNEXPECTED_CALLSITE = 120,
00197 DIAG_W2F_UNEXPECTED_SUBSTRING_REF = 121,
00198 DIAG_W2F_UNEXPEXTED_RETURNREG_USE = 122,
00199 DIAG_W2F_UNEXPEXTED_OFFSET = 123,
00200 DIAG_W2F_UNEXPEXTED_NULL_PTR = 124,
00201 DIAG_W2F_NONEXISTENT_FLD_PATH = 125,
00202 DIAG_W2F_CANNOT_LDA_PREG = 126,
00203 DIAG_W2F_CANNOT_DEREF = 127,
00204 DIAG_W2F_UNEXPECTED_NUM_KIDS = 128,
00205 DIAG_W2F_UNEXPECTED_CVT = 129,
00206 DIAG_W2F_UNEXPECTED_CONTEXT = 130,
00207
00208
00209 DIAG_W2F_UNEXPECTED_TYPE_KIND = 203,
00210 DIAG_W2F_UNEXPECTED_TYPE_SIZE = 204,
00211 DIAG_W2F_UNEXPECTED_BTYPE = 205,
00212 DIAG_W2F_EXPECTED_PTR_TO_CHARACTER = 206,
00213 DIAG_W2F_EXPECTED_PTR = 207,
00214 DIAG_W2F_UNEXPECTED_SYMBOL = 208,
00215 DIAG_W2F_UNEXPECTED_SYMCLASS = 209,
00216 DIAG_W2F_UNEXPECTED_STORECLASS = 210,
00217 DIAG_W2F_UNEXPECTED_SYM_CONST = 211,
00218 DIAG_W2F_UNEXPECTED_PRAGMA = 212,
00219 DIAG_W2F_MISPLACED_PRAGMA = 213,
00220 DIAG_W2F_EXPECTED_IDNAME = 214,
00221 DIAG_W2F_INCOMPATIBLE_TYS = 215,
00222 DIAG_W2F_DECLARE_RETURN_PARAM = 216,
00223 DIAG_W2F_BUFFER_ERROR = 217,
00224 DIAG_W2F_LAST = 217,
00225
00226
00227 DIAG_W2C_FIRST = 300,
00228 DIAG_W2C_CANNOT_HANDLE_OPC = 300,
00229 DIAG_W2C_UNEXPECTED_OPC = 301,
00230 DIAG_W2C_EXPECTED_IDNAME = 302,
00231 DIAG_W2C_LAST = 302,
00232
00233
00234
00235 DIAG_PRP_FIRST = 500,
00236 DIAG_PRP_OPTION_ILLEGAL = 501,
00237 DIAG_PRP_OPTION_MISSING_SRC = 502,
00238 DIAG_PRP_NAME_OVERFLOW = 503,
00239 DIAG_PRP_FILE_ERROR = 510,
00240 DIAG_PRP_FILE_CANNOT_OPEN = 511,
00241 DIAG_PRP_FILE_CANNOT_CLOSE = 512,
00242 DIAG_PRP_FILE_OVERWRITTEN = 513,
00243 DIAG_PRP_FILE_AT_END = 514,
00244 DIAG_PRP_FILE_NOT_OPEN = 515,
00245 DIAG_PRP_FILE_NOT_CLOSED = 516,
00246 DIAG_PRP_FILE_HEADER_ERROR = 517,
00247 DIAG_PRP_ITEM_INPUT_ERROR = 519,
00248 DIAG_PRP_EXPECTED_PURPLE_REGION = 520,
00249 DIAG_PRP_PREREQUISITE_CALL = 521,
00250 DIAG_PRP_EXPECTED_CONSTRAINT = 522,
00251 DIAG_PRP_UNEXPECTED_OPCODE = 523,
00252 DIAG_PRP_UNEXPECTED_TYPE= 524,
00253 DIAG_PRP_INVALID_LEXEME_KIND = 525,
00254 DIAG_PRP_INVALID_TRACE_ITEM_KIND = 526,
00255 DIAG_PRP_CANNOT_ASSIGN_OBJECT = 527,
00256 DIAG_PRP_ILLEGAL_SET = 528,
00257 DIAG_PRP_RVALUE_ERROR = 529,
00258 DIAG_PRP_PLACEHOLDER_ERROR = 530,
00259 DIAG_PRP_PREG_VALUE = 531,
00260 DIAG_PRP_MEM_VALUE = 532,
00261 DIAG_PRP_VALUE_SPACE = 533,
00262 DIAG_PRP_VARIABLE_DEF = 534,
00263 DIAG_PRP_DEFINED_MEM_SPACE = 535,
00264 DIAG_PRP_PU_MMAP = 536,
00265 DIAG_PRP_FILE_MMAP = 537,
00266 DIAG_PRP_PROGRAM_MMAP = 538,
00267 DIAG_PRP_ICALL = 539,
00268 DIAG_PRP_REF_PARAM = 540,
00269 DIAG_PRP_CANNOT_HANDLE_CONSTRUCT= 541,
00270 DIAG_PRP_EDIT_OUTPUT= 542,
00271 DIAG_PRP_LAST = 542,
00272
00273 DIAG_LAST = 542
00274 } DIAG_CODE;
00275
00276
00277
00278
00279
00280 #define USER_WARNING(a_truth, diag_args, wn) \
00281 DIAG_USER_SRCPOS(a_truth, Diag_User_Warning, diag_args, wn)
00282
00283 #define USER_FATAL(a_truth, diag_args, wn) \
00284 DIAG_USER_SRCPOS(a_truth, Diag_User_Fatal, diag_args, wn)
00285
00286
00287 #ifdef Is_True_On
00288
00289 #define ASSERT_WARN_SRCPOS(a_truth, diag_args, wn) \
00290 DIAG_ASSERT_LOC_SRCPOS(a_truth, Diag_Warning, diag_args, wn)
00291 #define ASSERT_FATAL_SRCPOS(a_truth, diag_args, wn) \
00292 DIAG_ASSERT_LOC_SRCPOS(a_truth, Diag_Fatal, diag_args, wn)
00293 #define ASSERT_WARN(a_truth, diag_args) \
00294 DIAG_ASSERT_LOC(a_truth, Diag_Warning, diag_args)
00295 #define ASSERT_FATAL(a_truth, diag_args) \
00296 DIAG_ASSERT_LOC(a_truth, Diag_Fatal, diag_args)
00297 #define ASSERT_DBG_WARN ASSERT_WARN
00298 #define ASSERT_DBG_FATAL ASSERT_FATAL
00299
00300 #else
00301
00302 #define ASSERT_WARN(a_truth, diag_args) \
00303 DIAG_ASSERT_NOLOC(a_truth, Diag_Warning, diag_args)
00304 #define ASSERT_FATAL(a_truth, diag_args) \
00305 DIAG_ASSERT_NOLOC(a_truth, Diag_Fatal, diag_args)
00306 # define ASSERT_DBG_WARN(a_truth, diag_args) ((void) 1)
00307 # define ASSERT_DBG_FATAL(a_truth, diag_args) ((void) 1)
00308
00309 #endif
00310
00311
00312
00313
00314
00315 #define DIAG_USER_SRCPOS(a_truth, diag_handler, diag_args, wn) \
00316 ((a_truth) ? \
00317 (void) 1 : \
00318 (Diag_Set_Srcpos(WN_Get_Linenum(wn)), \
00319 diag_handler diag_args))
00320
00321 #define DIAG_ASSERT_LOC(a_truth, diag_handler, diag_args) \
00322 ((a_truth) ? \
00323 (void) 1 : \
00324 (Diag_Set_Location(__FILE__, __LINE__), diag_handler diag_args))
00325
00326 #define DIAG_ASSERT_LOC_SRCPOS(a_truth, diag_handler, diag_args, wn) \
00327 ((a_truth) ? \
00328 (void) 1 : \
00329 (Diag_Set_Location(__FILE__, __LINE__), \
00330 Diag_Set_Srcpos(WN_Get_Linenum(wn)), \
00331 diag_handler diag_args))
00332
00333 #define DIAG_ASSERT_NOLOC(a_truth, diag_handler, diag_args) \
00334 ((a_truth) ? (void) 1 : diag_handler diag_args)
00335
00336 #define DIAG_ASSERT_NOLOC_SRCPOS(a_truth, diag_handler, diag_args, wn) \
00337 ((a_truth) ? \
00338 (void) 1 : \
00339 (Diag_Set_Srcpos(WN_Get_Linenum(wn)), \
00340 diag_handler diag_args))
00341
00342 extern void Diag_Set_Location(const char *file_name, INT line_number);
00343 extern void Diag_Set_Srcpos(SRCPOS srcpos);
00344 extern void Diag_User_Warning(DIAG_CODE code, ...);
00345 extern void Diag_User_Fatal(DIAG_CODE code, ...);
00346 extern void Diag_Warning(DIAG_CODE code, ...);
00347 extern void Diag_Fatal(DIAG_CODE code, ...);
00348 extern void Diag_Warning_Srcpos(DIAG_CODE code, ...);
00349 extern void Diag_Fatal_Srcpos(DIAG_CODE code, ...);
00350
00351
00352 #endif
00353
00354
00355