diff options
Diffstat (limited to 'gprofng/src/comp_com.c')
-rw-r--r-- | gprofng/src/comp_com.c | 3481 |
1 files changed, 3481 insertions, 0 deletions
diff --git a/gprofng/src/comp_com.c b/gprofng/src/comp_com.c new file mode 100644 index 00000000000..486bd1af767 --- /dev/null +++ b/gprofng/src/comp_com.c @@ -0,0 +1,3481 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + Contributed by Oracle. + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <locale.h> +#include <values.h> +#include <assert.h> + +#include "comp_com.h" + +/* + * To add a new message _FORMAT_ please perform the following tasks: + * 1) Insert it into the list below, with the matching comment. + * The table is sorted by parameter type. In increasing order + * they are: String, Procedure, Variable, Loop, Region, Integer. + * 2) Insert the corresponding information into the following + * procedures in this file: ccm_num_params(), ccm_paramlist_index(), + * ccm_param_primtype(), and ccm_param_hightype(). + * 3) If you are also creating a new high-type or primitive-type, + * extend the corresponding enum, update this comment and make sure + * to update any code in the analyzer, iropt, cg or ube that depends + * on knowing the limited set of types. + */ + +typedef enum ccm_fmt { + CCMFMT_NONE, /* none */ + CCMFMT_S1, /* s1 */ + CCMFMT_S1S2, /* s1, s2 */ + CCMFMT_S1L2, /* s1, l2 */ + CCMFMT_S1L2VV3, /* s1, l2, v3, v4, ... */ + CCMFMT_S1R2VV3, /* s1, r2, v3, v4, ... */ + CCMFMT_S1X2, /* s1, x2 */ + CCMFMT_P1, /* p1 */ + CCMFMT_P1S2, /* p1, s2 */ + CCMFMT_P1S2P3, /* p1, s2, p3 */ + CCMFMT_P1S2P3I4, /* p1, s2, p3, i4 */ + CCMFMT_P1S2I3, /* p1, s2, i3 */ + CCMFMT_P1P2, /* p1, p2 */ + CCMFMT_P1L2, /* p1, l2 */ + CCMFMT_P1I2, /* p1, i2 */ + CCMFMT_P1I2L3, /* p1, i2, l3 */ + CCMFMT_P1I2LL3, /* p1, i2, l3, l4 ... */ + CCMFMT_P1I2I3, /* p1, i2, i3 */ + CCMFMT_PP1, /* p1, p2, ... */ + CCMFMT_V1, /* v1 */ + CCMFMT_V1V2, /* v1, v2 */ + CCMFMT_V1L2, /* v1, l2 */ + CCMFMT_VV1, /* v1, v2, ... */ + CCMFMT_L1, /* l1 */ + CCMFMT_L1S2, /* l1, s2 */ + CCMFMT_L1S2L3, /* l1, s2, l3 */ + CCMFMT_L1P2, /* l1, p2 */ + CCMFMT_L1P2I3, /* l1, p2, i3 */ + CCMFMT_L1PP2, /* l1, p2, p3, ... */ + CCMFMT_L1VV2, /* l1, v2, v3, ... */ + CCMFMT_L1L2, /* l1, l2 */ + CCMFMT_L1L2L3, /* l1, l2, l3 */ + CCMFMT_LL1, /* l1, l2, ... */ + CCMFMT_L1R2, /* l1, r2 */ + CCMFMT_L1I2, /* l1, i2 */ + CCMFMT_L1I2L3, /* l1, i2, l3 */ + CCMFMT_L1I2LL3, /* l1, i2, l3, l4, ... */ + CCMFMT_L1I2I3L4, /* l1, i2, i3, l4 */ + CCMFMT_L1I2I3I4I5, /* l1, i2, ..., i5 */ + CCMFMT_L1I2I3I4I5I6I7, /* l1, i2, ..., i7 */ + CCMFMT_L1I2I3I4I5I6I7I8I9, /* l1, i2, ..., i9 */ + CCMFMT_L1II2, /* l1, i2, i3, ... */ + CCMFMT_R1, /* r1 */ + CCMFMT_R1VV2, /* r1, v2, v3, ... */ + CCMFMT_I1, /* i1 */ + CCMFMT_I1P2I3, /* i1, p2, i3 */ + CCMFMT_I1V2, /* i1, v2 */ + CCMFMT_I1V2V3, /* i1, v2, v3 */ + CCMFMT_I1L2, /* i1, l2 */ + CCMFMT_I1LL2, /* i1, l2, l3, ... */ + CCMFMT_I1I2I3I4, /* i1, i2, i3, i4 */ + CCMFMT_I1I2I3I4I5I6, /* i1, i2, ..., i6 */ + CCMFMT_I1I2I3I4I5I6I7I8, /* i1, i2, ..., i8 */ + CCMFMT_LAST +} Ccm_Fmttype_t; + +/* + * Low- and high-level types for commentary parameters. + */ + +typedef enum ccm_primtype +{ + CCM_PRIMTYPE_NONE, + CCM_PRIMTYPE_STRING, + CCM_PRIMTYPE_INTEGER, + CCM_PRIMTYPE_HEXSTRING +} Ccm_Primtype_t; + +typedef enum ccm_hightype +{ + CCM_HITYPE_NONE, + CCM_HITYPE_STRING, + CCM_HITYPE_PROCEDURE, + CCM_HITYPE_VARIABLE, + CCM_HITYPE_LOOPTAG, + CCM_HITYPE_REGIONTAG, + CCM_HITYPE_HEXSTRING, + CCM_HITYPE_INTEGER +} Ccm_Hitype_t; + +typedef struct ccm_attrs +{ + char *msg; /* I18N msg string */ + const char *name; /* Print name for this message ID */ + int32_t vis; /* Visibility bits */ + Ccm_Fmttype_t fmt; /* Format type */ +} Ccm_Attr_t; + +static Ccm_Attr_t *ccm_attrs; /* Table of per-msg attributes */ +static nl_catd ccm_catd = (nl_catd) - 1; /* messages id */ + +/* + * map COMPMSG_ID to table indices + */ +static int +ccm_vis_index (COMPMSG_ID m) +{ + int32_t high = m >> 8; + int32_t low = m & 0xFF; + for (int i = 0; i < 24; i++, high >>= 1) + if (high <= 1) + return (i << 8) + low + 1; + return 0; +} + +/* + * Return # parameters for this message; MAXINT for messages with + * parameter lists. + */ +static int +ccm_num_params (COMPMSG_ID m) +{ + int vindex; + int res; + vindex = ccm_vis_index (m); + switch (ccm_attrs[vindex].fmt) + { + case CCMFMT_NONE: + res = 0; + break; + case CCMFMT_S1: + case CCMFMT_P1: + case CCMFMT_V1: + case CCMFMT_L1: + case CCMFMT_R1: + case CCMFMT_I1: + res = 1; + break; + case CCMFMT_S1S2: + case CCMFMT_S1L2: + case CCMFMT_S1X2: + case CCMFMT_P1S2: + case CCMFMT_P1P2: + case CCMFMT_P1L2: + case CCMFMT_P1I2: + case CCMFMT_V1V2: + case CCMFMT_V1L2: + case CCMFMT_L1S2: + case CCMFMT_L1P2: + case CCMFMT_L1L2: + case CCMFMT_L1R2: + case CCMFMT_L1I2: + case CCMFMT_I1V2: + case CCMFMT_I1L2: + res = 2; + break; + case CCMFMT_P1S2P3: + case CCMFMT_P1S2I3: + case CCMFMT_P1I2L3: + case CCMFMT_P1I2I3: + case CCMFMT_L1S2L3: + case CCMFMT_L1P2I3: + case CCMFMT_L1L2L3: + case CCMFMT_L1I2L3: + case CCMFMT_I1P2I3: + case CCMFMT_I1V2V3: + res = 3; + break; + case CCMFMT_P1S2P3I4: + case CCMFMT_L1I2I3L4: + case CCMFMT_I1I2I3I4: + res = 4; + break; + case CCMFMT_L1I2I3I4I5: + res = 5; + break; + case CCMFMT_I1I2I3I4I5I6: + res = 6; + break; + case CCMFMT_L1I2I3I4I5I6I7: + res = 7; + break; + case CCMFMT_I1I2I3I4I5I6I7I8: + res = 8; + break; + case CCMFMT_L1I2I3I4I5I6I7I8I9: + res = 9; + break; + case CCMFMT_S1L2VV3: + case CCMFMT_S1R2VV3: + case CCMFMT_PP1: + case CCMFMT_P1I2LL3: + case CCMFMT_VV1: + case CCMFMT_L1PP2: + case CCMFMT_L1VV2: + case CCMFMT_LL1: + case CCMFMT_L1I2LL3: + case CCMFMT_L1II2: + case CCMFMT_R1VV2: + case CCMFMT_I1LL2: + res = MAXINT; + break; + case CCMFMT_LAST: + default: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) assert (0); + break; + } + return res; +} + +static int +ccm_paramlist_index (COMPMSG_ID m) +{ + int res; + int vindex = ccm_vis_index (m); + switch (ccm_attrs[vindex].fmt) + { + case CCMFMT_NONE: + case CCMFMT_S1: + case CCMFMT_S1S2: + case CCMFMT_S1L2: + case CCMFMT_S1X2: + case CCMFMT_P1: + case CCMFMT_P1S2: + case CCMFMT_P1S2P3: + case CCMFMT_P1S2P3I4: + case CCMFMT_P1S2I3: + case CCMFMT_P1P2: + case CCMFMT_P1L2: + case CCMFMT_P1I2: + case CCMFMT_P1I2L3: + case CCMFMT_P1I2I3: + case CCMFMT_V1: + case CCMFMT_V1V2: + case CCMFMT_V1L2: + case CCMFMT_L1: + case CCMFMT_L1S2: + case CCMFMT_L1S2L3: + case CCMFMT_L1P2: + case CCMFMT_L1P2I3: + case CCMFMT_L1L2: + case CCMFMT_L1L2L3: + case CCMFMT_L1R2: + case CCMFMT_L1I2: + case CCMFMT_L1I2L3: + case CCMFMT_L1I2I3L4: + case CCMFMT_L1I2I3I4I5: + case CCMFMT_L1I2I3I4I5I6I7: + case CCMFMT_L1I2I3I4I5I6I7I8I9: + case CCMFMT_R1: + case CCMFMT_I1: + case CCMFMT_I1P2I3: + case CCMFMT_I1V2: + case CCMFMT_I1V2V3: + case CCMFMT_I1L2: + case CCMFMT_I1I2I3I4: + case CCMFMT_I1I2I3I4I5I6: + case CCMFMT_I1I2I3I4I5I6I7I8: + res = 0; + break; + case CCMFMT_PP1: + case CCMFMT_VV1: + case CCMFMT_LL1: + res = 1; + break; + case CCMFMT_L1PP2: + case CCMFMT_L1VV2: + case CCMFMT_L1II2: + case CCMFMT_R1VV2: + case CCMFMT_I1LL2: + res = 2; + break; + case CCMFMT_S1L2VV3: + case CCMFMT_S1R2VV3: + case CCMFMT_P1I2LL3: + case CCMFMT_L1I2LL3: + res = 3; + break; + case CCMFMT_LAST: + default: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) assert (0); + break; + } + return res; +} + +static Ccm_Primtype_t +ccm_param_primtype (COMPMSG_ID m, int param_idx) +{ + int vindex; + Ccm_Primtype_t res; + if (param_idx <= 0 || param_idx > ccm_num_params (m)) + return CCM_PRIMTYPE_NONE; + + res = CCM_PRIMTYPE_NONE; /* should always be updated */ + vindex = ccm_vis_index (m); + switch (ccm_attrs[vindex].fmt) + { + /* + * Sort cases by: + * 1) # parameters + * 2) Strings before Integers + * 3) Enum tags + */ + case CCMFMT_NONE: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) + assert (0); + break; + case CCMFMT_S1: + case CCMFMT_P1: + case CCMFMT_V1: + case CCMFMT_L1: + case CCMFMT_R1: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_I1: + if (param_idx == 1) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_S1S2: + case CCMFMT_S1L2: + case CCMFMT_P1S2: + case CCMFMT_P1P2: + case CCMFMT_P1L2: + case CCMFMT_V1V2: + case CCMFMT_V1L2: + case CCMFMT_L1S2: + case CCMFMT_L1P2: + case CCMFMT_L1L2: + case CCMFMT_L1R2: + if (param_idx == 1 || param_idx == 2) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_S1X2: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 2) + res = CCM_PRIMTYPE_HEXSTRING; + break; + case CCMFMT_P1I2: + case CCMFMT_L1I2: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 2) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1V2: + case CCMFMT_I1L2: + if (param_idx == 1) + res = CCM_PRIMTYPE_INTEGER; + else if (param_idx == 2) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_P1S2P3: + case CCMFMT_L1S2L3: + case CCMFMT_L1L2L3: + if (param_idx >= 1 && param_idx <= 3) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_P1S2I3: + case CCMFMT_L1P2I3: + if (param_idx == 1 || param_idx == 2) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 3) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_P1I2L3: + case CCMFMT_L1I2L3: + if (param_idx == 1 || param_idx == 3) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 2) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_P1I2I3: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 2 || param_idx == 3) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1V2V3: + if (param_idx == 1) + res = CCM_PRIMTYPE_INTEGER; + else if (param_idx == 2 || param_idx == 3) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_I1P2I3: + if (param_idx == 1 || param_idx == 3) + res = CCM_PRIMTYPE_INTEGER; + else if (param_idx == 2) + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_L1I2I3L4: + if (param_idx == 1 || param_idx == 4) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 2 || param_idx == 3) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_P1S2P3I4: + if (param_idx >= 1 && param_idx <= 3) + res = CCM_PRIMTYPE_STRING; + else if (param_idx == 4) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1I2I3I4: + if (param_idx >= 1 && param_idx <= 4) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx >= 2 && param_idx <= 5) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1I2I3I4I5I6: + if (param_idx >= 1 && param_idx <= 6) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5I6I7: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx >= 2 && param_idx <= 7) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1I2I3I4I5I6I7I8: + if (param_idx >= 1 && param_idx <= 8) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5I6I7I8I9: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else if (param_idx >= 2 && param_idx <= 9) + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_S1L2VV3: + case CCMFMT_S1R2VV3: + case CCMFMT_PP1: + case CCMFMT_VV1: + case CCMFMT_L1PP2: + case CCMFMT_L1VV2: + case CCMFMT_LL1: + case CCMFMT_R1VV2: + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_P1I2LL3: + case CCMFMT_L1I2LL3: + if (param_idx == 2) + res = CCM_PRIMTYPE_INTEGER; + else + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_L1II2: + if (param_idx == 1) + res = CCM_PRIMTYPE_STRING; + else + res = CCM_PRIMTYPE_INTEGER; + break; + case CCMFMT_I1LL2: + if (param_idx == 1) + res = CCM_PRIMTYPE_INTEGER; + else + res = CCM_PRIMTYPE_STRING; + break; + case CCMFMT_LAST: + default: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) + assert (0); + break; + } + return res; +} + +static Ccm_Hitype_t +ccm_param_hightype (COMPMSG_ID m, int param_idx) +{ + int vindex; + Ccm_Hitype_t res; + + if (param_idx <= 0 || param_idx > ccm_num_params (m)) + return CCM_HITYPE_NONE; + res = CCM_HITYPE_NONE; /* should always be updated */ + vindex = ccm_vis_index (m); + switch (ccm_attrs[vindex].fmt) + { + case CCMFMT_NONE: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) + assert (0); + break; + case CCMFMT_S1: + if (param_idx == 1) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_S1S2: + if (param_idx == 1 || param_idx == 2) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_S1L2: + if (param_idx == 1) + res = CCM_HITYPE_STRING; + else if (param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_S1L2VV3: + if (param_idx == 1) + res = CCM_HITYPE_STRING; + else if (param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + else + res = CCM_HITYPE_STRING; + break; + case CCMFMT_S1R2VV3: + if (param_idx == 1) + res = CCM_HITYPE_STRING; + else if (param_idx == 2) + res = CCM_HITYPE_REGIONTAG; + else + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_S1X2: + if (param_idx == 1) + res = CCM_HITYPE_STRING; + else if (param_idx == 2) + res = CCM_HITYPE_HEXSTRING; + break; + case CCMFMT_P1: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_P1S2: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_P1S2P3: + if (param_idx == 1 || param_idx == 3) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_P1S2P3I4: + if (param_idx == 1 || param_idx == 3) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + else if (param_idx == 4) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_P1S2I3: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + else if (param_idx == 3) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_P1P2: + if (param_idx == 1 || param_idx == 2) + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_P1L2: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_P1I2: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_P1I2L3: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + else if (param_idx == 3) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_P1I2I3: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2 || param_idx == 3) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_P1I2LL3: + if (param_idx == 1) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + else + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_PP1: + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_V1: + if (param_idx == 1) + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_V1V2: + if (param_idx == 1 || param_idx == 2) + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_V1L2: + if (param_idx == 1) + res = CCM_HITYPE_VARIABLE; + else if (param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_VV1: + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_L1: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_L1S2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_L1S2L3: + if (param_idx == 1 || param_idx == 3) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_STRING; + break; + case CCMFMT_L1P2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_L1P2I3: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_PROCEDURE; + else if (param_idx == 3) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1PP2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_L1VV2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_L1L2: + if (param_idx == 1 || param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_L1L2L3: + if (param_idx >= 1 && param_idx <= 3) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_LL1: + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_L1R2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_REGIONTAG; + break; + case CCMFMT_L1I2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1I2L3: + if (param_idx == 1 || param_idx == 3) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1I2LL3: + if (param_idx == 2) + res = CCM_HITYPE_INTEGER; + else + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_L1I2I3L4: + if (param_idx == 1 || param_idx == 4) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx == 2 || param_idx == 3) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx >= 2 && param_idx <= 5) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5I6I7: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx >= 2 && param_idx <= 7) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1I2I3I4I5I6I7I8I9: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else if (param_idx >= 2 && param_idx <= 9) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_L1II2: + if (param_idx == 1) + res = CCM_HITYPE_LOOPTAG; + else + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_R1: + if (param_idx == 1) + res = CCM_HITYPE_REGIONTAG; + break; + case CCMFMT_R1VV2: + if (param_idx == 1) + res = CCM_HITYPE_REGIONTAG; + else + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_I1: + if (param_idx == 1) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_I1P2I3: + if (param_idx == 1 || param_idx == 3) + res = CCM_HITYPE_INTEGER; + else if (param_idx == 2) + res = CCM_HITYPE_PROCEDURE; + break; + case CCMFMT_I1V2: + if (param_idx == 1) + res = CCM_HITYPE_INTEGER; + else if (param_idx == 2) + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_I1V2V3: + if (param_idx == 1) + res = CCM_HITYPE_INTEGER; + else if (param_idx == 2 || param_idx == 3) + res = CCM_HITYPE_VARIABLE; + break; + case CCMFMT_I1L2: + if (param_idx == 1) + res = CCM_HITYPE_INTEGER; + else if (param_idx == 2) + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_I1LL2: + if (param_idx == 1) + res = CCM_HITYPE_INTEGER; + else + res = CCM_HITYPE_LOOPTAG; + break; + case CCMFMT_I1I2I3I4: + if (param_idx >= 1 && param_idx <= 4) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_I1I2I3I4I5I6: + if (param_idx >= 1 && param_idx <= 6) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_I1I2I3I4I5I6I7I8: + if (param_idx >= 1 && param_idx <= 8) + res = CCM_HITYPE_INTEGER; + break; + case CCMFMT_LAST: + default: + /* programming failure */ + /* if(1) is hack to get around warning from C++ compiler */ + if (1) + assert (0); + break; + } + return res; +} + +static void +ccm_vis_init () +{ + int size, vindex; + static int done = 0; + if (done) + return; + done = 1; + size = ccm_vis_index ((COMPMSG_ID) (CCMV_BASIC << 8)); + ccm_attrs = (Ccm_Attr_t *) calloc (size, sizeof (Ccm_Attr_t)); + if (ccm_attrs == NULL) + exit (1); + vindex = ccm_vis_index (CCM_MODDATE); + ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MODDATE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Source file %s, last modified on date %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1S2; + + vindex = ccm_vis_index (CCM_COMPVER); + ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_COMPVER"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Component %s, version %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1S2; + + vindex = ccm_vis_index (CCM_COMPDATE); + ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_COMPDATE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Compilation date %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_COMPOPT); + ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_COMPOPT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Compilation options %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_ACOMPOPT); + ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_ACOMPOPT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Actual Compilation options %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_VAR_ALIAS); + ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_VAR_ALIAS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variable %s aliased to %s"); + ccm_attrs[vindex].fmt = CCMFMT_V1V2; + + vindex = ccm_vis_index (CCM_FBIRDIFF); + ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_FBIRDIFF"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Profile feedback data inconsistent with" + " intermediate representation file; check compiler" + " version, flags and source file"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_OPTRED_SWAP); + ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_OPTRED_SWAP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Optimization level for %s reduced from %d to" + " %d due to insufficient swap space"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2I3; + + vindex = ccm_vis_index (CCM_OPTRED_CPLX); + ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_OPTRED_CPLX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Optimization level for %s reduced from %d to" + " %d due to program complexity"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2I3; + + vindex = ccm_vis_index (CCM_UNKNOWN); + ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNKNOWN"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Unexpected compiler comment %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_UNPAR_CALL); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_CALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it contains a" + " call to %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_PAR_SER); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PAR_SER"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Both serial and parallel versions generated for" + " loop below"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_PAR_SER_VER); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PAR_SER_VER"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Both serial and parallel versions generated for" + " loop below; with parallel version used if %s," + " serial otherwise"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_PAR_DRECTV); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PAR_DRECTV"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below parallelized by explicit user" + " directive"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_APAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_APAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below autoparallelized"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_AUTOPAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_AUTOPAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below autoparallelized; equivalent" + " explict directive is %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_UNPAR_DD); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_DD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below could not be parallelized because of a" + " data dependency on %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_UNPAR_DDA); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_DDA"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below could not be parallelized because of a" + " data dependency or aliasing of %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_UNPAR_ANONDD); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_ANONDD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below could not be parallelized because of" + " an anonymous data dependency"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_ANONDDA); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_ANONDDA"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below could not be parallelized because of" + " an anonymous data dependency or aliasing"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_PAR_WORK); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PAR_WORK"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below parallelized, but might not contain" + " enough work to be efficiently run in parallel"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_EXIT); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_EXIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it contains" + " multiple exit points"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_STRNG); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_STRNG"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it contains a" + " strange flow of control"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_IO); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_IO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it contains" + " I/O or other MT-unsafe calls"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_PAR_BODY_NAME); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PAR_BODY_NAME"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Parallel loop-body code is in function %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_UNPAR_NLOOPIDX); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_NLOOPIDX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because loop index" + " not found"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_DRECTV); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_DRECTV"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because of explicit" + " user directive"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_NOTPROFIT); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_NOTPROFIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it was not" + " profitable to do so"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_NEST); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_NEST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it was" + " nested in a parallel loop"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_NOAUTO); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_NOAUTO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because" + " autoparallelization is not enabled"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_PR_L_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PR_L_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Private variables in loop below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_SH_L_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_SH_L_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Shared variables in loop below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_TP_L_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_TP_L_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Threadprivate variables in loop below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_RV_L_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_RV_L_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Reduction variables in loop below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_IM_L_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IM_L_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit variables in loop below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_PR_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PR_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Private variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_SH_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_SH_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Shared variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_TP_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_TP_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Threadprivate variables in OpenMP construct" + " below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_RV_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_RV_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Reduction variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_IM_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IM_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_UNPAR_IN_OMP); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_IN_OMP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below not parallelized because it is inside" + " an OpenMP region"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_FP_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_FP_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Firstprivate variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_LP_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LP_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Lastprivate variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_CP_O_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_CP_O_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Copyprivate variables in OpenMP construct below:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_PR_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PR_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as PRIVATE in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_SH_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_SH_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as SHARED in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_FP_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_FP_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as FIRSTPRIVATE in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_LP_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LP_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as LASTPRIVATE in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_RV_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_RV_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as REDUCTION in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_FAIL_OAS_VAR); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_FAIL_OAS_VAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables cannot be autoscoped in OpenMP" + " construct below: %s"); + ccm_attrs[vindex].fmt = CCMFMT_VV1; + + vindex = ccm_vis_index (CCM_SERIALIZE_OAS); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_SERIALIZE_OAS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "OpenMP parallel region below is serialized" + " because autoscoping has failed"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_UNPAR_CALL_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_CALL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it contains calls" + " to: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1PP2; + + vindex = ccm_vis_index (CCM_PAR_DRECTV_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PAR_DRECTV_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s parallelized by explicit user directive"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_APAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_APAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s autoparallelized"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_AUTOPAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_AUTOPAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s autoparallelized; equivalent" + " explict directive is %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1S2; + + vindex = ccm_vis_index (CCM_UNPAR_DD_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_DD_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be parallelized because of" + " data dependences on: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_UNPAR_DDA_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_DDA_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be parallelized because of a" + " data dependence or aliasing of: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_UNPAR_ANONDD_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_ANONDD_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be parallelized because of an" + " anonymous data dependence"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_ANONDDA_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_ANONDDA_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be parallelized because of an" + " anonymous data dependence or aliasing"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_PAR_WORK_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PAR_WORK_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s parallelized, but might not contain" + " enough work to run efficiently in parallel"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_EXIT_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_EXIT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it contains" + " multiple exit points"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_STRANGE_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_STRANGE_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it contains a" + " strange flow of control"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_IO_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_IO_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it contains" + " I/O or other MT-unsafe calls"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_PAR_BODY_NAME_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP; + ccm_attrs[vindex].name = "CCM_PAR_BODY_NAME_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s parallel loop-body code placed in" + " function %s along with %d inner loops"); + ccm_attrs[vindex].fmt = CCMFMT_L1P2I3; + + vindex = ccm_vis_index (CCM_UNPAR_NLOOPIDX_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_NLOOPIDX_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because loop index not" + " found"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_DRECTV_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_DRECTV_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because of explicit" + " user directive"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_NOTPROFIT_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_NOTPROFIT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it was not" + " profitable to do so"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_NEST_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_NEST_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it was" + " nested within a parallel loop"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_UNPAR_NOAUTO_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNPAR_NOAUTO_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because" + " autoparallelization is not enabled"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_PR_L_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PR_L_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Private variables in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_SH_L_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_SH_L_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Shared variables in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_TP_L_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_TP_L_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Threadprivate variables in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_RV_L_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_RV_L_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Reduction variables of operator %s in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1L2VV3; + + vindex = ccm_vis_index (CCM_IM_L_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IM_L_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit variables in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1VV2; + + vindex = ccm_vis_index (CCM_PR_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PR_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Private variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_SH_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_SH_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Shared variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_TP_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_TP_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Threadprivate variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_RV_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_RV_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Reduction variables of operator %s in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1R2VV3; + + vindex = ccm_vis_index (CCM_IM_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IM_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_UNPAR_IN_OMP_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNPAR_IN_OMP_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s not parallelized because it is inside" + " OpenMP region %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1R2; + + vindex = ccm_vis_index (CCM_FP_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_FP_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Firstprivate variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_LP_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LP_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Lastprivate variables in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_CP_O_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_CP_O_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Copyprivate variables in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_PR_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PR_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as PRIVATE in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_SH_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_SH_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as SHARED in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_FP_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_FP_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as FIRSTPRIVATE in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_LP_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LP_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as LASTPRIVATE in %s:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_RV_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_RV_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables autoscoped as REDUCTION of operator" + " %s in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1R2VV3; + + vindex = ccm_vis_index (CCM_FAIL_OAS_VAR_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN; + ccm_attrs[vindex].name = "CCM_FAIL_OAS_VAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variables treated as shared because they cannot" + " be autoscoped in %s: %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1VV2; + + vindex = ccm_vis_index (CCM_SERIALIZE_OAS_2); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN; + ccm_attrs[vindex].name = "CCM_SERIALIZE_OAS_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s will be executed by a single thread because" + " autoscoping for some variables was not successful"); + ccm_attrs[vindex].fmt = CCMFMT_R1; + + vindex = ccm_vis_index (CCM_QPERMVEC); + ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_QPERMVEC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Is %s a permutation vector during execution of" + " %s?"); + ccm_attrs[vindex].fmt = CCMFMT_V1L2; + + vindex = ccm_vis_index (CCM_QEXPR); + ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_QEXPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Is expression %s true for %s?"); + ccm_attrs[vindex].fmt = CCMFMT_S1L2; + + vindex = ccm_vis_index (CCM_QSAFECALL); + ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_QSAFECALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Is subroutine %s MP-safe as used in %s?"); + ccm_attrs[vindex].fmt = CCMFMT_P1L2; + + vindex = ccm_vis_index (CCM_LCOST); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LCOST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below estimated to cost %d cycles per" + " iteration"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_UNROLL); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_UNROLL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below unrolled %d times"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_IMIX); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IMIX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below has %d loads, %d stores," + " %d prefetches, %d FPadds, %d FPmuls, and" + " %d FPdivs per iteration"); + ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6; + + vindex = ccm_vis_index (CCM_SPILLS); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_SPILLS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below required %d integer register spills," + " %d FP register spills, and used" + " %d integer registers and %d FP registers"); + ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4; + + vindex = ccm_vis_index (CCM_LFISSION); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LFISSION"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below fissioned into %d loops"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_LPEEL); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LPEEL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below had iterations peeled off for better" + " unrolling and/or parallelization"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_LBLOCKED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LBLOCKED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below blocked by %d for improved cache" + " performance"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_LTILED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LTILED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below tiled for better performance"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_LUNRJAM); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LUNRJAM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below unrolled and jammed"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_LWHILE2DO); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LWHILE2DO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Bounds test for loop below moved to top of loop"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_L2CALL); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_L2CALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below replaced by a call to %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_LDEAD); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LDEAD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below deleted as dead code"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_LINTRCHNG); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LINTRCHNG"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below interchanged with loop on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_FUSEDTO); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_FUSEDTO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below fused with loop on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_FUSEDFROM); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_FUSEDFROM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop from line %d fused with loop below"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_VECINTRNSC); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_VECINTRNSC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below transformed to use calls to vector" + " intrinsic %s"); + ccm_attrs[vindex].fmt = CCMFMT_PP1; + + vindex = ccm_vis_index (CCM_LSTRIPMINE); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LSTRIPMINE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below strip-mined"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_LNEST2LOOPS); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LNEST2LOOPS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below collapsed with loop on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_LREVERSE); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LREVERSE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below has had its iteration direction" + " reversed"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_IMIX2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IMIX2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below has %d loads, %d stores," + " %d prefetches, %d FPadds, %d FPmuls," + " %d FPdivs, %d FPsubs, and %d FPsqrts per" + " iteration"); + ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6I7I8; + + vindex = ccm_vis_index (CCM_LUNRFULL); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_LUNRFULL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below fully unrolled"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_ELIM_NOAMORTINST); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_ELIM_NOAMORTINST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below was eliminated as it contains no" + " non-amortizable instructions"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_COMP_DALIGN); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_COMP_DALIGN"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Performance of loop below could be improved" + " by compiling with -dalign"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_INTIMIX); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_INTIMIX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below has %d int-loads, %d int-stores," + " %d alu-ops, %d muls, %d int-divs and" + " %d shifts per iteration"); + ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6; + + vindex = ccm_vis_index (CCM_LMULTI_VERSION); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LMULTI_VERSION"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s multi-versioned. Specialized version" + " is %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2; + + vindex = ccm_vis_index (CCM_LCOST_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LCOST_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s estimated to cost %d cycles per iteration"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_UNROLL_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_UNROLL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s unrolled %d times"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_IMIX_B); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_IMIX_B"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s has %d loads, %d stores," + " %d prefetches, %d FPadds, %d FPmuls, and" + " %d FPdivs per iteration"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7; + + vindex = ccm_vis_index (CCM_SPILLS_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_SPILLS_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s required %d integer register spills," + " %d FP register spills, and used" + " %d integer registers and %d FP registers"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5; + + vindex = ccm_vis_index (CCM_LFISSION_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LFISSION_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s fissioned into %d loops, generating:" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2LL3; + + vindex = ccm_vis_index (CCM_LFISSION_FRAG); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LFISSION_FRAG"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s contains code from lines: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1II2; + + vindex = ccm_vis_index (CCM_LPEEL_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LPEEL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s had iterations peeled off for better" + " unrolling and/or parallelization"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_LBLOCKED_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LBLOCKED_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s blocked by %d for improved memory" + " hierarchy performance, new inner loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2L3; + + vindex = ccm_vis_index (CCM_LOUTER_UNROLL); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LOUTER_UNROLL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s is outer-unrolled %d times as part" + " of unroll and jam"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_LJAMMED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LJAMMED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "All %d copies of %s are fused together" + " as part of unroll and jam"); + ccm_attrs[vindex].fmt = CCMFMT_I1L2; + + vindex = ccm_vis_index (CCM_LWHILE2DO_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LWHILE2DO_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Bounds test for %s moved to top of loop"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_L2CALL_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_L2CALL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s replaced by a call to %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1P2; + + vindex = ccm_vis_index (CCM_LDEAD_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LDEAD_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s deleted as dead code"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_LINTRCHNG_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LINTRCHNG_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s interchanged with %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2; + + vindex = ccm_vis_index (CCM_LINTRCHNG_ORDER); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LINTRCHNG_ORDER"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "For loop nest below, the final order of loops" + " after interchanging and subsequent" + " transformations is: %s"); + ccm_attrs[vindex].fmt = CCMFMT_LL1; + + vindex = ccm_vis_index (CCM_FUSED_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_FUSED_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s fused with %s, new loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2L3; + + vindex = ccm_vis_index (CCM_VECINTRNSC_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_VECINTRNSC_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s transformed to use calls to vector" + " intrinsics: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1PP2; + + vindex = ccm_vis_index (CCM_LSTRIPMINE_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LSTRIPMINE_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s strip-mined by %d, new inner loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2L3; + + vindex = ccm_vis_index (CCM_LNEST2LOOPS_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LNEST2LOOPS_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s collapsed with %s, new loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2L3; + + vindex = ccm_vis_index (CCM_LREVERSE_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LREVERSE_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s has had its iteration direction reversed"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_IMIX2_B); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_IMIX2_B"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s has %d loads, %d stores," + " %d prefetches, %d FPadds, %d FPmuls," + " %d FPdivs, %d FPsubs, and %d FPsqrts per" + " iteration"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7I8I9; + + vindex = ccm_vis_index (CCM_LUNRFULL_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LUNRFULL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s fully unrolled"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_ELIM_NOAMORTINST_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_ELIM_NOAMORTINST_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s was eliminated as it contains no" + " non-amortizable instructions"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_COMP_DALIGN_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_COMP_DALIGN_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Performance of %s could be improved by" + " compiling with -dalign"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_INTIMIX_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INTIMIX_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s has %d int-loads, %d int-stores," + " %d alu-ops, %d muls, %d int-divs and" + " %d shifts per iteration"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7; + + vindex = ccm_vis_index (CCM_OMP_REGION); + ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_OMP_REGION"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Source OpenMP region below has tag %s"); + ccm_attrs[vindex].fmt = CCMFMT_R1; + + vindex = ccm_vis_index (CCM_LMICROVECTORIZE); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LMICROVECTORIZE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s is micro-vectorized"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_LMULTI_VERSION_2); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LMULTI_VERSION_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s multi-versioned for %s." + " Specialized version is %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1S2L3; + + vindex = ccm_vis_index (CCM_LCLONED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LCLONED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s cloned for %s. Clone is %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1S2L3; + + vindex = ccm_vis_index (CCM_LUNSWITCHED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LUNSWITCHED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s is unswitched. New loops" + " are %s and %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2L3; + + vindex = ccm_vis_index (CCM_LRESWITCHED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LRESWITCHED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loops %s and %s and their surrounding" + " conditional code have been merged to" + " form loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1L2L3; + + vindex = ccm_vis_index (CCM_LSKEWBLOCKED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LSKEWBLOCKED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s skew-blocked by %d with slope" + " %d for improved memory hierarchy" + " performance, new inner loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3L4; + + vindex = ccm_vis_index (CCM_IVSUB); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_IVSUB"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Induction variable substitution performed on %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_ONEITER_REPLACED); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_ONEITER_REPLACED"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s determined to have a trip count of 1;" + " converted to straight-line code"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_IMIX3_B); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_IMIX3_B"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s has %d loads, %d stores," + " %d prefetches, %d FPadds, %d FPmuls," + " %d FPmuladds, %d FPdivs, and %d FPsqrts per" + " iteration"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7I8I9; + + vindex = ccm_vis_index (CCM_PIPELINE); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PIPELINE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below pipelined"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_PIPESTATS); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PIPESTATS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below scheduled with steady-state cycle" + " count = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_CALL); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_CALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " calls"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_INTCC); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTCC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it sets" + " multiple integer condition codes."); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_MBAR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_MBAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains a" + " memory barrier instruction"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_MNMX); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_MNMX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " a minimum or a maximum operation"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_U2FLT); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_U2FLT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " an unsigned to float conversion"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_GOT); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_GOT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it sets the" + " Global Offset Table pointer"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_IDIV); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_IDIV"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " an integer divide"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_PRFTCH); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_PRFTCH"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " a prefetch operation"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_EXIT); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_EXIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " an exit operation"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_REG); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_REG"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it contains" + " instructions that set the %%gsr or %%fsr register"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_UNS); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_UNS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it has an" + " unsigned loop counter"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_UNSUIT); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_UNSUIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop was unsuitable for pipelining"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_INTRINSIC); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTRINSIC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined because it has an" + " intrinsic call to %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NOPIPE_BIG); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_BIG"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined as it is too big"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NOPIPE_INVINTPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVINTPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined as it contains too" + " many loop invariant integers = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_INVFLTPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVFLTPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined as it contains too" + " many loop invariant floats = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_INVDBLPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVDBLPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined as it contains too" + " many loop invariant doubles = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFIPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFIPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below was adversely affected by high" + " integer register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFDPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFDPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below was adversely affected by high" + " double register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFFPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFFPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop below was adversely affected by high" + " float register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_INTPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined due to high" + " integer register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_DBLPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_DBLPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined due to high" + " double register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_NOPIPE_FLTPR); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_NOPIPE_FLTPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop could not be pipelined due to high" + " float register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_PIPELINE_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PIPELINE_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s pipelined"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_PIPESTATS_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PIPESTATS_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s scheduled with steady-state cycle" + " count = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_CALL_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_CALL_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " calls"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_INTCC_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTCC_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it sets" + " multiple integer condition codes."); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_MBAR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_MBAR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " a memory barrier instruction"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_MNMX_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_MNMX_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " a minimum or a maximum operation"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_U2FLT_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_U2FLT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " an unsigned to float conversion"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_GOT_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP; + ccm_attrs[vindex].name = "CCM_NOPIPE_GOT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it sets the" + " Global Offset Table pointer"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_IDIV_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_IDIV_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " an integer divide"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_PRFTCH_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_PRFTCH_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " a prefetch operation"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_EXIT_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_EXIT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " an exit operation"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_REG_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP; + ccm_attrs[vindex].name = "CCM_NOPIPE_REG_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " instructions that set the %%gsr or %%fsr register"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_UNS_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_UNS_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it has an" + " unsigned loop counter"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_UNSUIT_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_UNSUIT_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s is unsuitable for pipelining"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_INTRINSIC_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTRINSIC_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined because it contains" + " a call to intrinsic %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1P2; + + vindex = ccm_vis_index (CCM_NOPIPE_BIG_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_BIG_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined as it is too big"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_NOPIPE_INVINTPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVINTPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined as it contains too" + " many loop invariant integers = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_INVFLTPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVFLTPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined as it contains too" + " many loop invariant floats = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_INVDBLPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INVDBLPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined as it contains too" + " many loop invariant doubles = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFIPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFIPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s was adversely affected by high" + " integer register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFDPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFDPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s was adversely affected by high" + " double register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_PIPE_SCHEDAFFPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFFPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s was adversely affected by high" + " float register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_INTPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_INTPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined due to high" + " integer register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_DBLPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_DBLPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined due to high" + " double register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_NOPIPE_FLTPR_2); + ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NOPIPE_FLTPR_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "%s could not be pipelined due to high" + " float register pressure = %d"); + ccm_attrs[vindex].fmt = CCMFMT_L1I2; + + vindex = ccm_vis_index (CCM_INLINE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_INLINE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from source file %s into" + " the code for the following line"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2; + + vindex = ccm_vis_index (CCM_INLINE2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_INLINE2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from source file %s into" + " inline copy of function %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2P3; + + vindex = ccm_vis_index (CCM_INLINE_TMPLT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE_TMPLT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from template file %s" + " into the code for the following line"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2; + + vindex = ccm_vis_index (CCM_INLINE_TMPLT2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE_TMPLT2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from template file %s" + " into inline copy of function %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2P3; + + vindex = ccm_vis_index (CCM_INLINE_OUT_COPY); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE_OUT_COPY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Out-of-line copy of inlined function %s from" + " source file %s generated"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2; + + vindex = ccm_vis_index (CCM_NINLINE_REC); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_REC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Recursive function %s inlined only up to" + " depth %d"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2; + + vindex = ccm_vis_index (CCM_NINLINE_NEST); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_NEST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because inlining is" + " already nested too deeply"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CMPLX); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CMPLX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " too many operations"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_FB); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_FB"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because the" + " profile-feedback execution count is too low"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_PAR); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_PAR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " explicit parallel pragmas"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_OPT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_OPT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is" + " compiled with optimization level <= 2"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_USR); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_USR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because either command" + " line option or source code pragma prohibited it," + " or it's not safe to inline it"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_AUTO); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_AUTO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because doing so" + " would make automatic storage for %s too large"); + ccm_attrs[vindex].fmt = CCMFMT_P1P2; + + vindex = ccm_vis_index (CCM_NINLINE_CALLS); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALLS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " too many calls"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_ACTUAL); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_ACTUAL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it has more" + " actual parameters than formal parameters"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_FORMAL); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_FORMAL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it has more" + " formal parameters than actual parameters"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_TYPE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_TYPE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because formal" + " argument type does not match actual type"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_ATYPE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_ATYPE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because array formal" + " argument does not match reshaped array actual" + " argument type"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_RETTYPE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_RETTYPE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because return type" + " does not match"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_EXCPT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_EXCPT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it" + " guarded by an exception handler"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_UNSAFE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_UNSAFE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it might be" + " unsafe (call alloca(), etc)"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_ALIAS); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_ALIAS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because inlining it" + " will make the alias analysis in the calling" + " function more conservative"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_FEMARK); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_FEMARK"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " setjmp/longjmp, or indirect goto, etc"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_RAREX); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_RAREX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is known" + " to be rarely executed"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_CLONING); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_CLONING"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s from source file %s cloned," + " creating cloned function %s; constant" + " parameters propagated to clone"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2P3; + + vindex = ccm_vis_index (CCM_INLINE_B); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE_B"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from source file %s into" + " the code for the following line. %d loops" + " inlined"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2I3; + + vindex = ccm_vis_index (CCM_INLINE2_B); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE2_B"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from source file %s into" + " inline copy of function %s. %d loops inlined"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2P3I4; + + vindex = ccm_vis_index (CCM_INLINE_LOOP); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_LOOP | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_INLINE_LOOP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Loop in function %s, line %d has" + " tag %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2L3; + + vindex = ccm_vis_index (CCM_NINLINE_MULTIENTRY); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_MULTIENTRY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it" + " contains an ENTRY statement"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_VARARGS); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_VARARGS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because variable" + " argument routines cannot be inlined"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_UNSEEN_BODY); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_UNSEEN_BODY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because the compiler" + " has not seen the body of the function. Use" + " -xcrossfile or -xipo in order to inline it"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_UPLEVEL); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_UPLEVEL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is a" + " nested routine containing references to" + " variables defined in an outer function"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CMDLINE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CMDLINE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because either" + " -xinline or source code pragma prohibited it"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_CMPLX); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_CMPLX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because of the" + " complexity of the calling routine"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_LANG_MISMATCH); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_LANG_MISMATCH"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because it is in" + " a different language"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_RTN_WEAK); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_RTN_WEAK"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it" + " is marked weak"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_WEAKFILE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_WEAKFILE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because it is" + " in a different file and it contains a" + " call to a weak routine"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_TRYCATCH); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_TRYCATCH"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because it is" + " in a different file and contains an" + " explicit try/catch"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_REGP); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_REGP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because it would" + " cause excessive register pressure"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_RTN_REGP); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_RTN_REGP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it would" + " cause excessive register pressure"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_XPENSV); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_XPENSV"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because analysis" + " exceeds the compilation time limit"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_READONLYIR); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_READONLYIR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is in a file" + " specified as read-only by -xipo_archive=readonly" + " and it contains calls to static functions"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_THUNK); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_THUNK"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because it is in a" + " compiler-generated function that does not" + " permit inlining"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CALL_XTARGETS); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CALL_XTARGETS"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Indirect callsite has too many targets;" + " callsite marked do not inline"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NINLINE_SELFTAIL_RECURSIVE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_SELFTAIL_RECURSIVE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because" + " of a recursive tail-call to itself"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_PRAGMA); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_PRAGMA"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " explicit parallel or alias pragmas"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CMPLX2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CMPLX2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains too" + " many operations. Increase max_inst_hard in order" + " to inline it: -xinline_param=max_inst_hard:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_RARE); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_RARE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because the call" + " is rarely executed"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_PAR2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_PAR2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is called" + " within a region guarded by an explicit" + " parallel pragmas"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_G_LIMIT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_G_LIMIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it would exceed" + " the permitted global code size growth limit. Try" + " to increase max_growth in order to inline it:" + " -xinline_param=max_growth:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_L_LIMIT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_L_LIMIT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it would exceed" + " the maximum function size growth limit. Increase" + " max_function_inst in order to inline it:" + " -xinline_param=max_function_inst:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_REC2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_REC2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Recursive function %s is inlined only up to" + " %d levels and up to %d size. Increase" + " max_recursive_deptha or max_recursive_inst in" + " order to inline it:" + " -xinline_param=max_recursive_depth:n," + " -xinline_param=max_recursive_inst:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2I3; + + vindex = ccm_vis_index (CCM_NINLINE_FB2); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_FB2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because the" + " profile-feedback execution count is too" + " low. Decrease min_counter in order to inline it:" + " -xinline_param:min_counter:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_CS_CMPLX); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_CS_CMPLX"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because called" + " function's size is too big. Increase" + " max_inst_soft in order to inline it:" + " -xinline_param=max_inst_soft:n"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_R_EXCPT); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_R_EXCPT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it contains" + " an exception handler"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_ASM); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_ASM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because" + " it contains asm statements"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_R_READONLYIR); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_R_READONLYIR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is in a file" + " specified as read-only by -xipo_archive=readonly" + " and it is a static function"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_C_READONLYIR); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_C_READONLYIR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s not inlined because the calling" + " function is in a file specified as read-only" + " by -xipo_archive=readonly"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NINLINE_NEVERRETURN); + ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NINLINE_NEVERRETURN"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it" + " never returns"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_MPREFETCH); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_MPREFETCH_LD); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH_LD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted for load at %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_MPREFETCH_ST); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH_ST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted for store at %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_MPREFETCH_FB); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH_FB"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted based on feedback data"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_MPREFETCH_FB_LD); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH_FB_LD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted for load at %s based" + " on feedback data"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_MPREFETCH_FB_ST); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MPREFETCH_FB_ST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Prefetch of %s inserted for store at %s based" + " on feedback data"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_MLOAD); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MLOAD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Load below refers to %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_MSTORE); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MSTORE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Store below refers to %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_MLOAD_P); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MLOAD_P"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Load below refers to %s, and was prefetched" + " at %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_MSTORE_P); + ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MSTORE_P"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Store below refers to %s, and was prefetched" + " at %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1X2; + + vindex = ccm_vis_index (CCM_COPYIN); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_COPYIN"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Parameter %d caused a copyin in the following" + " call"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_COPYOUT); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_COPYOUT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Parameter %d caused a copyout in the following" + " call"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_COPYINOUT); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_COPYINOUT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Parameter %d caused both a copyin and copyout" + " in the following call"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_PADDING); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_PADDING"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Padding of %d bytes inserted before" + " array %s"); + ccm_attrs[vindex].fmt = CCMFMT_I1V2; + + vindex = ccm_vis_index (CCM_PADCOMMON); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_PADCOMMON"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Padding of %d bytes inserted before" + " array %s in common block %s"); + ccm_attrs[vindex].fmt = CCMFMT_I1V2V3; + + vindex = ccm_vis_index (CCM_ALIGN_EQ); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_ALIGN_EQ"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Variable/array %s can not be double-aligned," + " because it is equivalenced"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_ALIGN_PERF); + ccm_attrs[vindex].vis = CCMV_FE; + ccm_attrs[vindex].name = "CCM_ALIGN_PERF"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Alignment of variables in common block may cause" + " performance degradation"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_ALIGN_STRUCT); + ccm_attrs[vindex].vis = CCMV_FE; + ccm_attrs[vindex].name = "CCM_ALIGN_STRUCT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Alignment of component %s in numeric sequence" + " structure %s may cause performance degradation"); + ccm_attrs[vindex].fmt = CCMFMT_S1S2; + + vindex = ccm_vis_index (CCM_TMP_COPY); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s copied to a temporary"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_TMP_COPYM); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPYM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s might be copied to a temporary;" + " runtime decision made"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_PROC_MISMATCH); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_PROC_MISMATCH"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %d to subprogram %s differs from" + " reference on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1P2I3; + + vindex = ccm_vis_index (CCM_PROC_MISMATCH2); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_PROC_MISMATCH2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Scalar argument %d to subprogram %s is" + " referred to as an array on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_I1P2I3; + + vindex = ccm_vis_index (CCM_PROC_MISMATCH3); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_PROC_MISMATCH3"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Return type/rank from subprogram %s differs" + " from return on line %d"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2; + + vindex = ccm_vis_index (CCM_DO_EXPR); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_DO_EXPR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "DO statement bounds lead to no executions of the" + " loop"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_AUTO_BND); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_AUTO_BND"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "The bounds for automatic variable %s are not" + " available at all entry points; zero-length" + " variable might be allocated"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_LIT_PAD); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_LIT_PAD"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "The character string literal %s padded" + " to the length specified for the dummy argument"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_ARRAY_LOOP); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_ARRAY_LOOP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Array statement below generated a loop"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_ARRAY_LOOPNEST); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS; + ccm_attrs[vindex].name = "CCM_ARRAY_LOOPNEST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Array statement below generated %d nested loops"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_ALIGN_PERF2); + ccm_attrs[vindex].vis = CCMV_FE; + ccm_attrs[vindex].name = "CCM_ALIGN_PERF2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Alignment of variable %s in common block %s" + " may cause a performance degradation"); + ccm_attrs[vindex].fmt = CCMFMT_V1V2; + + vindex = ccm_vis_index (CCM_ALIGN_PERF3); + ccm_attrs[vindex].vis = CCMV_FE; + ccm_attrs[vindex].name = "CCM_ALIGN_PERF3"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Alignment of variable %s in blank common may" + " cause a performance degradation"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_IO_LOOP_ARRAY); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_IO_LOOP_ARRAY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "I/O implied do item below generated an array" + " section"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_TMPCONST); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_TMPCONST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit invocation of class %s constructor for" + " temporary"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_TMPDEST); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_TMPDEST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Implicit invocation of class %s destructor for" + " temporary"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_DBL_CONST); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_DBL_CONST"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Double constant %s used in float expression"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_MINLINE); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MINLINE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s inlined from source file %s by" + " front-end"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2; + + vindex = ccm_vis_index (CCM_MINLINE2); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MINLINE2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s from source file %s inlined into" + " inline copy of method %s by front-end"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2P3; + + vindex = ccm_vis_index (CCM_MINLINE3); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MINLINE3"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it uses keyword" + " %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1S2; + + vindex = ccm_vis_index (CCM_MINLINE4); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL; + ccm_attrs[vindex].name = "CCM_MINLINE4"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s not inlined because it is too" + " complex"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_TMP_COPYOUT); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPYOUT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s copied from a temporary"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_TMP_COPYOUTM); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPYOUTM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s might be copied from a temporary;" + " runtime decision made"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_TMP_COPYINOUT); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPYINOUT"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s copied in and out of a temporary"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_TMP_COPYINOUTM); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TMP_COPYINOUTM"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Argument %s might be copied in and out of" + " a temporary; runtime decision made"); + ccm_attrs[vindex].fmt = CCMFMT_V1; + + vindex = ccm_vis_index (CCM_ARRAY_LOOP_2); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_ARRAY_LOOP_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Array statement below generated loop %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_ARRAY_LOOPNEST_2); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_ARRAY_LOOPNEST_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Array statement below generated %d nested" + " loops: %s"); + ccm_attrs[vindex].fmt = CCMFMT_I1LL2; + + vindex = ccm_vis_index (CCM_IO_LOOP_ARRAY_2); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_IO_LOOP_ARRAY_2"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "I/O implied do item below generated an array" + " section: %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_USER_LOOP); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_USER_LOOP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Source loop below has tag %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_FOUND_LOOP); + ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_FOUND_LOOP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Discovered loop below has tag %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_MFUNCTION_LOOP); + ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_MFUNCTION_LOOP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Copy in M-function of loop below has tag %s"); + ccm_attrs[vindex].fmt = CCMFMT_L1; + + vindex = ccm_vis_index (CCM_FSIMPLE); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_FSIMPLE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Transformations for fsimple=%d applied"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_STACK); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_STACK"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Function %s requires %d Mbytes of stack" + " storage"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2; + + vindex = ccm_vis_index (CCM_TAILRECUR); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_TAILRECUR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Recursive tail call in %s optimized to jump to" + " entry point"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_TAILCALL); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT; + ccm_attrs[vindex].name = "CCM_TAILCALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to function %s was tail-call optimized"); + ccm_attrs[vindex].fmt = CCMFMT_P1; + + vindex = ccm_vis_index (CCM_NI_EXIT_OR_PSEUDO); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_EXIT_OR_PSEUDO"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains the pseudo instruction %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_BAD_UNARY_OPC); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_UNARY_OPC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains the instruction opcode %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_INT_LDD_ON_V9); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_INT_LDD_ON_V9"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains integer ldd instructions, which are" + " deprecated in the v9 architecture"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_LATE_INL_OPC); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_LATE_INL_OPC"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains the instruction opcode %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_BAD_IMM_OP); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_IMM_OP"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because the" + " relocation or immediate operand %s is not well" + " understood by the optimizer"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_BAD_STATELEAF); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_STATELEAF"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " references the state register %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_BAD_ASR_19); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_ASR_19"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because" + " %%asr19 is not supported in pre v8plus code"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_BAD_FSR_USE); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_FSR_USE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because" + " references to %%fsr can only be optimized when the" + " -iaopts flag is used"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_BAD_REGISTER); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_REGISTER"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " references the register %s"); + ccm_attrs[vindex].fmt = CCMFMT_S1; + + vindex = ccm_vis_index (CCM_NI_NO_RET_VAL); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_NO_RET_VAL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " does not return the value declared"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_DELAY); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_DELAY"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains a non nop delay slot"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_SCALL); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_SCALL"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " calls a function which returns a structure"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_CASE_POSITION); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_CASE_POSITION"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Case block below was placed at position %d" + " based on execution frequency"); + ccm_attrs[vindex].fmt = CCMFMT_I1; + + vindex = ccm_vis_index (CCM_CALL_WITH_CODE); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_CALL_WITH_CODE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Call to %s replaced with inline code. %d" + " loops created: %s"); + ccm_attrs[vindex].fmt = CCMFMT_P1I2LL3; + + vindex = ccm_vis_index (CCM_NI_BAD_SP_ADDR); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_SP_ADDR"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains a %%sp+reg address"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_BAD_SP_USAGE); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_BAD_SP_USAGE"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " uses/defines the stack pointer in a non-load/store instruction"); + ccm_attrs[vindex].fmt = CCMFMT_NONE; + + vindex = ccm_vis_index (CCM_NI_MIXED_REG_TYPES); + ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC; + ccm_attrs[vindex].name = "CCM_NI_MIXED_REG_TYPES"; + ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex, + "Template could not be early inlined because it" + " contains register %s used as both x-register and register pair"); + ccm_attrs[vindex].fmt = CCMFMT_S1; +} |