/* 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;
}
