1/* Copyright (C) 2021-2024 Free Software Foundation, Inc.
2   Contributed by Oracle.
3
4   This file is part of GNU Binutils.
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 3, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software
18   Foundation, 51 Franklin Street - Fifth Floor, Boston,
19   MA 02110-1301, USA.  */
20
21#include <stdio.h>
22#include <string.h>
23#include <stdlib.h>
24#include <locale.h>
25#include <values.h>
26#include <assert.h>
27
28#include "comp_com.h"
29
30/*
31 * To add a new message _FORMAT_ please perform the following tasks:
32 * 1) Insert it into the list below, with the matching comment.
33 *    The table is sorted by parameter type.  In increasing order
34 *    they are: String, Procedure, Variable, Loop, Region, Integer.
35 * 2) Insert the corresponding information into the following
36 *    procedures in this file: ccm_num_params(), ccm_paramlist_index(),
37 *    ccm_param_primtype(), and ccm_param_hightype().
38 * 3) If you are also creating a new high-type or primitive-type,
39 *    extend the corresponding enum, update this comment and make sure
40 *    to update any code in the analyzer, iropt, cg or ube that depends
41 *    on knowing the limited set of types.
42 */
43
44typedef enum ccm_fmt {
45    CCMFMT_NONE,		/* none */
46    CCMFMT_S1,			/* s1 */
47    CCMFMT_S1S2,		/* s1, s2 */
48    CCMFMT_S1L2,		/* s1, l2 */
49    CCMFMT_S1L2VV3,		/* s1, l2, v3, v4, ... */
50    CCMFMT_S1R2VV3,		/* s1, r2, v3, v4, ... */
51    CCMFMT_S1X2,		/* s1, x2 */
52    CCMFMT_P1,			/* p1 */
53    CCMFMT_P1S2,		/* p1, s2 */
54    CCMFMT_P1S2P3,		/* p1, s2, p3 */
55    CCMFMT_P1S2P3I4,		/* p1, s2, p3, i4 */
56    CCMFMT_P1S2I3,		/* p1, s2, i3 */
57    CCMFMT_P1P2,		/* p1, p2 */
58    CCMFMT_P1L2,		/* p1, l2 */
59    CCMFMT_P1I2,		/* p1, i2 */
60    CCMFMT_P1I2L3,		/* p1, i2, l3 */
61    CCMFMT_P1I2LL3,		/* p1, i2, l3, l4 ... */
62    CCMFMT_P1I2I3,		/* p1, i2, i3 */
63    CCMFMT_PP1,			/* p1, p2, ... */
64    CCMFMT_V1,			/* v1 */
65    CCMFMT_V1V2,		/* v1, v2 */
66    CCMFMT_V1L2,		/* v1, l2 */
67    CCMFMT_VV1,			/* v1, v2, ... */
68    CCMFMT_L1,			/* l1 */
69    CCMFMT_L1S2,		/* l1, s2 */
70    CCMFMT_L1S2L3,		/* l1, s2, l3 */
71    CCMFMT_L1P2,		/* l1, p2 */
72    CCMFMT_L1P2I3,		/* l1, p2, i3 */
73    CCMFMT_L1PP2,		/* l1, p2, p3, ... */
74    CCMFMT_L1VV2,		/* l1, v2, v3, ... */
75    CCMFMT_L1L2,		/* l1, l2 */
76    CCMFMT_L1L2L3,		/* l1, l2, l3 */
77    CCMFMT_LL1,			/* l1, l2, ... */
78    CCMFMT_L1R2,		/* l1, r2 */
79    CCMFMT_L1I2,		/* l1, i2 */
80    CCMFMT_L1I2L3,		/* l1, i2, l3 */
81    CCMFMT_L1I2LL3,		/* l1, i2, l3, l4, ... */
82    CCMFMT_L1I2I3L4,		/* l1, i2, i3, l4 */
83    CCMFMT_L1I2I3I4I5,		/* l1, i2, ..., i5 */
84    CCMFMT_L1I2I3I4I5I6I7,	/* l1, i2, ..., i7 */
85    CCMFMT_L1I2I3I4I5I6I7I8I9,	/* l1, i2, ..., i9 */
86    CCMFMT_L1II2,		/* l1, i2, i3, ... */
87    CCMFMT_R1,			/* r1 */
88    CCMFMT_R1VV2,		/* r1, v2, v3, ... */
89    CCMFMT_I1,			/* i1 */
90    CCMFMT_I1P2I3,		/* i1, p2, i3 */
91    CCMFMT_I1V2,		/* i1, v2 */
92    CCMFMT_I1V2V3,		/* i1, v2, v3 */
93    CCMFMT_I1L2,		/* i1, l2 */
94    CCMFMT_I1LL2,		/* i1, l2, l3, ... */
95    CCMFMT_I1I2I3I4,		/* i1, i2, i3, i4 */
96    CCMFMT_I1I2I3I4I5I6,	/* i1, i2, ..., i6 */
97    CCMFMT_I1I2I3I4I5I6I7I8,	/* i1, i2, ..., i8 */
98    CCMFMT_LAST
99} Ccm_Fmttype_t;
100
101/*
102 * Low- and high-level types for commentary parameters.
103 */
104
105typedef enum ccm_primtype
106{
107  CCM_PRIMTYPE_NONE,
108  CCM_PRIMTYPE_STRING,
109  CCM_PRIMTYPE_INTEGER,
110  CCM_PRIMTYPE_HEXSTRING
111} Ccm_Primtype_t;
112
113typedef enum ccm_hightype
114{
115  CCM_HITYPE_NONE,
116  CCM_HITYPE_STRING,
117  CCM_HITYPE_PROCEDURE,
118  CCM_HITYPE_VARIABLE,
119  CCM_HITYPE_LOOPTAG,
120  CCM_HITYPE_REGIONTAG,
121  CCM_HITYPE_HEXSTRING,
122  CCM_HITYPE_INTEGER
123} Ccm_Hitype_t;
124
125typedef struct ccm_attrs
126{
127  char *msg;            /* I18N msg string */
128  const char *name;     /* Print name for this message ID */
129  int32_t vis;          /* Visibility bits */
130  Ccm_Fmttype_t fmt;    /* Format type */
131} Ccm_Attr_t;
132
133static Ccm_Attr_t *ccm_attrs;            /* Table of per-msg attributes */
134static nl_catd ccm_catd = (nl_catd) - 1; /* messages id */
135
136/*
137 * map COMPMSG_ID to table indices
138 */
139static int
140ccm_vis_index (COMPMSG_ID m)
141{
142  int32_t high = m >> 8;
143  int32_t low = m & 0xFF;
144  for (int i = 0; i < 24; i++, high >>= 1)
145    if (high <= 1)
146      return (i << 8) + low + 1;
147  return 0;
148}
149
150/*
151 * Return # parameters for this message; MAXINT for messages with
152 * parameter lists.
153 */
154static int
155ccm_num_params (COMPMSG_ID m)
156{
157  int vindex;
158  int res;
159  vindex = ccm_vis_index (m);
160  switch (ccm_attrs[vindex].fmt)
161    {
162    case CCMFMT_NONE:
163      res = 0;
164      break;
165    case CCMFMT_S1:
166    case CCMFMT_P1:
167    case CCMFMT_V1:
168    case CCMFMT_L1:
169    case CCMFMT_R1:
170    case CCMFMT_I1:
171      res = 1;
172      break;
173    case CCMFMT_S1S2:
174    case CCMFMT_S1L2:
175    case CCMFMT_S1X2:
176    case CCMFMT_P1S2:
177    case CCMFMT_P1P2:
178    case CCMFMT_P1L2:
179    case CCMFMT_P1I2:
180    case CCMFMT_V1V2:
181    case CCMFMT_V1L2:
182    case CCMFMT_L1S2:
183    case CCMFMT_L1P2:
184    case CCMFMT_L1L2:
185    case CCMFMT_L1R2:
186    case CCMFMT_L1I2:
187    case CCMFMT_I1V2:
188    case CCMFMT_I1L2:
189      res = 2;
190      break;
191    case CCMFMT_P1S2P3:
192    case CCMFMT_P1S2I3:
193    case CCMFMT_P1I2L3:
194    case CCMFMT_P1I2I3:
195    case CCMFMT_L1S2L3:
196    case CCMFMT_L1P2I3:
197    case CCMFMT_L1L2L3:
198    case CCMFMT_L1I2L3:
199    case CCMFMT_I1P2I3:
200    case CCMFMT_I1V2V3:
201      res = 3;
202      break;
203    case CCMFMT_P1S2P3I4:
204    case CCMFMT_L1I2I3L4:
205    case CCMFMT_I1I2I3I4:
206      res = 4;
207      break;
208    case CCMFMT_L1I2I3I4I5:
209      res = 5;
210      break;
211    case CCMFMT_I1I2I3I4I5I6:
212      res = 6;
213      break;
214    case CCMFMT_L1I2I3I4I5I6I7:
215      res = 7;
216      break;
217    case CCMFMT_I1I2I3I4I5I6I7I8:
218      res = 8;
219      break;
220    case CCMFMT_L1I2I3I4I5I6I7I8I9:
221      res = 9;
222      break;
223    case CCMFMT_S1L2VV3:
224    case CCMFMT_S1R2VV3:
225    case CCMFMT_PP1:
226    case CCMFMT_P1I2LL3:
227    case CCMFMT_VV1:
228    case CCMFMT_L1PP2:
229    case CCMFMT_L1VV2:
230    case CCMFMT_LL1:
231    case CCMFMT_L1I2LL3:
232    case CCMFMT_L1II2:
233    case CCMFMT_R1VV2:
234    case CCMFMT_I1LL2:
235      res = MAXINT;
236      break;
237    case CCMFMT_LAST:
238    default:
239      /* programming failure */
240      /* if(1) is hack to get around warning from C++ compiler */
241      if (1) assert (0);
242      break;
243    }
244  return res;
245}
246
247static int
248ccm_paramlist_index (COMPMSG_ID m)
249{
250  int res;
251  int vindex = ccm_vis_index (m);
252  switch (ccm_attrs[vindex].fmt)
253    {
254    case CCMFMT_NONE:
255    case CCMFMT_S1:
256    case CCMFMT_S1S2:
257    case CCMFMT_S1L2:
258    case CCMFMT_S1X2:
259    case CCMFMT_P1:
260    case CCMFMT_P1S2:
261    case CCMFMT_P1S2P3:
262    case CCMFMT_P1S2P3I4:
263    case CCMFMT_P1S2I3:
264    case CCMFMT_P1P2:
265    case CCMFMT_P1L2:
266    case CCMFMT_P1I2:
267    case CCMFMT_P1I2L3:
268    case CCMFMT_P1I2I3:
269    case CCMFMT_V1:
270    case CCMFMT_V1V2:
271    case CCMFMT_V1L2:
272    case CCMFMT_L1:
273    case CCMFMT_L1S2:
274    case CCMFMT_L1S2L3:
275    case CCMFMT_L1P2:
276    case CCMFMT_L1P2I3:
277    case CCMFMT_L1L2:
278    case CCMFMT_L1L2L3:
279    case CCMFMT_L1R2:
280    case CCMFMT_L1I2:
281    case CCMFMT_L1I2L3:
282    case CCMFMT_L1I2I3L4:
283    case CCMFMT_L1I2I3I4I5:
284    case CCMFMT_L1I2I3I4I5I6I7:
285    case CCMFMT_L1I2I3I4I5I6I7I8I9:
286    case CCMFMT_R1:
287    case CCMFMT_I1:
288    case CCMFMT_I1P2I3:
289    case CCMFMT_I1V2:
290    case CCMFMT_I1V2V3:
291    case CCMFMT_I1L2:
292    case CCMFMT_I1I2I3I4:
293    case CCMFMT_I1I2I3I4I5I6:
294    case CCMFMT_I1I2I3I4I5I6I7I8:
295      res = 0;
296      break;
297    case CCMFMT_PP1:
298    case CCMFMT_VV1:
299    case CCMFMT_LL1:
300      res = 1;
301      break;
302    case CCMFMT_L1PP2:
303    case CCMFMT_L1VV2:
304    case CCMFMT_L1II2:
305    case CCMFMT_R1VV2:
306    case CCMFMT_I1LL2:
307      res = 2;
308      break;
309    case CCMFMT_S1L2VV3:
310    case CCMFMT_S1R2VV3:
311    case CCMFMT_P1I2LL3:
312    case CCMFMT_L1I2LL3:
313      res = 3;
314      break;
315    case CCMFMT_LAST:
316    default:
317      /* programming failure */
318      /* if(1) is hack to get around warning from C++ compiler */
319      if (1) assert (0);
320      break;
321    }
322  return res;
323}
324
325static Ccm_Primtype_t
326ccm_param_primtype (COMPMSG_ID m, int param_idx)
327{
328  int vindex;
329  Ccm_Primtype_t res;
330  if (param_idx <= 0 || param_idx > ccm_num_params (m))
331    return CCM_PRIMTYPE_NONE;
332
333  res = CCM_PRIMTYPE_NONE; /* should always be updated */
334  vindex = ccm_vis_index (m);
335  switch (ccm_attrs[vindex].fmt)
336    {
337      /*
338       * Sort cases by:
339       * 1) # parameters
340       * 2) Strings before Integers
341       * 3) Enum tags
342       */
343    case CCMFMT_NONE:
344      /* programming failure */
345      /* if(1) is hack to get around warning from C++ compiler */
346      if (1)
347	assert (0);
348      break;
349    case CCMFMT_S1:
350    case CCMFMT_P1:
351    case CCMFMT_V1:
352    case CCMFMT_L1:
353    case CCMFMT_R1:
354      if (param_idx == 1)
355	res = CCM_PRIMTYPE_STRING;
356      break;
357    case CCMFMT_I1:
358      if (param_idx == 1)
359	res = CCM_PRIMTYPE_INTEGER;
360      break;
361    case CCMFMT_S1S2:
362    case CCMFMT_S1L2:
363    case CCMFMT_P1S2:
364    case CCMFMT_P1P2:
365    case CCMFMT_P1L2:
366    case CCMFMT_V1V2:
367    case CCMFMT_V1L2:
368    case CCMFMT_L1S2:
369    case CCMFMT_L1P2:
370    case CCMFMT_L1L2:
371    case CCMFMT_L1R2:
372      if (param_idx == 1 || param_idx == 2)
373	res = CCM_PRIMTYPE_STRING;
374      break;
375    case CCMFMT_S1X2:
376      if (param_idx == 1)
377	res = CCM_PRIMTYPE_STRING;
378      else if (param_idx == 2)
379	res = CCM_PRIMTYPE_HEXSTRING;
380      break;
381    case CCMFMT_P1I2:
382    case CCMFMT_L1I2:
383      if (param_idx == 1)
384	res = CCM_PRIMTYPE_STRING;
385      else if (param_idx == 2)
386	res = CCM_PRIMTYPE_INTEGER;
387      break;
388    case CCMFMT_I1V2:
389    case CCMFMT_I1L2:
390      if (param_idx == 1)
391	res = CCM_PRIMTYPE_INTEGER;
392      else if (param_idx == 2)
393	res = CCM_PRIMTYPE_STRING;
394      break;
395    case CCMFMT_P1S2P3:
396    case CCMFMT_L1S2L3:
397    case CCMFMT_L1L2L3:
398      if (param_idx >= 1 && param_idx <= 3)
399	res = CCM_PRIMTYPE_STRING;
400      break;
401    case CCMFMT_P1S2I3:
402    case CCMFMT_L1P2I3:
403      if (param_idx == 1 || param_idx == 2)
404	res = CCM_PRIMTYPE_STRING;
405      else if (param_idx == 3)
406	res = CCM_PRIMTYPE_INTEGER;
407      break;
408    case CCMFMT_P1I2L3:
409    case CCMFMT_L1I2L3:
410      if (param_idx == 1 || param_idx == 3)
411	res = CCM_PRIMTYPE_STRING;
412      else if (param_idx == 2)
413	res = CCM_PRIMTYPE_INTEGER;
414      break;
415   case CCMFMT_P1I2I3:
416      if (param_idx == 1)
417	res = CCM_PRIMTYPE_STRING;
418      else if (param_idx == 2  || param_idx == 3)
419	res = CCM_PRIMTYPE_INTEGER;
420      break;
421    case CCMFMT_I1V2V3:
422      if (param_idx == 1)
423	res = CCM_PRIMTYPE_INTEGER;
424      else if (param_idx == 2 || param_idx == 3)
425	res = CCM_PRIMTYPE_STRING;
426      break;
427    case CCMFMT_I1P2I3:
428      if (param_idx == 1 || param_idx == 3)
429	res = CCM_PRIMTYPE_INTEGER;
430      else if (param_idx == 2)
431	res = CCM_PRIMTYPE_STRING;
432      break;
433    case CCMFMT_L1I2I3L4:
434      if (param_idx == 1 || param_idx == 4)
435	res = CCM_PRIMTYPE_STRING;
436      else if (param_idx == 2 || param_idx == 3)
437	res = CCM_PRIMTYPE_INTEGER;
438      break;
439    case CCMFMT_P1S2P3I4:
440      if (param_idx >= 1 && param_idx <= 3)
441	res = CCM_PRIMTYPE_STRING;
442      else if (param_idx == 4)
443	res = CCM_PRIMTYPE_INTEGER;
444      break;
445    case CCMFMT_I1I2I3I4:
446      if (param_idx >= 1 && param_idx <= 4)
447	res = CCM_PRIMTYPE_INTEGER;
448      break;
449    case CCMFMT_L1I2I3I4I5:
450      if (param_idx == 1)
451	res = CCM_PRIMTYPE_STRING;
452      else if (param_idx >= 2 && param_idx <= 5)
453	res = CCM_PRIMTYPE_INTEGER;
454      break;
455    case CCMFMT_I1I2I3I4I5I6:
456      if (param_idx >= 1 && param_idx <= 6)
457	res = CCM_PRIMTYPE_INTEGER;
458      break;
459    case CCMFMT_L1I2I3I4I5I6I7:
460      if (param_idx == 1)
461	res = CCM_PRIMTYPE_STRING;
462      else if (param_idx >= 2 && param_idx <= 7)
463	res = CCM_PRIMTYPE_INTEGER;
464      break;
465    case CCMFMT_I1I2I3I4I5I6I7I8:
466      if (param_idx >= 1 && param_idx <= 8)
467	res = CCM_PRIMTYPE_INTEGER;
468      break;
469    case CCMFMT_L1I2I3I4I5I6I7I8I9:
470      if (param_idx == 1)
471	res = CCM_PRIMTYPE_STRING;
472      else if (param_idx >= 2 && param_idx <= 9)
473	res = CCM_PRIMTYPE_INTEGER;
474      break;
475    case CCMFMT_S1L2VV3:
476    case CCMFMT_S1R2VV3:
477    case CCMFMT_PP1:
478    case CCMFMT_VV1:
479    case CCMFMT_L1PP2:
480    case CCMFMT_L1VV2:
481    case CCMFMT_LL1:
482    case CCMFMT_R1VV2:
483      res = CCM_PRIMTYPE_STRING;
484      break;
485    case CCMFMT_P1I2LL3:
486    case CCMFMT_L1I2LL3:
487      if (param_idx == 2)
488	res = CCM_PRIMTYPE_INTEGER;
489      else
490	res = CCM_PRIMTYPE_STRING;
491      break;
492    case CCMFMT_L1II2:
493      if (param_idx == 1)
494	res = CCM_PRIMTYPE_STRING;
495      else
496	res = CCM_PRIMTYPE_INTEGER;
497      break;
498    case CCMFMT_I1LL2:
499      if (param_idx == 1)
500	res = CCM_PRIMTYPE_INTEGER;
501      else
502	res = CCM_PRIMTYPE_STRING;
503      break;
504    case CCMFMT_LAST:
505    default:
506      /* programming failure */
507      /* if(1) is hack to get around warning from C++ compiler */
508      if (1)
509	assert (0);
510      break;
511    }
512  return res;
513}
514
515static Ccm_Hitype_t
516ccm_param_hightype (COMPMSG_ID m, int param_idx)
517{
518  int vindex;
519  Ccm_Hitype_t res;
520
521  if (param_idx <= 0 || param_idx > ccm_num_params (m))
522    return CCM_HITYPE_NONE;
523  res = CCM_HITYPE_NONE; /* should always be updated */
524  vindex = ccm_vis_index (m);
525  switch (ccm_attrs[vindex].fmt)
526    {
527    case CCMFMT_NONE:
528      /* programming failure */
529      /* if(1) is hack to get around warning from C++ compiler */
530      if (1)
531	assert (0);
532      break;
533    case CCMFMT_S1:
534      if (param_idx == 1)
535	res = CCM_HITYPE_STRING;
536      break;
537    case CCMFMT_S1S2:
538      if (param_idx == 1 || param_idx == 2)
539	res = CCM_HITYPE_STRING;
540      break;
541    case CCMFMT_S1L2:
542      if (param_idx == 1)
543	res = CCM_HITYPE_STRING;
544      else if (param_idx == 2)
545	res = CCM_HITYPE_LOOPTAG;
546      break;
547    case CCMFMT_S1L2VV3:
548      if (param_idx == 1)
549	res = CCM_HITYPE_STRING;
550      else if (param_idx == 2)
551	res = CCM_HITYPE_LOOPTAG;
552      else
553	res = CCM_HITYPE_STRING;
554      break;
555    case CCMFMT_S1R2VV3:
556      if (param_idx == 1)
557	res = CCM_HITYPE_STRING;
558      else if (param_idx == 2)
559	res = CCM_HITYPE_REGIONTAG;
560      else
561	res = CCM_HITYPE_VARIABLE;
562      break;
563    case CCMFMT_S1X2:
564      if (param_idx == 1)
565	res = CCM_HITYPE_STRING;
566      else if (param_idx == 2)
567	res = CCM_HITYPE_HEXSTRING;
568      break;
569    case CCMFMT_P1:
570      if (param_idx == 1)
571	res = CCM_HITYPE_PROCEDURE;
572      break;
573    case CCMFMT_P1S2:
574      if (param_idx == 1)
575	res = CCM_HITYPE_PROCEDURE;
576      else if (param_idx == 2)
577	res = CCM_HITYPE_STRING;
578      break;
579    case CCMFMT_P1S2P3:
580      if (param_idx == 1 || param_idx == 3)
581	res = CCM_HITYPE_PROCEDURE;
582      else if (param_idx == 2)
583	res = CCM_HITYPE_STRING;
584      break;
585    case CCMFMT_P1S2P3I4:
586      if (param_idx == 1 || param_idx == 3)
587	res = CCM_HITYPE_PROCEDURE;
588      else if (param_idx == 2)
589	res = CCM_HITYPE_STRING;
590      else if (param_idx == 4)
591	res = CCM_HITYPE_INTEGER;
592      break;
593    case CCMFMT_P1S2I3:
594      if (param_idx == 1)
595	res = CCM_HITYPE_PROCEDURE;
596      else if (param_idx == 2)
597	res = CCM_HITYPE_STRING;
598      else if (param_idx == 3)
599	res = CCM_HITYPE_INTEGER;
600      break;
601    case CCMFMT_P1P2:
602      if (param_idx == 1 || param_idx == 2)
603	res = CCM_HITYPE_PROCEDURE;
604      break;
605    case CCMFMT_P1L2:
606      if (param_idx == 1)
607	res = CCM_HITYPE_PROCEDURE;
608      else if (param_idx == 2)
609	res = CCM_HITYPE_LOOPTAG;
610      break;
611    case CCMFMT_P1I2:
612      if (param_idx == 1)
613	res = CCM_HITYPE_PROCEDURE;
614      else if (param_idx == 2)
615	res = CCM_HITYPE_INTEGER;
616      break;
617    case CCMFMT_P1I2L3:
618      if (param_idx == 1)
619	res = CCM_HITYPE_PROCEDURE;
620      else if (param_idx == 2)
621	res = CCM_HITYPE_INTEGER;
622      else if (param_idx == 3)
623	res = CCM_HITYPE_LOOPTAG;
624      break;
625    case CCMFMT_P1I2I3:
626      if (param_idx == 1)
627	res = CCM_HITYPE_PROCEDURE;
628      else if (param_idx == 2 || param_idx == 3)
629	res = CCM_HITYPE_INTEGER;
630      break;
631    case CCMFMT_P1I2LL3:
632      if (param_idx == 1)
633	res = CCM_HITYPE_PROCEDURE;
634      else if (param_idx == 2)
635	res = CCM_HITYPE_INTEGER;
636      else
637	res = CCM_HITYPE_LOOPTAG;
638      break;
639    case CCMFMT_PP1:
640      res = CCM_HITYPE_PROCEDURE;
641      break;
642    case CCMFMT_V1:
643      if (param_idx == 1)
644	res = CCM_HITYPE_VARIABLE;
645      break;
646    case CCMFMT_V1V2:
647      if (param_idx == 1 || param_idx == 2)
648	res = CCM_HITYPE_VARIABLE;
649      break;
650    case CCMFMT_V1L2:
651      if (param_idx == 1)
652	res = CCM_HITYPE_VARIABLE;
653      else if (param_idx == 2)
654	res = CCM_HITYPE_LOOPTAG;
655      break;
656    case CCMFMT_VV1:
657      res = CCM_HITYPE_VARIABLE;
658      break;
659    case CCMFMT_L1:
660      if (param_idx == 1)
661	res = CCM_HITYPE_LOOPTAG;
662      break;
663    case CCMFMT_L1S2:
664      if (param_idx == 1)
665	res = CCM_HITYPE_LOOPTAG;
666      else if (param_idx == 2)
667	res = CCM_HITYPE_STRING;
668      break;
669    case CCMFMT_L1S2L3:
670      if (param_idx == 1 || param_idx == 3)
671	res = CCM_HITYPE_LOOPTAG;
672      else if (param_idx == 2)
673	res = CCM_HITYPE_STRING;
674      break;
675    case CCMFMT_L1P2:
676      if (param_idx == 1)
677	res = CCM_HITYPE_LOOPTAG;
678      else if (param_idx == 2)
679	res = CCM_HITYPE_PROCEDURE;
680      break;
681    case CCMFMT_L1P2I3:
682      if (param_idx == 1)
683	res = CCM_HITYPE_LOOPTAG;
684      else if (param_idx == 2)
685	res = CCM_HITYPE_PROCEDURE;
686      else if (param_idx == 3)
687	res = CCM_HITYPE_INTEGER;
688      break;
689    case CCMFMT_L1PP2:
690      if (param_idx == 1)
691	res = CCM_HITYPE_LOOPTAG;
692      else
693	res = CCM_HITYPE_PROCEDURE;
694      break;
695    case CCMFMT_L1VV2:
696      if (param_idx == 1)
697	res = CCM_HITYPE_LOOPTAG;
698      else
699	res = CCM_HITYPE_VARIABLE;
700      break;
701    case CCMFMT_L1L2:
702      if (param_idx == 1 || param_idx == 2)
703	res = CCM_HITYPE_LOOPTAG;
704      break;
705    case CCMFMT_L1L2L3:
706      if (param_idx >= 1 && param_idx <= 3)
707	res = CCM_HITYPE_LOOPTAG;
708      break;
709    case CCMFMT_LL1:
710      res = CCM_HITYPE_LOOPTAG;
711      break;
712    case CCMFMT_L1R2:
713      if (param_idx == 1)
714	res = CCM_HITYPE_LOOPTAG;
715      else if (param_idx == 2)
716	res = CCM_HITYPE_REGIONTAG;
717      break;
718    case CCMFMT_L1I2:
719      if (param_idx == 1)
720	res = CCM_HITYPE_LOOPTAG;
721      else if (param_idx == 2)
722	res = CCM_HITYPE_INTEGER;
723      break;
724    case CCMFMT_L1I2L3:
725      if (param_idx == 1 || param_idx == 3)
726	res = CCM_HITYPE_LOOPTAG;
727      else if (param_idx == 2)
728	res = CCM_HITYPE_INTEGER;
729      break;
730    case CCMFMT_L1I2LL3:
731      if (param_idx == 2)
732	res = CCM_HITYPE_INTEGER;
733      else
734	res = CCM_HITYPE_LOOPTAG;
735      break;
736    case CCMFMT_L1I2I3L4:
737      if (param_idx == 1 || param_idx == 4)
738	res = CCM_HITYPE_LOOPTAG;
739      else if (param_idx == 2 || param_idx == 3)
740	res = CCM_HITYPE_INTEGER;
741      break;
742    case CCMFMT_L1I2I3I4I5:
743      if (param_idx == 1)
744	res = CCM_HITYPE_LOOPTAG;
745      else if (param_idx >= 2 && param_idx <= 5)
746	res = CCM_HITYPE_INTEGER;
747      break;
748    case CCMFMT_L1I2I3I4I5I6I7:
749      if (param_idx == 1)
750	res = CCM_HITYPE_LOOPTAG;
751      else if (param_idx >= 2 && param_idx <= 7)
752	res = CCM_HITYPE_INTEGER;
753      break;
754    case CCMFMT_L1I2I3I4I5I6I7I8I9:
755      if (param_idx == 1)
756	res = CCM_HITYPE_LOOPTAG;
757      else if (param_idx >= 2 && param_idx <= 9)
758	res = CCM_HITYPE_INTEGER;
759      break;
760    case CCMFMT_L1II2:
761      if (param_idx == 1)
762	res = CCM_HITYPE_LOOPTAG;
763      else
764	res = CCM_HITYPE_INTEGER;
765      break;
766    case CCMFMT_R1:
767      if (param_idx == 1)
768	res = CCM_HITYPE_REGIONTAG;
769      break;
770    case CCMFMT_R1VV2:
771      if (param_idx == 1)
772	res = CCM_HITYPE_REGIONTAG;
773      else
774	res = CCM_HITYPE_VARIABLE;
775      break;
776    case CCMFMT_I1:
777      if (param_idx == 1)
778	res = CCM_HITYPE_INTEGER;
779      break;
780    case CCMFMT_I1P2I3:
781      if (param_idx == 1 || param_idx == 3)
782	res = CCM_HITYPE_INTEGER;
783      else if (param_idx == 2)
784	res = CCM_HITYPE_PROCEDURE;
785      break;
786    case CCMFMT_I1V2:
787      if (param_idx == 1)
788	res = CCM_HITYPE_INTEGER;
789      else if (param_idx == 2)
790	res = CCM_HITYPE_VARIABLE;
791      break;
792    case CCMFMT_I1V2V3:
793      if (param_idx == 1)
794	res = CCM_HITYPE_INTEGER;
795      else if (param_idx == 2 || param_idx == 3)
796	res = CCM_HITYPE_VARIABLE;
797      break;
798    case CCMFMT_I1L2:
799      if (param_idx == 1)
800	res = CCM_HITYPE_INTEGER;
801      else if (param_idx == 2)
802	res = CCM_HITYPE_LOOPTAG;
803      break;
804    case CCMFMT_I1LL2:
805      if (param_idx == 1)
806	res = CCM_HITYPE_INTEGER;
807      else
808	res = CCM_HITYPE_LOOPTAG;
809      break;
810    case CCMFMT_I1I2I3I4:
811      if (param_idx >= 1 && param_idx <= 4)
812	res = CCM_HITYPE_INTEGER;
813      break;
814    case CCMFMT_I1I2I3I4I5I6:
815      if (param_idx >= 1 && param_idx <= 6)
816	res = CCM_HITYPE_INTEGER;
817      break;
818    case CCMFMT_I1I2I3I4I5I6I7I8:
819      if (param_idx >= 1 && param_idx <= 8)
820	res = CCM_HITYPE_INTEGER;
821      break;
822    case CCMFMT_LAST:
823    default:
824      /* programming failure */
825      /* if(1) is hack to get around warning from C++ compiler */
826      if (1)
827	assert (0);
828      break;
829    }
830  return res;
831}
832
833static void
834ccm_vis_init ()
835{
836  int size, vindex;
837  static int done = 0;
838  if (done)
839    return;
840  done = 1;
841  size = ccm_vis_index ((COMPMSG_ID) (CCMV_BASIC << 8));
842  ccm_attrs = (Ccm_Attr_t *) calloc (size, sizeof (Ccm_Attr_t));
843  if (ccm_attrs == NULL)
844    exit (1);
845  vindex = ccm_vis_index (CCM_MODDATE);
846  ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL;
847  ccm_attrs[vindex].name = "CCM_MODDATE";
848  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
849				   "Source file %s, last modified on date %s");
850  ccm_attrs[vindex].fmt = CCMFMT_S1S2;
851
852  vindex = ccm_vis_index (CCM_COMPVER);
853  ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL;
854  ccm_attrs[vindex].name = "CCM_COMPVER";
855  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
856				   "Component %s, version %s");
857  ccm_attrs[vindex].fmt = CCMFMT_S1S2;
858
859  vindex = ccm_vis_index (CCM_COMPDATE);
860  ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL;
861  ccm_attrs[vindex].name = "CCM_COMPDATE";
862  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
863				   "Compilation date %s");
864  ccm_attrs[vindex].fmt = CCMFMT_S1;
865
866  vindex = ccm_vis_index (CCM_COMPOPT);
867  ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL;
868  ccm_attrs[vindex].name = "CCM_COMPOPT";
869  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
870				   "Compilation options %s");
871  ccm_attrs[vindex].fmt = CCMFMT_S1;
872
873  vindex = ccm_vis_index (CCM_ACOMPOPT);
874  ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
875  ccm_attrs[vindex].name = "CCM_ACOMPOPT";
876  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
877				   "Actual Compilation options %s");
878  ccm_attrs[vindex].fmt = CCMFMT_S1;
879
880  vindex = ccm_vis_index (CCM_VAR_ALIAS);
881  ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
882  ccm_attrs[vindex].name = "CCM_VAR_ALIAS";
883  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
884				   "Variable %s aliased to %s");
885  ccm_attrs[vindex].fmt = CCMFMT_V1V2;
886
887  vindex = ccm_vis_index (CCM_FBIRDIFF);
888  ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC;
889  ccm_attrs[vindex].name = "CCM_FBIRDIFF";
890  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
891				   "Profile feedback data inconsistent with"
892				   " intermediate representation file; check compiler"
893				   " version, flags and source file");
894  ccm_attrs[vindex].fmt = CCMFMT_NONE;
895
896  vindex = ccm_vis_index (CCM_OPTRED_SWAP);
897  ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC;
898  ccm_attrs[vindex].name = "CCM_OPTRED_SWAP";
899  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
900				   "Optimization level for %s reduced from %d to"
901				   " %d due to insufficient swap space");
902  ccm_attrs[vindex].fmt = CCMFMT_P1I2I3;
903
904  vindex = ccm_vis_index (CCM_OPTRED_CPLX);
905  ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC;
906  ccm_attrs[vindex].name = "CCM_OPTRED_CPLX";
907  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
908				   "Optimization level for %s reduced from %d to"
909				   " %d due to program complexity");
910  ccm_attrs[vindex].fmt = CCMFMT_P1I2I3;
911
912  vindex = ccm_vis_index (CCM_UNKNOWN);
913  ccm_attrs[vindex].vis = CCMV_WARN | CCMV_BASIC;
914  ccm_attrs[vindex].name = "CCM_UNKNOWN";
915  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
916				   "Unexpected compiler comment %d");
917  ccm_attrs[vindex].fmt = CCMFMT_I1;
918
919  vindex = ccm_vis_index (CCM_UNPAR_CALL);
920  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
921  ccm_attrs[vindex].name = "CCM_UNPAR_CALL";
922  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
923				   "Loop below not parallelized because it contains a"
924				   " call to %s");
925  ccm_attrs[vindex].fmt = CCMFMT_P1;
926
927  vindex = ccm_vis_index (CCM_PAR_SER);
928  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS;
929  ccm_attrs[vindex].name = "CCM_PAR_SER";
930  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
931				   "Both serial and parallel versions generated for"
932				   " loop below");
933  ccm_attrs[vindex].fmt = CCMFMT_NONE;
934
935  vindex = ccm_vis_index (CCM_PAR_SER_VER);
936  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS;
937  ccm_attrs[vindex].name = "CCM_PAR_SER_VER";
938  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
939				   "Both serial and parallel versions generated for"
940				   " loop below; with parallel version used if %s,"
941				   " serial otherwise");
942  ccm_attrs[vindex].fmt = CCMFMT_S1;
943
944  vindex = ccm_vis_index (CCM_PAR_DRECTV);
945  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
946  ccm_attrs[vindex].name = "CCM_PAR_DRECTV";
947  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
948				   "Loop below parallelized by explicit user"
949				   " directive");
950  ccm_attrs[vindex].fmt = CCMFMT_NONE;
951
952  vindex = ccm_vis_index (CCM_APAR);
953  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
954  ccm_attrs[vindex].name = "CCM_APAR";
955  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
956				   "Loop below autoparallelized");
957  ccm_attrs[vindex].fmt = CCMFMT_NONE;
958
959  vindex = ccm_vis_index (CCM_AUTOPAR);
960  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT;
961  ccm_attrs[vindex].name = "CCM_AUTOPAR";
962  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
963				   "Loop below autoparallelized; equivalent"
964				   " explict directive is %s");
965  ccm_attrs[vindex].fmt = CCMFMT_S1;
966
967  vindex = ccm_vis_index (CCM_UNPAR_DD);
968  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
969  ccm_attrs[vindex].name = "CCM_UNPAR_DD";
970  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
971				   "Loop below could not be parallelized because of a"
972				   " data dependency on %s");
973  ccm_attrs[vindex].fmt = CCMFMT_VV1;
974
975  vindex = ccm_vis_index (CCM_UNPAR_DDA);
976  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
977  ccm_attrs[vindex].name = "CCM_UNPAR_DDA";
978  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
979				   "Loop below could not be parallelized because of a"
980				   " data dependency or aliasing of %s");
981  ccm_attrs[vindex].fmt = CCMFMT_VV1;
982
983  vindex = ccm_vis_index (CCM_UNPAR_ANONDD);
984  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
985  ccm_attrs[vindex].name = "CCM_UNPAR_ANONDD";
986  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
987				   "Loop below could not be parallelized because of"
988				   " an anonymous data dependency");
989  ccm_attrs[vindex].fmt = CCMFMT_NONE;
990
991  vindex = ccm_vis_index (CCM_UNPAR_ANONDDA);
992  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
993  ccm_attrs[vindex].name = "CCM_UNPAR_ANONDDA";
994  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
995				   "Loop below could not be parallelized because of"
996				   " an anonymous data dependency or aliasing");
997  ccm_attrs[vindex].fmt = CCMFMT_NONE;
998
999  vindex = ccm_vis_index (CCM_PAR_WORK);
1000  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1001  ccm_attrs[vindex].name = "CCM_PAR_WORK";
1002  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1003				   "Loop below parallelized, but might not contain"
1004				   " enough work to be efficiently run in parallel");
1005  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1006
1007  vindex = ccm_vis_index (CCM_UNPAR_EXIT);
1008  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1009  ccm_attrs[vindex].name = "CCM_UNPAR_EXIT";
1010  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1011				   "Loop below not parallelized because it contains"
1012				   " multiple exit points");
1013  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1014
1015  vindex = ccm_vis_index (CCM_UNPAR_STRNG);
1016  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1017  ccm_attrs[vindex].name = "CCM_UNPAR_STRNG";
1018  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1019				   "Loop below not parallelized because it contains a"
1020				   " strange flow of control");
1021  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1022
1023  vindex = ccm_vis_index (CCM_UNPAR_IO);
1024  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1025  ccm_attrs[vindex].name = "CCM_UNPAR_IO";
1026  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1027				   "Loop below not parallelized because it contains"
1028				   " I/O or other MT-unsafe calls");
1029  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1030
1031  vindex = ccm_vis_index (CCM_PAR_BODY_NAME);
1032  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_OBS;
1033  ccm_attrs[vindex].name = "CCM_PAR_BODY_NAME";
1034  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1035				   "Parallel loop-body code is in function %s");
1036  ccm_attrs[vindex].fmt = CCMFMT_P1;
1037
1038  vindex = ccm_vis_index (CCM_UNPAR_NLOOPIDX);
1039  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1040  ccm_attrs[vindex].name = "CCM_UNPAR_NLOOPIDX";
1041  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1042				   "Loop below not parallelized because loop index"
1043				   " not found");
1044  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1045
1046  vindex = ccm_vis_index (CCM_UNPAR_DRECTV);
1047  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1048  ccm_attrs[vindex].name = "CCM_UNPAR_DRECTV";
1049  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1050				   "Loop below not parallelized because of explicit"
1051				   " user directive");
1052  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1053
1054  vindex = ccm_vis_index (CCM_UNPAR_NOTPROFIT);
1055  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1056  ccm_attrs[vindex].name = "CCM_UNPAR_NOTPROFIT";
1057  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1058				   "Loop below not parallelized because it was not"
1059				   " profitable to do so");
1060  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1061
1062  vindex = ccm_vis_index (CCM_UNPAR_NEST);
1063  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1064  ccm_attrs[vindex].name = "CCM_UNPAR_NEST";
1065  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1066				   "Loop below not parallelized because it was"
1067				   " nested in a parallel loop");
1068  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1069
1070  vindex = ccm_vis_index (CCM_UNPAR);
1071  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1072  ccm_attrs[vindex].name = "CCM_UNPAR";
1073  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1074				   "Loop below not parallelized");
1075  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1076
1077  vindex = ccm_vis_index (CCM_UNPAR_NOAUTO);
1078  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1079  ccm_attrs[vindex].name = "CCM_UNPAR_NOAUTO";
1080  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1081				   "Loop below not parallelized because"
1082				   " autoparallelization is not enabled");
1083  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1084
1085  vindex = ccm_vis_index (CCM_PR_L_VAR);
1086  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1087  ccm_attrs[vindex].name = "CCM_PR_L_VAR";
1088  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1089				   "Private variables in loop below:"
1090				   " %s");
1091  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1092
1093  vindex = ccm_vis_index (CCM_SH_L_VAR);
1094  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1095  ccm_attrs[vindex].name = "CCM_SH_L_VAR";
1096  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1097				   "Shared variables in loop below:"
1098				   " %s");
1099  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1100
1101  vindex = ccm_vis_index (CCM_TP_L_VAR);
1102  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1103  ccm_attrs[vindex].name = "CCM_TP_L_VAR";
1104  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1105				   "Threadprivate variables in loop below:"
1106				   " %s");
1107  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1108
1109  vindex = ccm_vis_index (CCM_RV_L_VAR);
1110  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1111  ccm_attrs[vindex].name = "CCM_RV_L_VAR";
1112  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1113				   "Reduction variables in loop below:"
1114				   " %s");
1115  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1116
1117  vindex = ccm_vis_index (CCM_IM_L_VAR);
1118  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1119  ccm_attrs[vindex].name = "CCM_IM_L_VAR";
1120  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1121				   "Implicit variables in loop below:"
1122				   " %s");
1123  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1124
1125  vindex = ccm_vis_index (CCM_PR_O_VAR);
1126  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1127  ccm_attrs[vindex].name = "CCM_PR_O_VAR";
1128  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1129				   "Private variables in OpenMP construct below:"
1130				   " %s");
1131  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1132
1133  vindex = ccm_vis_index (CCM_SH_O_VAR);
1134  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1135  ccm_attrs[vindex].name = "CCM_SH_O_VAR";
1136  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1137				   "Shared variables in OpenMP construct below:"
1138				   " %s");
1139  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1140
1141  vindex = ccm_vis_index (CCM_TP_O_VAR);
1142  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1143  ccm_attrs[vindex].name = "CCM_TP_O_VAR";
1144  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1145				   "Threadprivate variables in OpenMP construct"
1146				   " below: %s");
1147  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1148
1149  vindex = ccm_vis_index (CCM_RV_O_VAR);
1150  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1151  ccm_attrs[vindex].name = "CCM_RV_O_VAR";
1152  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1153				   "Reduction variables in OpenMP construct below:"
1154				   " %s");
1155  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1156
1157  vindex = ccm_vis_index (CCM_IM_O_VAR);
1158  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1159  ccm_attrs[vindex].name = "CCM_IM_O_VAR";
1160  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1161				   "Implicit variables in OpenMP construct below:"
1162				   " %s");
1163  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1164
1165  vindex = ccm_vis_index (CCM_UNPAR_IN_OMP);
1166  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1167  ccm_attrs[vindex].name = "CCM_UNPAR_IN_OMP";
1168  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1169				   "Loop below not parallelized because it is inside"
1170				   " an OpenMP region");
1171  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1172
1173  vindex = ccm_vis_index (CCM_FP_O_VAR);
1174  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1175  ccm_attrs[vindex].name = "CCM_FP_O_VAR";
1176  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1177				   "Firstprivate variables in OpenMP construct below:"
1178				   " %s");
1179  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1180
1181  vindex = ccm_vis_index (CCM_LP_O_VAR);
1182  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1183  ccm_attrs[vindex].name = "CCM_LP_O_VAR";
1184  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1185				   "Lastprivate variables in OpenMP construct below:"
1186				   " %s");
1187  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1188
1189  vindex = ccm_vis_index (CCM_CP_O_VAR);
1190  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1191  ccm_attrs[vindex].name = "CCM_CP_O_VAR";
1192  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1193				   "Copyprivate variables in OpenMP construct below:"
1194				   " %s");
1195  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1196
1197  vindex = ccm_vis_index (CCM_PR_OAS_VAR);
1198  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1199  ccm_attrs[vindex].name = "CCM_PR_OAS_VAR";
1200  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1201				   "Variables autoscoped as PRIVATE in OpenMP"
1202				   " construct below: %s");
1203  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1204
1205  vindex = ccm_vis_index (CCM_SH_OAS_VAR);
1206  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1207  ccm_attrs[vindex].name = "CCM_SH_OAS_VAR";
1208  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1209				   "Variables autoscoped as SHARED in OpenMP"
1210				   " construct below: %s");
1211  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1212
1213  vindex = ccm_vis_index (CCM_FP_OAS_VAR);
1214  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1215  ccm_attrs[vindex].name = "CCM_FP_OAS_VAR";
1216  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1217				   "Variables autoscoped as FIRSTPRIVATE in OpenMP"
1218				   " construct below: %s");
1219  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1220
1221  vindex = ccm_vis_index (CCM_LP_OAS_VAR);
1222  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1223  ccm_attrs[vindex].name = "CCM_LP_OAS_VAR";
1224  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1225				   "Variables autoscoped as LASTPRIVATE in OpenMP"
1226				   " construct below: %s");
1227  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1228
1229  vindex = ccm_vis_index (CCM_RV_OAS_VAR);
1230  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1231  ccm_attrs[vindex].name = "CCM_RV_OAS_VAR";
1232  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1233				   "Variables autoscoped as REDUCTION in OpenMP"
1234				   " construct below: %s");
1235  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1236
1237  vindex = ccm_vis_index (CCM_FAIL_OAS_VAR);
1238  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN | CCMV_OBS;
1239  ccm_attrs[vindex].name = "CCM_FAIL_OAS_VAR";
1240  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1241				   "Variables cannot be autoscoped in OpenMP"
1242				   " construct below: %s");
1243  ccm_attrs[vindex].fmt = CCMFMT_VV1;
1244
1245  vindex = ccm_vis_index (CCM_SERIALIZE_OAS);
1246  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN | CCMV_OBS;
1247  ccm_attrs[vindex].name = "CCM_SERIALIZE_OAS";
1248  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1249				   "OpenMP parallel region below is serialized"
1250				   " because autoscoping has failed");
1251  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1252
1253  vindex = ccm_vis_index (CCM_UNPAR_CALL_2);
1254  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1255  ccm_attrs[vindex].name = "CCM_UNPAR_CALL_2";
1256  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1257				   "%s not parallelized because it contains calls"
1258				   " to: %s");
1259  ccm_attrs[vindex].fmt = CCMFMT_L1PP2;
1260
1261  vindex = ccm_vis_index (CCM_PAR_DRECTV_2);
1262  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1263  ccm_attrs[vindex].name = "CCM_PAR_DRECTV_2";
1264  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1265				   "%s parallelized by explicit user directive");
1266  ccm_attrs[vindex].fmt = CCMFMT_L1;
1267
1268  vindex = ccm_vis_index (CCM_APAR_2);
1269  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1270  ccm_attrs[vindex].name = "CCM_APAR_2";
1271  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1272				   "%s autoparallelized");
1273  ccm_attrs[vindex].fmt = CCMFMT_L1;
1274
1275  vindex = ccm_vis_index (CCM_AUTOPAR_2);
1276  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT;
1277  ccm_attrs[vindex].name = "CCM_AUTOPAR_2";
1278  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1279				   "%s autoparallelized; equivalent"
1280				   " explict directive is %s");
1281  ccm_attrs[vindex].fmt = CCMFMT_L1S2;
1282
1283  vindex = ccm_vis_index (CCM_UNPAR_DD_2);
1284  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1285  ccm_attrs[vindex].name = "CCM_UNPAR_DD_2";
1286  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1287				   "%s could not be parallelized because of"
1288				   " data dependences on: %s");
1289  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1290
1291  vindex = ccm_vis_index (CCM_UNPAR_DDA_2);
1292  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1293  ccm_attrs[vindex].name = "CCM_UNPAR_DDA_2";
1294  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1295				   "%s could not be parallelized because of a"
1296				   " data dependence or aliasing of: %s");
1297  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1298
1299  vindex = ccm_vis_index (CCM_UNPAR_ANONDD_2);
1300  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1301  ccm_attrs[vindex].name = "CCM_UNPAR_ANONDD_2";
1302  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1303				   "%s could not be parallelized because of an"
1304				   " anonymous data dependence");
1305  ccm_attrs[vindex].fmt = CCMFMT_L1;
1306
1307  vindex = ccm_vis_index (CCM_UNPAR_ANONDDA_2);
1308  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1309  ccm_attrs[vindex].name = "CCM_UNPAR_ANONDDA_2";
1310  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1311				   "%s could not be parallelized because of an"
1312				   " anonymous data dependence or aliasing");
1313  ccm_attrs[vindex].fmt = CCMFMT_L1;
1314
1315  vindex = ccm_vis_index (CCM_PAR_WORK_2);
1316  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1317  ccm_attrs[vindex].name = "CCM_PAR_WORK_2";
1318  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1319				   "%s parallelized, but might not contain"
1320				   " enough work to run efficiently in parallel");
1321  ccm_attrs[vindex].fmt = CCMFMT_L1;
1322
1323  vindex = ccm_vis_index (CCM_UNPAR_EXIT_2);
1324  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1325  ccm_attrs[vindex].name = "CCM_UNPAR_EXIT_2";
1326  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1327				   "%s not parallelized because it contains"
1328				   " multiple exit points");
1329  ccm_attrs[vindex].fmt = CCMFMT_L1;
1330
1331  vindex = ccm_vis_index (CCM_UNPAR_STRANGE_2);
1332  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1333  ccm_attrs[vindex].name = "CCM_UNPAR_STRANGE_2";
1334  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1335				   "%s not parallelized because it contains a"
1336				   " strange flow of control");
1337  ccm_attrs[vindex].fmt = CCMFMT_L1;
1338
1339  vindex = ccm_vis_index (CCM_UNPAR_IO_2);
1340  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1341  ccm_attrs[vindex].name = "CCM_UNPAR_IO_2";
1342  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1343				   "%s not parallelized because it contains"
1344				   " I/O or other MT-unsafe calls");
1345  ccm_attrs[vindex].fmt = CCMFMT_L1;
1346
1347  vindex = ccm_vis_index (CCM_PAR_BODY_NAME_2);
1348  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP;
1349  ccm_attrs[vindex].name = "CCM_PAR_BODY_NAME_2";
1350  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1351				   "%s parallel loop-body code placed in"
1352				   " function %s along with %d inner loops");
1353  ccm_attrs[vindex].fmt = CCMFMT_L1P2I3;
1354
1355  vindex = ccm_vis_index (CCM_UNPAR_NLOOPIDX_2);
1356  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1357  ccm_attrs[vindex].name = "CCM_UNPAR_NLOOPIDX_2";
1358  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1359				   "%s not parallelized because loop index not"
1360				   " found");
1361  ccm_attrs[vindex].fmt = CCMFMT_L1;
1362
1363  vindex = ccm_vis_index (CCM_UNPAR_DRECTV_2);
1364  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1365  ccm_attrs[vindex].name = "CCM_UNPAR_DRECTV_2";
1366  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1367				   "%s not parallelized because of explicit"
1368				   " user directive");
1369  ccm_attrs[vindex].fmt = CCMFMT_L1;
1370
1371  vindex = ccm_vis_index (CCM_UNPAR_NOTPROFIT_2);
1372  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1373  ccm_attrs[vindex].name = "CCM_UNPAR_NOTPROFIT_2";
1374  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1375				   "%s not parallelized because it was not"
1376				   " profitable to do so");
1377  ccm_attrs[vindex].fmt = CCMFMT_L1;
1378
1379  vindex = ccm_vis_index (CCM_UNPAR_NEST_2);
1380  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1381  ccm_attrs[vindex].name = "CCM_UNPAR_NEST_2";
1382  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1383				   "%s not parallelized because it was"
1384				   " nested within a parallel loop");
1385  ccm_attrs[vindex].fmt = CCMFMT_L1;
1386
1387  vindex = ccm_vis_index (CCM_UNPAR_2);
1388  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1389  ccm_attrs[vindex].name = "CCM_UNPAR_2";
1390  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1391				   "%s not parallelized");
1392  ccm_attrs[vindex].fmt = CCMFMT_L1;
1393
1394  vindex = ccm_vis_index (CCM_UNPAR_NOAUTO_2);
1395  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1396  ccm_attrs[vindex].name = "CCM_UNPAR_NOAUTO_2";
1397  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1398				   "%s not parallelized because"
1399				   " autoparallelization is not enabled");
1400  ccm_attrs[vindex].fmt = CCMFMT_L1;
1401
1402  vindex = ccm_vis_index (CCM_PR_L_VAR_2);
1403  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1404  ccm_attrs[vindex].name = "CCM_PR_L_VAR_2";
1405  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1406				   "Private variables in %s:"
1407				   " %s");
1408  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1409
1410  vindex = ccm_vis_index (CCM_SH_L_VAR_2);
1411  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1412  ccm_attrs[vindex].name = "CCM_SH_L_VAR_2";
1413  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1414				   "Shared variables in %s:"
1415				   " %s");
1416  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1417
1418  vindex = ccm_vis_index (CCM_TP_L_VAR_2);
1419  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1420  ccm_attrs[vindex].name = "CCM_TP_L_VAR_2";
1421  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1422				   "Threadprivate variables in %s:"
1423				   " %s");
1424  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1425
1426  vindex = ccm_vis_index (CCM_RV_L_VAR_2);
1427  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1428  ccm_attrs[vindex].name = "CCM_RV_L_VAR_2";
1429  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1430				   "Reduction variables of operator %s in %s:"
1431				   " %s");
1432  ccm_attrs[vindex].fmt = CCMFMT_S1L2VV3;
1433
1434  vindex = ccm_vis_index (CCM_IM_L_VAR_2);
1435  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1436  ccm_attrs[vindex].name = "CCM_IM_L_VAR_2";
1437  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1438				   "Implicit variables in %s:"
1439				   " %s");
1440  ccm_attrs[vindex].fmt = CCMFMT_L1VV2;
1441
1442  vindex = ccm_vis_index (CCM_PR_O_VAR_2);
1443  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1444  ccm_attrs[vindex].name = "CCM_PR_O_VAR_2";
1445  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1446				   "Private variables in %s: %s");
1447  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1448
1449  vindex = ccm_vis_index (CCM_SH_O_VAR_2);
1450  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1451  ccm_attrs[vindex].name = "CCM_SH_O_VAR_2";
1452  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1453				   "Shared variables in %s: %s");
1454  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1455
1456  vindex = ccm_vis_index (CCM_TP_O_VAR_2);
1457  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1458  ccm_attrs[vindex].name = "CCM_TP_O_VAR_2";
1459  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1460				   "Threadprivate variables in %s: %s");
1461  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1462
1463  vindex = ccm_vis_index (CCM_RV_O_VAR_2);
1464  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1465  ccm_attrs[vindex].name = "CCM_RV_O_VAR_2";
1466  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1467				   "Reduction variables of operator %s in %s:"
1468				   " %s");
1469  ccm_attrs[vindex].fmt = CCMFMT_S1R2VV3;
1470
1471  vindex = ccm_vis_index (CCM_IM_O_VAR_2);
1472  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1473  ccm_attrs[vindex].name = "CCM_IM_O_VAR_2";
1474  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1475				   "Implicit variables in %s: %s");
1476  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1477
1478  vindex = ccm_vis_index (CCM_UNPAR_IN_OMP_2);
1479  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1480  ccm_attrs[vindex].name = "CCM_UNPAR_IN_OMP_2";
1481  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1482				   "%s not parallelized because it is inside"
1483				   " OpenMP region %s");
1484  ccm_attrs[vindex].fmt = CCMFMT_L1R2;
1485
1486  vindex = ccm_vis_index (CCM_FP_O_VAR_2);
1487  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1488  ccm_attrs[vindex].name = "CCM_FP_O_VAR_2";
1489  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1490				   "Firstprivate variables in %s: %s");
1491  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1492
1493  vindex = ccm_vis_index (CCM_LP_O_VAR_2);
1494  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1495  ccm_attrs[vindex].name = "CCM_LP_O_VAR_2";
1496  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1497				   "Lastprivate variables in %s: %s");
1498  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1499
1500  vindex = ccm_vis_index (CCM_CP_O_VAR_2);
1501  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1502  ccm_attrs[vindex].name = "CCM_CP_O_VAR_2";
1503  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1504				   "Copyprivate variables in %s:"
1505				   " %s");
1506  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1507
1508  vindex = ccm_vis_index (CCM_PR_OAS_VAR_2);
1509  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1510  ccm_attrs[vindex].name = "CCM_PR_OAS_VAR_2";
1511  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1512				   "Variables autoscoped as PRIVATE in %s:"
1513				   " %s");
1514  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1515
1516  vindex = ccm_vis_index (CCM_SH_OAS_VAR_2);
1517  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1518  ccm_attrs[vindex].name = "CCM_SH_OAS_VAR_2";
1519  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1520				   "Variables autoscoped as SHARED in %s: %s");
1521  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1522
1523  vindex = ccm_vis_index (CCM_FP_OAS_VAR_2);
1524  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1525  ccm_attrs[vindex].name = "CCM_FP_OAS_VAR_2";
1526  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1527				   "Variables autoscoped as FIRSTPRIVATE in %s:"
1528				   " %s");
1529  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1530
1531  vindex = ccm_vis_index (CCM_LP_OAS_VAR_2);
1532  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1533  ccm_attrs[vindex].name = "CCM_LP_OAS_VAR_2";
1534  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1535				   "Variables autoscoped as LASTPRIVATE in %s:"
1536				   " %s");
1537  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1538
1539  vindex = ccm_vis_index (CCM_RV_OAS_VAR_2);
1540  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1541  ccm_attrs[vindex].name = "CCM_RV_OAS_VAR_2";
1542  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1543				   "Variables autoscoped as REDUCTION of operator"
1544				   " %s in %s: %s");
1545  ccm_attrs[vindex].fmt = CCMFMT_S1R2VV3;
1546
1547  vindex = ccm_vis_index (CCM_FAIL_OAS_VAR_2);
1548  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN;
1549  ccm_attrs[vindex].name = "CCM_FAIL_OAS_VAR_2";
1550  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1551				   "Variables treated as shared because they cannot"
1552				   " be autoscoped in %s: %s");
1553  ccm_attrs[vindex].fmt = CCMFMT_R1VV2;
1554
1555  vindex = ccm_vis_index (CCM_SERIALIZE_OAS_2);
1556  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC | CCMV_WARN;
1557  ccm_attrs[vindex].name = "CCM_SERIALIZE_OAS_2";
1558  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1559				   "%s will be executed by a single thread because"
1560				   " autoscoping for some variables was not successful");
1561  ccm_attrs[vindex].fmt = CCMFMT_R1;
1562
1563  vindex = ccm_vis_index (CCM_QPERMVEC);
1564  ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
1565  ccm_attrs[vindex].name = "CCM_QPERMVEC";
1566  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1567				   "Is %s a permutation vector during execution of"
1568				   " %s?");
1569  ccm_attrs[vindex].fmt = CCMFMT_V1L2;
1570
1571  vindex = ccm_vis_index (CCM_QEXPR);
1572  ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
1573  ccm_attrs[vindex].name = "CCM_QEXPR";
1574  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1575				   "Is expression %s true for %s?");
1576  ccm_attrs[vindex].fmt = CCMFMT_S1L2;
1577
1578  vindex = ccm_vis_index (CCM_QSAFECALL);
1579  ccm_attrs[vindex].vis = CCMV_QUERY | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
1580  ccm_attrs[vindex].name = "CCM_QSAFECALL";
1581  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1582				   "Is subroutine %s MP-safe as used in %s?");
1583  ccm_attrs[vindex].fmt = CCMFMT_P1L2;
1584
1585  vindex = ccm_vis_index (CCM_LCOST);
1586  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1587  ccm_attrs[vindex].name = "CCM_LCOST";
1588  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1589				   "Loop below estimated to cost %d cycles per"
1590				   " iteration");
1591  ccm_attrs[vindex].fmt = CCMFMT_I1;
1592
1593  vindex = ccm_vis_index (CCM_UNROLL);
1594  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1595  ccm_attrs[vindex].name = "CCM_UNROLL";
1596  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1597				   "Loop below unrolled %d times");
1598  ccm_attrs[vindex].fmt = CCMFMT_I1;
1599
1600  vindex = ccm_vis_index (CCM_IMIX);
1601  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1602  ccm_attrs[vindex].name = "CCM_IMIX";
1603  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1604				   "Loop below has %d loads, %d stores,"
1605				   " %d prefetches, %d FPadds, %d FPmuls, and"
1606				   " %d FPdivs per iteration");
1607  ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6;
1608
1609  vindex = ccm_vis_index (CCM_SPILLS);
1610  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT | CCMV_OBS;
1611  ccm_attrs[vindex].name = "CCM_SPILLS";
1612  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1613				   "Loop below required %d integer register spills,"
1614				   " %d FP register spills, and used"
1615				   " %d integer registers and %d FP registers");
1616  ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4;
1617
1618  vindex = ccm_vis_index (CCM_LFISSION);
1619  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1620  ccm_attrs[vindex].name = "CCM_LFISSION";
1621  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1622				   "Loop below fissioned into %d loops");
1623  ccm_attrs[vindex].fmt = CCMFMT_I1;
1624
1625  vindex = ccm_vis_index (CCM_LPEEL);
1626  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1627  ccm_attrs[vindex].name = "CCM_LPEEL";
1628  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1629				   "Loop below had iterations peeled off for better"
1630				   " unrolling and/or parallelization");
1631  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1632
1633  vindex = ccm_vis_index (CCM_LBLOCKED);
1634  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1635  ccm_attrs[vindex].name = "CCM_LBLOCKED";
1636  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1637				   "Loop below blocked by %d for improved cache"
1638				   " performance");
1639  ccm_attrs[vindex].fmt = CCMFMT_I1;
1640
1641  vindex = ccm_vis_index (CCM_LTILED);
1642  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1643  ccm_attrs[vindex].name = "CCM_LTILED";
1644  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1645				   "Loop below tiled for better performance");
1646  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1647
1648  vindex = ccm_vis_index (CCM_LUNRJAM);
1649  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1650  ccm_attrs[vindex].name = "CCM_LUNRJAM";
1651  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1652				   "Loop below unrolled and jammed");
1653  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1654
1655  vindex = ccm_vis_index (CCM_LWHILE2DO);
1656  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1657  ccm_attrs[vindex].name = "CCM_LWHILE2DO";
1658  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1659				   "Bounds test for loop below moved to top of loop");
1660  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1661
1662  vindex = ccm_vis_index (CCM_L2CALL);
1663  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1664  ccm_attrs[vindex].name = "CCM_L2CALL";
1665  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1666				   "Loop below replaced by a call to %s");
1667  ccm_attrs[vindex].fmt = CCMFMT_P1;
1668
1669  vindex = ccm_vis_index (CCM_LDEAD);
1670  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1671  ccm_attrs[vindex].name = "CCM_LDEAD";
1672  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1673				   "Loop below deleted as dead code");
1674  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1675
1676  vindex = ccm_vis_index (CCM_LINTRCHNG);
1677  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1678  ccm_attrs[vindex].name = "CCM_LINTRCHNG";
1679  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1680				   "Loop below interchanged with loop on line %d");
1681  ccm_attrs[vindex].fmt = CCMFMT_I1;
1682
1683  vindex = ccm_vis_index (CCM_FUSEDTO);
1684  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1685  ccm_attrs[vindex].name = "CCM_FUSEDTO";
1686  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1687				   "Loop below fused with loop on line %d");
1688  ccm_attrs[vindex].fmt = CCMFMT_I1;
1689
1690  vindex = ccm_vis_index (CCM_FUSEDFROM);
1691  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1692  ccm_attrs[vindex].name = "CCM_FUSEDFROM";
1693  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1694				   "Loop from line %d fused with loop below");
1695  ccm_attrs[vindex].fmt = CCMFMT_I1;
1696
1697  vindex = ccm_vis_index (CCM_VECINTRNSC);
1698  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1699  ccm_attrs[vindex].name = "CCM_VECINTRNSC";
1700  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1701				   "Loop below transformed to use calls to vector"
1702				   " intrinsic %s");
1703  ccm_attrs[vindex].fmt = CCMFMT_PP1;
1704
1705  vindex = ccm_vis_index (CCM_LSTRIPMINE);
1706  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1707  ccm_attrs[vindex].name = "CCM_LSTRIPMINE";
1708  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1709				   "Loop below strip-mined");
1710  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1711
1712  vindex = ccm_vis_index (CCM_LNEST2LOOPS);
1713  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1714  ccm_attrs[vindex].name = "CCM_LNEST2LOOPS";
1715  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1716				   "Loop below collapsed with loop on line %d");
1717  ccm_attrs[vindex].fmt = CCMFMT_I1;
1718
1719  vindex = ccm_vis_index (CCM_LREVERSE);
1720  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1721  ccm_attrs[vindex].name = "CCM_LREVERSE";
1722  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1723				   "Loop below has had its iteration direction"
1724				   " reversed");
1725  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1726
1727  vindex = ccm_vis_index (CCM_IMIX2);
1728  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1729  ccm_attrs[vindex].name = "CCM_IMIX2";
1730  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1731				   "Loop below has %d loads, %d stores,"
1732				   " %d prefetches, %d FPadds, %d FPmuls,"
1733				   " %d FPdivs, %d FPsubs, and %d FPsqrts per"
1734				   " iteration");
1735  ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6I7I8;
1736
1737  vindex = ccm_vis_index (CCM_LUNRFULL);
1738  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1739  ccm_attrs[vindex].name = "CCM_LUNRFULL";
1740  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1741				   "Loop below fully unrolled");
1742  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1743
1744  vindex = ccm_vis_index (CCM_ELIM_NOAMORTINST);
1745  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1746  ccm_attrs[vindex].name = "CCM_ELIM_NOAMORTINST";
1747  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1748				   "Loop below was eliminated as it contains no"
1749				   " non-amortizable instructions");
1750  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1751
1752  vindex = ccm_vis_index (CCM_COMP_DALIGN);
1753  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1754  ccm_attrs[vindex].name = "CCM_COMP_DALIGN";
1755  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1756				   "Performance of loop below could be improved"
1757				   " by compiling with -dalign");
1758  ccm_attrs[vindex].fmt = CCMFMT_NONE;
1759
1760  vindex = ccm_vis_index (CCM_INTIMIX);
1761  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1762  ccm_attrs[vindex].name = "CCM_INTIMIX";
1763  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1764				   "Loop below has %d int-loads, %d int-stores,"
1765				   " %d alu-ops, %d muls, %d int-divs and"
1766				   " %d shifts per iteration");
1767  ccm_attrs[vindex].fmt = CCMFMT_I1I2I3I4I5I6;
1768
1769  vindex = ccm_vis_index (CCM_LMULTI_VERSION);
1770  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1771  ccm_attrs[vindex].name = "CCM_LMULTI_VERSION";
1772  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1773				   "%s multi-versioned.  Specialized version"
1774				   " is %s");
1775  ccm_attrs[vindex].fmt = CCMFMT_L1L2;
1776
1777  vindex = ccm_vis_index (CCM_LCOST_2);
1778  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1779  ccm_attrs[vindex].name = "CCM_LCOST_2";
1780  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1781				   "%s estimated to cost %d cycles per iteration");
1782  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
1783
1784  vindex = ccm_vis_index (CCM_UNROLL_2);
1785  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1786  ccm_attrs[vindex].name = "CCM_UNROLL_2";
1787  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1788				   "%s unrolled %d times");
1789  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
1790
1791  vindex = ccm_vis_index (CCM_IMIX_B);
1792  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
1793  ccm_attrs[vindex].name = "CCM_IMIX_B";
1794  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1795				   "%s has %d loads, %d stores,"
1796				   " %d prefetches, %d FPadds, %d FPmuls, and"
1797				   " %d FPdivs per iteration");
1798  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7;
1799
1800  vindex = ccm_vis_index (CCM_SPILLS_2);
1801  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_UNIMPL | CCMV_WANT;
1802  ccm_attrs[vindex].name = "CCM_SPILLS_2";
1803  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1804				   "%s required %d integer register spills,"
1805				   " %d FP register spills, and used"
1806				   " %d integer registers and %d FP registers");
1807  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5;
1808
1809  vindex = ccm_vis_index (CCM_LFISSION_2);
1810  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1811  ccm_attrs[vindex].name = "CCM_LFISSION_2";
1812  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1813				   "%s fissioned into %d loops, generating:"
1814				   " %s");
1815  ccm_attrs[vindex].fmt = CCMFMT_L1I2LL3;
1816
1817  vindex = ccm_vis_index (CCM_LFISSION_FRAG);
1818  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1819  ccm_attrs[vindex].name = "CCM_LFISSION_FRAG";
1820  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1821				   "%s contains code from lines: %s");
1822  ccm_attrs[vindex].fmt = CCMFMT_L1II2;
1823
1824  vindex = ccm_vis_index (CCM_LPEEL_2);
1825  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1826  ccm_attrs[vindex].name = "CCM_LPEEL_2";
1827  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1828				   "%s had iterations peeled off for better"
1829				   " unrolling and/or parallelization");
1830  ccm_attrs[vindex].fmt = CCMFMT_L1;
1831
1832  vindex = ccm_vis_index (CCM_LBLOCKED_2);
1833  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1834  ccm_attrs[vindex].name = "CCM_LBLOCKED_2";
1835  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1836				   "%s blocked by %d for improved memory"
1837				   " hierarchy performance, new inner loop %s");
1838  ccm_attrs[vindex].fmt = CCMFMT_L1I2L3;
1839
1840  vindex = ccm_vis_index (CCM_LOUTER_UNROLL);
1841  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1842  ccm_attrs[vindex].name = "CCM_LOUTER_UNROLL";
1843  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1844				   "%s is outer-unrolled %d times as part"
1845				   " of unroll and jam");
1846  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
1847
1848  vindex = ccm_vis_index (CCM_LJAMMED);
1849  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1850  ccm_attrs[vindex].name = "CCM_LJAMMED";
1851  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1852				   "All %d copies of %s are fused together"
1853				   " as part of unroll and jam");
1854  ccm_attrs[vindex].fmt = CCMFMT_I1L2;
1855
1856  vindex = ccm_vis_index (CCM_LWHILE2DO_2);
1857  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1858  ccm_attrs[vindex].name = "CCM_LWHILE2DO_2";
1859  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1860				   "Bounds test for %s moved to top of loop");
1861  ccm_attrs[vindex].fmt = CCMFMT_L1;
1862
1863  vindex = ccm_vis_index (CCM_L2CALL_2);
1864  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1865  ccm_attrs[vindex].name = "CCM_L2CALL_2";
1866  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1867				   "%s replaced by a call to %s");
1868  ccm_attrs[vindex].fmt = CCMFMT_L1P2;
1869
1870  vindex = ccm_vis_index (CCM_LDEAD_2);
1871  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1872  ccm_attrs[vindex].name = "CCM_LDEAD_2";
1873  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1874				   "%s deleted as dead code");
1875  ccm_attrs[vindex].fmt = CCMFMT_L1;
1876
1877  vindex = ccm_vis_index (CCM_LINTRCHNG_2);
1878  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1879  ccm_attrs[vindex].name = "CCM_LINTRCHNG_2";
1880  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1881				   "%s interchanged with %s");
1882  ccm_attrs[vindex].fmt = CCMFMT_L1L2;
1883
1884  vindex = ccm_vis_index (CCM_LINTRCHNG_ORDER);
1885  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1886  ccm_attrs[vindex].name = "CCM_LINTRCHNG_ORDER";
1887  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1888				   "For loop nest below, the final order of loops"
1889				   " after interchanging and subsequent"
1890				   " transformations is: %s");
1891  ccm_attrs[vindex].fmt = CCMFMT_LL1;
1892
1893  vindex = ccm_vis_index (CCM_FUSED_2);
1894  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1895  ccm_attrs[vindex].name = "CCM_FUSED_2";
1896  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1897				   "%s fused with %s, new loop %s");
1898  ccm_attrs[vindex].fmt = CCMFMT_L1L2L3;
1899
1900  vindex = ccm_vis_index (CCM_VECINTRNSC_2);
1901  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1902  ccm_attrs[vindex].name = "CCM_VECINTRNSC_2";
1903  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1904				   "%s transformed to use calls to vector"
1905				   " intrinsics: %s");
1906  ccm_attrs[vindex].fmt = CCMFMT_L1PP2;
1907
1908  vindex = ccm_vis_index (CCM_LSTRIPMINE_2);
1909  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1910  ccm_attrs[vindex].name = "CCM_LSTRIPMINE_2";
1911  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1912				   "%s strip-mined by %d, new inner loop %s");
1913  ccm_attrs[vindex].fmt = CCMFMT_L1I2L3;
1914
1915  vindex = ccm_vis_index (CCM_LNEST2LOOPS_2);
1916  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1917  ccm_attrs[vindex].name = "CCM_LNEST2LOOPS_2";
1918  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1919				   "%s collapsed with %s, new loop %s");
1920  ccm_attrs[vindex].fmt = CCMFMT_L1L2L3;
1921
1922  vindex = ccm_vis_index (CCM_LREVERSE_2);
1923  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1924  ccm_attrs[vindex].name = "CCM_LREVERSE_2";
1925  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1926				   "%s has had its iteration direction reversed");
1927  ccm_attrs[vindex].fmt = CCMFMT_L1;
1928
1929  vindex = ccm_vis_index (CCM_IMIX2_B);
1930  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
1931  ccm_attrs[vindex].name = "CCM_IMIX2_B";
1932  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1933				   "%s has %d loads, %d stores,"
1934				   " %d prefetches, %d FPadds, %d FPmuls,"
1935				   " %d FPdivs, %d FPsubs, and %d FPsqrts per"
1936				   " iteration");
1937  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7I8I9;
1938
1939  vindex = ccm_vis_index (CCM_LUNRFULL_2);
1940  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1941  ccm_attrs[vindex].name = "CCM_LUNRFULL_2";
1942  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1943				   "%s fully unrolled");
1944  ccm_attrs[vindex].fmt = CCMFMT_L1;
1945
1946  vindex = ccm_vis_index (CCM_ELIM_NOAMORTINST_2);
1947  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1948  ccm_attrs[vindex].name = "CCM_ELIM_NOAMORTINST_2";
1949  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1950				   "%s was eliminated as it contains no"
1951				   " non-amortizable instructions");
1952  ccm_attrs[vindex].fmt = CCMFMT_L1;
1953
1954  vindex = ccm_vis_index (CCM_COMP_DALIGN_2);
1955  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1956  ccm_attrs[vindex].name = "CCM_COMP_DALIGN_2";
1957  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1958				   "Performance of %s could be improved by"
1959				   " compiling with -dalign");
1960  ccm_attrs[vindex].fmt = CCMFMT_L1;
1961
1962  vindex = ccm_vis_index (CCM_INTIMIX_2);
1963  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1964  ccm_attrs[vindex].name = "CCM_INTIMIX_2";
1965  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1966				   "%s has %d int-loads, %d int-stores,"
1967				   " %d alu-ops, %d muls, %d int-divs and"
1968				   " %d shifts per iteration");
1969  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7;
1970
1971  vindex = ccm_vis_index (CCM_OMP_REGION);
1972  ccm_attrs[vindex].vis = CCMV_PAR | CCMV_LOOP | CCMV_BASIC;
1973  ccm_attrs[vindex].name = "CCM_OMP_REGION";
1974  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1975				   "Source OpenMP region below has tag %s");
1976  ccm_attrs[vindex].fmt = CCMFMT_R1;
1977
1978  vindex = ccm_vis_index (CCM_LMICROVECTORIZE);
1979  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1980  ccm_attrs[vindex].name = "CCM_LMICROVECTORIZE";
1981  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1982				   "%s is micro-vectorized");
1983  ccm_attrs[vindex].fmt = CCMFMT_L1;
1984
1985  vindex = ccm_vis_index (CCM_LMULTI_VERSION_2);
1986  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1987  ccm_attrs[vindex].name = "CCM_LMULTI_VERSION_2";
1988  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1989				   "%s multi-versioned for %s."
1990				   " Specialized version is %s");
1991  ccm_attrs[vindex].fmt = CCMFMT_L1S2L3;
1992
1993  vindex = ccm_vis_index (CCM_LCLONED);
1994  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
1995  ccm_attrs[vindex].name = "CCM_LCLONED";
1996  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
1997				   "%s cloned for %s.  Clone is %s");
1998  ccm_attrs[vindex].fmt = CCMFMT_L1S2L3;
1999
2000  vindex = ccm_vis_index (CCM_LUNSWITCHED);
2001  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2002  ccm_attrs[vindex].name = "CCM_LUNSWITCHED";
2003  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2004				   "%s is unswitched.  New loops"
2005				   " are %s and %s");
2006  ccm_attrs[vindex].fmt = CCMFMT_L1L2L3;
2007
2008  vindex = ccm_vis_index (CCM_LRESWITCHED);
2009  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2010  ccm_attrs[vindex].name = "CCM_LRESWITCHED";
2011  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2012				   "Loops %s and %s and their surrounding"
2013				   " conditional code have been merged to"
2014				   " form loop %s");
2015  ccm_attrs[vindex].fmt = CCMFMT_L1L2L3;
2016
2017  vindex = ccm_vis_index (CCM_LSKEWBLOCKED);
2018  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2019  ccm_attrs[vindex].name = "CCM_LSKEWBLOCKED";
2020  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2021				   "%s skew-blocked by %d with slope"
2022				   " %d for improved memory hierarchy"
2023				   " performance, new inner loop %s");
2024  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3L4;
2025
2026  vindex = ccm_vis_index (CCM_IVSUB);
2027  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2028  ccm_attrs[vindex].name = "CCM_IVSUB";
2029  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2030				   "Induction variable substitution performed on %s");
2031  ccm_attrs[vindex].fmt = CCMFMT_L1;
2032
2033  vindex = ccm_vis_index (CCM_ONEITER_REPLACED);
2034  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2035  ccm_attrs[vindex].name = "CCM_ONEITER_REPLACED";
2036  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2037				   "%s determined to have a trip count of 1;"
2038				   " converted to straight-line code");
2039  ccm_attrs[vindex].fmt = CCMFMT_L1;
2040
2041  vindex = ccm_vis_index (CCM_IMIX3_B);
2042  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC;
2043  ccm_attrs[vindex].name = "CCM_IMIX3_B";
2044  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2045				   "%s has %d loads, %d stores,"
2046				   " %d prefetches, %d FPadds, %d FPmuls,"
2047				   " %d FPmuladds, %d FPdivs, and %d FPsqrts per"
2048				   " iteration");
2049  ccm_attrs[vindex].fmt = CCMFMT_L1I2I3I4I5I6I7I8I9;
2050
2051  vindex = ccm_vis_index (CCM_PIPELINE);
2052  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2053  ccm_attrs[vindex].name = "CCM_PIPELINE";
2054  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2055				   "Loop below pipelined");
2056  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2057
2058  vindex = ccm_vis_index (CCM_PIPESTATS);
2059  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2060  ccm_attrs[vindex].name = "CCM_PIPESTATS";
2061  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2062				   "Loop below scheduled with steady-state cycle"
2063				   " count = %d");
2064  ccm_attrs[vindex].fmt = CCMFMT_I1;
2065
2066  vindex = ccm_vis_index (CCM_NOPIPE_CALL);
2067  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2068  ccm_attrs[vindex].name = "CCM_NOPIPE_CALL";
2069  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2070				   "Loop could not be pipelined because it contains"
2071				   " calls");
2072  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2073
2074  vindex = ccm_vis_index (CCM_NOPIPE_INTCC);
2075  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2076  ccm_attrs[vindex].name = "CCM_NOPIPE_INTCC";
2077  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2078				   "Loop could not be pipelined because it sets"
2079				   " multiple integer condition codes.");
2080  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2081
2082  vindex = ccm_vis_index (CCM_NOPIPE_MBAR);
2083  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2084  ccm_attrs[vindex].name = "CCM_NOPIPE_MBAR";
2085  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2086				   "Loop could not be pipelined because it contains a"
2087				   " memory barrier instruction");
2088  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2089
2090  vindex = ccm_vis_index (CCM_NOPIPE_MNMX);
2091  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2092  ccm_attrs[vindex].name = "CCM_NOPIPE_MNMX";
2093  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2094				   "Loop could not be pipelined because it contains"
2095				   " a minimum or a maximum operation");
2096  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2097
2098  vindex = ccm_vis_index (CCM_NOPIPE_U2FLT);
2099  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2100  ccm_attrs[vindex].name = "CCM_NOPIPE_U2FLT";
2101  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2102				   "Loop could not be pipelined because it contains"
2103				   " an unsigned to float conversion");
2104  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2105
2106  vindex = ccm_vis_index (CCM_NOPIPE_GOT);
2107  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_OBS;
2108  ccm_attrs[vindex].name = "CCM_NOPIPE_GOT";
2109  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2110				   "Loop could not be pipelined because it sets the"
2111				   " Global Offset Table pointer");
2112  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2113
2114  vindex = ccm_vis_index (CCM_NOPIPE_IDIV);
2115  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2116  ccm_attrs[vindex].name = "CCM_NOPIPE_IDIV";
2117  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2118				   "Loop could not be pipelined because it contains"
2119				   " an integer divide");
2120  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2121
2122  vindex = ccm_vis_index (CCM_NOPIPE_PRFTCH);
2123  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2124  ccm_attrs[vindex].name = "CCM_NOPIPE_PRFTCH";
2125  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2126				   "Loop could not be pipelined because it contains"
2127				   " a prefetch operation");
2128  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2129
2130  vindex = ccm_vis_index (CCM_NOPIPE_EXIT);
2131  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2132  ccm_attrs[vindex].name = "CCM_NOPIPE_EXIT";
2133  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2134				   "Loop could not be pipelined because it contains"
2135				   " an exit operation");
2136  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2137
2138  vindex = ccm_vis_index (CCM_NOPIPE_REG);
2139  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_OBS;
2140  ccm_attrs[vindex].name = "CCM_NOPIPE_REG";
2141  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2142				   "Loop could not be pipelined because it contains"
2143				   " instructions that set the %%gsr or %%fsr register");
2144  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2145
2146  vindex = ccm_vis_index (CCM_NOPIPE_UNS);
2147  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2148  ccm_attrs[vindex].name = "CCM_NOPIPE_UNS";
2149  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2150				   "Loop could not be pipelined because it has an"
2151				   " unsigned loop counter");
2152  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2153
2154  vindex = ccm_vis_index (CCM_NOPIPE_UNSUIT);
2155  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2156  ccm_attrs[vindex].name = "CCM_NOPIPE_UNSUIT";
2157  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2158				   "Loop was unsuitable for pipelining");
2159  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2160
2161  vindex = ccm_vis_index (CCM_NOPIPE_INTRINSIC);
2162  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2163  ccm_attrs[vindex].name = "CCM_NOPIPE_INTRINSIC";
2164  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2165				   "Loop could not be pipelined because it has an"
2166				   " intrinsic call to %s");
2167  ccm_attrs[vindex].fmt = CCMFMT_P1;
2168
2169  vindex = ccm_vis_index (CCM_NOPIPE_BIG);
2170  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2171  ccm_attrs[vindex].name = "CCM_NOPIPE_BIG";
2172  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2173				   "Loop could not be pipelined as it is too big");
2174  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2175
2176  vindex = ccm_vis_index (CCM_NOPIPE_INVINTPR);
2177  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2178  ccm_attrs[vindex].name = "CCM_NOPIPE_INVINTPR";
2179  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2180				   "Loop could not be pipelined as it contains too"
2181				   " many loop invariant integers = %d");
2182  ccm_attrs[vindex].fmt = CCMFMT_I1;
2183
2184  vindex = ccm_vis_index (CCM_NOPIPE_INVFLTPR);
2185  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2186  ccm_attrs[vindex].name = "CCM_NOPIPE_INVFLTPR";
2187  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2188				   "Loop could not be pipelined as it contains too"
2189				   " many loop invariant floats = %d");
2190  ccm_attrs[vindex].fmt = CCMFMT_I1;
2191
2192  vindex = ccm_vis_index (CCM_NOPIPE_INVDBLPR);
2193  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2194  ccm_attrs[vindex].name = "CCM_NOPIPE_INVDBLPR";
2195  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2196				   "Loop could not be pipelined as it contains too"
2197				   " many loop invariant doubles = %d");
2198  ccm_attrs[vindex].fmt = CCMFMT_I1;
2199
2200  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFIPR);
2201  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2202  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFIPR";
2203  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2204				   "Loop below was adversely affected by high"
2205				   " integer register pressure = %d");
2206  ccm_attrs[vindex].fmt = CCMFMT_I1;
2207
2208  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFDPR);
2209  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2210  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFDPR";
2211  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2212				   "Loop below was adversely affected by high"
2213				   " double register pressure = %d");
2214  ccm_attrs[vindex].fmt = CCMFMT_I1;
2215
2216  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFFPR);
2217  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2218  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFFPR";
2219  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2220				   "Loop below was adversely affected by high"
2221				   " float register pressure = %d");
2222  ccm_attrs[vindex].fmt = CCMFMT_I1;
2223
2224  vindex = ccm_vis_index (CCM_NOPIPE_INTPR);
2225  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2226  ccm_attrs[vindex].name = "CCM_NOPIPE_INTPR";
2227  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2228				   "Loop could not be pipelined due to high"
2229				   " integer register pressure = %d");
2230  ccm_attrs[vindex].fmt = CCMFMT_I1;
2231
2232  vindex = ccm_vis_index (CCM_NOPIPE_DBLPR);
2233  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2234  ccm_attrs[vindex].name = "CCM_NOPIPE_DBLPR";
2235  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2236				   "Loop could not be pipelined due to high"
2237				   " double register pressure = %d");
2238  ccm_attrs[vindex].fmt = CCMFMT_I1;
2239
2240  vindex = ccm_vis_index (CCM_NOPIPE_FLTPR);
2241  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
2242  ccm_attrs[vindex].name = "CCM_NOPIPE_FLTPR";
2243  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2244				   "Loop could not be pipelined due to high"
2245				   " float register pressure = %d");
2246  ccm_attrs[vindex].fmt = CCMFMT_I1;
2247
2248  vindex = ccm_vis_index (CCM_PIPELINE_2);
2249  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2250  ccm_attrs[vindex].name = "CCM_PIPELINE_2";
2251  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2252				   "%s pipelined");
2253  ccm_attrs[vindex].fmt = CCMFMT_L1;
2254
2255  vindex = ccm_vis_index (CCM_PIPESTATS_2);
2256  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2257  ccm_attrs[vindex].name = "CCM_PIPESTATS_2";
2258  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2259				   "%s scheduled with steady-state cycle"
2260				   " count = %d");
2261  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2262
2263  vindex = ccm_vis_index (CCM_NOPIPE_CALL_2);
2264  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2265  ccm_attrs[vindex].name = "CCM_NOPIPE_CALL_2";
2266  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2267				   "%s could not be pipelined because it contains"
2268				   " calls");
2269  ccm_attrs[vindex].fmt = CCMFMT_L1;
2270
2271  vindex = ccm_vis_index (CCM_NOPIPE_INTCC_2);
2272  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2273  ccm_attrs[vindex].name = "CCM_NOPIPE_INTCC_2";
2274  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2275				   "%s could not be pipelined because it sets"
2276				   " multiple integer condition codes.");
2277  ccm_attrs[vindex].fmt = CCMFMT_L1;
2278
2279  vindex = ccm_vis_index (CCM_NOPIPE_MBAR_2);
2280  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2281  ccm_attrs[vindex].name = "CCM_NOPIPE_MBAR_2";
2282  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2283				   "%s could not be pipelined because it contains"
2284				   " a memory barrier instruction");
2285  ccm_attrs[vindex].fmt = CCMFMT_L1;
2286
2287  vindex = ccm_vis_index (CCM_NOPIPE_MNMX_2);
2288  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2289  ccm_attrs[vindex].name = "CCM_NOPIPE_MNMX_2";
2290  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2291				   "%s could not be pipelined because it contains"
2292				   " a minimum or a maximum operation");
2293  ccm_attrs[vindex].fmt = CCMFMT_L1;
2294
2295  vindex = ccm_vis_index (CCM_NOPIPE_U2FLT_2);
2296  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2297  ccm_attrs[vindex].name = "CCM_NOPIPE_U2FLT_2";
2298  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2299				   "%s could not be pipelined because it contains"
2300				   " an unsigned to float conversion");
2301  ccm_attrs[vindex].fmt = CCMFMT_L1;
2302
2303  vindex = ccm_vis_index (CCM_NOPIPE_GOT_2);
2304  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP;
2305  ccm_attrs[vindex].name = "CCM_NOPIPE_GOT_2";
2306  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2307				   "%s could not be pipelined because it sets the"
2308				   " Global Offset Table pointer");
2309  ccm_attrs[vindex].fmt = CCMFMT_L1;
2310
2311  vindex = ccm_vis_index (CCM_NOPIPE_IDIV_2);
2312  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2313  ccm_attrs[vindex].name = "CCM_NOPIPE_IDIV_2";
2314  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2315				   "%s could not be pipelined because it contains"
2316				   " an integer divide");
2317  ccm_attrs[vindex].fmt = CCMFMT_L1;
2318
2319  vindex = ccm_vis_index (CCM_NOPIPE_PRFTCH_2);
2320  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2321  ccm_attrs[vindex].name = "CCM_NOPIPE_PRFTCH_2";
2322  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2323				   "%s could not be pipelined because it contains"
2324				   " a prefetch operation");
2325  ccm_attrs[vindex].fmt = CCMFMT_L1;
2326
2327  vindex = ccm_vis_index (CCM_NOPIPE_EXIT_2);
2328  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2329  ccm_attrs[vindex].name = "CCM_NOPIPE_EXIT_2";
2330  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2331				   "%s could not be pipelined because it contains"
2332				   " an exit operation");
2333  ccm_attrs[vindex].fmt = CCMFMT_L1;
2334
2335  vindex = ccm_vis_index (CCM_NOPIPE_REG_2);
2336  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP;
2337  ccm_attrs[vindex].name = "CCM_NOPIPE_REG_2";
2338  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2339				   "%s could not be pipelined because it contains"
2340				   " instructions that set the %%gsr or %%fsr register");
2341  ccm_attrs[vindex].fmt = CCMFMT_L1;
2342
2343  vindex = ccm_vis_index (CCM_NOPIPE_UNS_2);
2344  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2345  ccm_attrs[vindex].name = "CCM_NOPIPE_UNS_2";
2346  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2347				   "%s could not be pipelined because it has an"
2348				   " unsigned loop counter");
2349  ccm_attrs[vindex].fmt = CCMFMT_L1;
2350
2351  vindex = ccm_vis_index (CCM_NOPIPE_UNSUIT_2);
2352  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2353  ccm_attrs[vindex].name = "CCM_NOPIPE_UNSUIT_2";
2354  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2355				   "%s is unsuitable for pipelining");
2356  ccm_attrs[vindex].fmt = CCMFMT_L1;
2357
2358  vindex = ccm_vis_index (CCM_NOPIPE_INTRINSIC_2);
2359  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2360  ccm_attrs[vindex].name = "CCM_NOPIPE_INTRINSIC_2";
2361  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2362				   "%s could not be pipelined because it contains"
2363				   " a call to intrinsic %s");
2364  ccm_attrs[vindex].fmt = CCMFMT_L1P2;
2365
2366  vindex = ccm_vis_index (CCM_NOPIPE_BIG_2);
2367  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2368  ccm_attrs[vindex].name = "CCM_NOPIPE_BIG_2";
2369  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2370				   "%s could not be pipelined as it is too big");
2371  ccm_attrs[vindex].fmt = CCMFMT_L1;
2372
2373  vindex = ccm_vis_index (CCM_NOPIPE_INVINTPR_2);
2374  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2375  ccm_attrs[vindex].name = "CCM_NOPIPE_INVINTPR_2";
2376  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2377				   "%s could not be pipelined as it contains too"
2378				   " many loop invariant integers = %d");
2379  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2380
2381  vindex = ccm_vis_index (CCM_NOPIPE_INVFLTPR_2);
2382  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2383  ccm_attrs[vindex].name = "CCM_NOPIPE_INVFLTPR_2";
2384  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2385				   "%s could not be pipelined as it contains too"
2386				   " many loop invariant floats = %d");
2387  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2388
2389  vindex = ccm_vis_index (CCM_NOPIPE_INVDBLPR_2);
2390  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2391  ccm_attrs[vindex].name = "CCM_NOPIPE_INVDBLPR_2";
2392  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2393				   "%s could not be pipelined as it contains too"
2394				   " many loop invariant doubles = %d");
2395  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2396
2397  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFIPR_2);
2398  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2399  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFIPR_2";
2400  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2401				   "%s was adversely affected by high"
2402				   " integer register pressure = %d");
2403  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2404
2405  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFDPR_2);
2406  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2407  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFDPR_2";
2408  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2409				   "%s was adversely affected by high"
2410				   " double register pressure = %d");
2411  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2412
2413  vindex = ccm_vis_index (CCM_PIPE_SCHEDAFFPR_2);
2414  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2415  ccm_attrs[vindex].name = "CCM_PIPE_SCHEDAFFPR_2";
2416  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2417				   "%s was adversely affected by high"
2418				   " float register pressure = %d");
2419  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2420
2421  vindex = ccm_vis_index (CCM_NOPIPE_INTPR_2);
2422  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2423  ccm_attrs[vindex].name = "CCM_NOPIPE_INTPR_2";
2424  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2425				   "%s could not be pipelined due to high"
2426				   " integer register pressure = %d");
2427  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2428
2429  vindex = ccm_vis_index (CCM_NOPIPE_DBLPR_2);
2430  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2431  ccm_attrs[vindex].name = "CCM_NOPIPE_DBLPR_2";
2432  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2433				   "%s could not be pipelined due to high"
2434				   " double register pressure = %d");
2435  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2436
2437  vindex = ccm_vis_index (CCM_NOPIPE_FLTPR_2);
2438  ccm_attrs[vindex].vis = CCMV_PIPE | CCMV_LOOP | CCMV_BASIC;
2439  ccm_attrs[vindex].name = "CCM_NOPIPE_FLTPR_2";
2440  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2441				   "%s could not be pipelined due to high"
2442				   " float register pressure = %d");
2443  ccm_attrs[vindex].fmt = CCMFMT_L1I2;
2444
2445  vindex = ccm_vis_index (CCM_INLINE);
2446  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC | CCMV_OBS;
2447  ccm_attrs[vindex].name = "CCM_INLINE";
2448  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2449				   "Function %s inlined from source file %s into"
2450				   " the code for the following line");
2451  ccm_attrs[vindex].fmt = CCMFMT_P1S2;
2452
2453  vindex = ccm_vis_index (CCM_INLINE2);
2454  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC | CCMV_OBS;
2455  ccm_attrs[vindex].name = "CCM_INLINE2";
2456  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2457				   "Function %s inlined from source file %s into"
2458				   " inline copy of function %s");
2459  ccm_attrs[vindex].fmt = CCMFMT_P1S2P3;
2460
2461  vindex = ccm_vis_index (CCM_INLINE_TMPLT);
2462  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2463  ccm_attrs[vindex].name = "CCM_INLINE_TMPLT";
2464  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2465				   "Function %s inlined from template file %s"
2466				   " into the code for the following line");
2467  ccm_attrs[vindex].fmt = CCMFMT_P1S2;
2468
2469  vindex = ccm_vis_index (CCM_INLINE_TMPLT2);
2470  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2471  ccm_attrs[vindex].name = "CCM_INLINE_TMPLT2";
2472  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2473				   "Function %s inlined from template file %s"
2474				   " into inline copy of function %s");
2475  ccm_attrs[vindex].fmt = CCMFMT_P1S2P3;
2476
2477  vindex = ccm_vis_index (CCM_INLINE_OUT_COPY);
2478  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2479  ccm_attrs[vindex].name = "CCM_INLINE_OUT_COPY";
2480  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2481				   "Out-of-line copy of inlined function %s from"
2482				   " source file %s generated");
2483  ccm_attrs[vindex].fmt = CCMFMT_P1S2;
2484
2485  vindex = ccm_vis_index (CCM_NINLINE_REC);
2486  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2487  ccm_attrs[vindex].name = "CCM_NINLINE_REC";
2488  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2489				   "Recursive function %s inlined only up to"
2490				   " depth %d");
2491  ccm_attrs[vindex].fmt = CCMFMT_P1I2;
2492
2493  vindex = ccm_vis_index (CCM_NINLINE_NEST);
2494  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2495  ccm_attrs[vindex].name = "CCM_NINLINE_NEST";
2496  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2497				   "Function %s not inlined because inlining is"
2498				   " already nested too deeply");
2499  ccm_attrs[vindex].fmt = CCMFMT_P1;
2500
2501  vindex = ccm_vis_index (CCM_NINLINE_CMPLX);
2502  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2503  ccm_attrs[vindex].name = "CCM_NINLINE_CMPLX";
2504  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2505				   "Function %s not inlined because it contains"
2506				   " too many operations");
2507  ccm_attrs[vindex].fmt = CCMFMT_P1;
2508
2509  vindex = ccm_vis_index (CCM_NINLINE_FB);
2510  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2511  ccm_attrs[vindex].name = "CCM_NINLINE_FB";
2512  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2513				   "Function %s not inlined because the"
2514				   " profile-feedback execution count is too low");
2515  ccm_attrs[vindex].fmt = CCMFMT_P1;
2516
2517  vindex = ccm_vis_index (CCM_NINLINE_PAR);
2518  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2519  ccm_attrs[vindex].name = "CCM_NINLINE_PAR";
2520  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2521				   "Function %s not inlined because it contains"
2522				   " explicit parallel pragmas");
2523  ccm_attrs[vindex].fmt = CCMFMT_P1;
2524
2525  vindex = ccm_vis_index (CCM_NINLINE_OPT);
2526  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2527  ccm_attrs[vindex].name = "CCM_NINLINE_OPT";
2528  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2529				   "Function %s not inlined because it is"
2530				   " compiled with optimization level <= 2");
2531  ccm_attrs[vindex].fmt = CCMFMT_P1;
2532
2533  vindex = ccm_vis_index (CCM_NINLINE_USR);
2534  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2535  ccm_attrs[vindex].name = "CCM_NINLINE_USR";
2536  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2537				   "Function %s not inlined because either command"
2538				   " line option or source code pragma prohibited it,"
2539				   " or it's not safe to inline it");
2540  ccm_attrs[vindex].fmt = CCMFMT_P1;
2541
2542  vindex = ccm_vis_index (CCM_NINLINE_AUTO);
2543  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2544  ccm_attrs[vindex].name = "CCM_NINLINE_AUTO";
2545  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2546				   "Function %s not inlined because doing so"
2547				   " would make automatic storage for %s too large");
2548  ccm_attrs[vindex].fmt = CCMFMT_P1P2;
2549
2550  vindex = ccm_vis_index (CCM_NINLINE_CALLS);
2551  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2552  ccm_attrs[vindex].name = "CCM_NINLINE_CALLS";
2553  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2554				   "Function %s not inlined because it contains"
2555				   " too many calls");
2556  ccm_attrs[vindex].fmt = CCMFMT_P1;
2557
2558  vindex = ccm_vis_index (CCM_NINLINE_ACTUAL);
2559  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2560  ccm_attrs[vindex].name = "CCM_NINLINE_ACTUAL";
2561  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2562				   "Function %s not inlined because it has more"
2563				   " actual parameters than formal parameters");
2564  ccm_attrs[vindex].fmt = CCMFMT_P1;
2565
2566  vindex = ccm_vis_index (CCM_NINLINE_FORMAL);
2567  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2568  ccm_attrs[vindex].name = "CCM_NINLINE_FORMAL";
2569  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2570				   "Function %s not inlined because it has more"
2571				   " formal parameters than actual parameters");
2572  ccm_attrs[vindex].fmt = CCMFMT_P1;
2573
2574  vindex = ccm_vis_index (CCM_NINLINE_TYPE);
2575  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2576  ccm_attrs[vindex].name = "CCM_NINLINE_TYPE";
2577  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2578				   "Function %s not inlined because formal"
2579				   " argument type does not match actual type");
2580  ccm_attrs[vindex].fmt = CCMFMT_P1;
2581
2582  vindex = ccm_vis_index (CCM_NINLINE_ATYPE);
2583  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2584  ccm_attrs[vindex].name = "CCM_NINLINE_ATYPE";
2585  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2586				   "Function %s not inlined because array formal"
2587				   " argument does not match reshaped array actual"
2588				   " argument type");
2589  ccm_attrs[vindex].fmt = CCMFMT_P1;
2590
2591  vindex = ccm_vis_index (CCM_NINLINE_RETTYPE);
2592  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2593  ccm_attrs[vindex].name = "CCM_NINLINE_RETTYPE";
2594  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2595				   "Function %s not inlined because return type"
2596				   " does not match");
2597  ccm_attrs[vindex].fmt = CCMFMT_P1;
2598
2599  vindex = ccm_vis_index (CCM_NINLINE_EXCPT);
2600  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2601  ccm_attrs[vindex].name = "CCM_NINLINE_EXCPT";
2602  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2603				   "Function %s not inlined because it"
2604				   " guarded by an exception handler");
2605  ccm_attrs[vindex].fmt = CCMFMT_P1;
2606
2607  vindex = ccm_vis_index (CCM_NINLINE_UNSAFE);
2608  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2609  ccm_attrs[vindex].name = "CCM_NINLINE_UNSAFE";
2610  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2611				   "Function %s not inlined because it might be"
2612				   " unsafe (call alloca(), etc)");
2613  ccm_attrs[vindex].fmt = CCMFMT_P1;
2614
2615  vindex = ccm_vis_index (CCM_NINLINE_ALIAS);
2616  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2617  ccm_attrs[vindex].name = "CCM_NINLINE_ALIAS";
2618  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2619				   "Function %s not inlined because inlining it"
2620				   " will make the alias analysis in the calling"
2621				   " function more conservative");
2622  ccm_attrs[vindex].fmt = CCMFMT_P1;
2623
2624  vindex = ccm_vis_index (CCM_NINLINE_FEMARK);
2625  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2626  ccm_attrs[vindex].name = "CCM_NINLINE_FEMARK";
2627  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2628				   "Function %s not inlined because it contains"
2629				   " setjmp/longjmp, or indirect goto, etc");
2630  ccm_attrs[vindex].fmt = CCMFMT_P1;
2631
2632  vindex = ccm_vis_index (CCM_NINLINE_RAREX);
2633  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2634  ccm_attrs[vindex].name = "CCM_NINLINE_RAREX";
2635  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2636				   "Function %s not inlined because it is known"
2637				   " to be rarely executed");
2638  ccm_attrs[vindex].fmt = CCMFMT_P1;
2639
2640  vindex = ccm_vis_index (CCM_CLONING);
2641  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2642  ccm_attrs[vindex].name = "CCM_CLONING";
2643  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2644				   "Function %s from source file %s cloned,"
2645				   " creating cloned function %s; constant"
2646				   " parameters propagated to clone");
2647  ccm_attrs[vindex].fmt = CCMFMT_P1S2P3;
2648
2649  vindex = ccm_vis_index (CCM_INLINE_B);
2650  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2651  ccm_attrs[vindex].name = "CCM_INLINE_B";
2652  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2653				   "Function %s inlined from source file %s into"
2654				   " the code for the following line.  %d loops"
2655				   " inlined");
2656  ccm_attrs[vindex].fmt = CCMFMT_P1S2I3;
2657
2658  vindex = ccm_vis_index (CCM_INLINE2_B);
2659  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2660  ccm_attrs[vindex].name = "CCM_INLINE2_B";
2661  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2662				   "Function %s inlined from source file %s into"
2663				   " inline copy of function %s.  %d loops inlined");
2664  ccm_attrs[vindex].fmt = CCMFMT_P1S2P3I4;
2665
2666  vindex = ccm_vis_index (CCM_INLINE_LOOP);
2667  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_LOOP | CCMV_BASIC;
2668  ccm_attrs[vindex].name = "CCM_INLINE_LOOP";
2669  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2670				   "Loop in function %s, line %d has"
2671				   " tag %s");
2672  ccm_attrs[vindex].fmt = CCMFMT_P1I2L3;
2673
2674  vindex = ccm_vis_index (CCM_NINLINE_MULTIENTRY);
2675  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2676  ccm_attrs[vindex].name = "CCM_NINLINE_MULTIENTRY";
2677  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2678				   "Function %s not inlined because it"
2679				   " contains an ENTRY statement");
2680  ccm_attrs[vindex].fmt = CCMFMT_P1;
2681
2682  vindex = ccm_vis_index (CCM_NINLINE_VARARGS);
2683  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2684  ccm_attrs[vindex].name = "CCM_NINLINE_VARARGS";
2685  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2686				   "Function %s not inlined because variable"
2687				   " argument routines cannot be inlined");
2688  ccm_attrs[vindex].fmt = CCMFMT_P1;
2689
2690  vindex = ccm_vis_index (CCM_NINLINE_UNSEEN_BODY);
2691  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2692  ccm_attrs[vindex].name = "CCM_NINLINE_UNSEEN_BODY";
2693  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2694				   "Function %s not inlined because the compiler"
2695				   " has not seen the body of the function.  Use"
2696				   " -xcrossfile or -xipo in order to inline it");
2697  ccm_attrs[vindex].fmt = CCMFMT_P1;
2698
2699  vindex = ccm_vis_index (CCM_NINLINE_UPLEVEL);
2700  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2701  ccm_attrs[vindex].name = "CCM_NINLINE_UPLEVEL";
2702  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2703				   "Function %s not inlined because it is a"
2704				   " nested routine containing references to"
2705				   " variables defined in an outer function");
2706  ccm_attrs[vindex].fmt = CCMFMT_P1;
2707
2708  vindex = ccm_vis_index (CCM_NINLINE_CMDLINE);
2709  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2710  ccm_attrs[vindex].name = "CCM_NINLINE_CMDLINE";
2711  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2712				   "Function %s not inlined because either"
2713				   " -xinline or source code pragma prohibited it");
2714  ccm_attrs[vindex].fmt = CCMFMT_P1;
2715
2716  vindex = ccm_vis_index (CCM_NINLINE_CALL_CMPLX);
2717  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2718  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_CMPLX";
2719  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2720				   "Call to %s not inlined because of the"
2721				   " complexity of the calling routine");
2722  ccm_attrs[vindex].fmt = CCMFMT_P1;
2723
2724  vindex = ccm_vis_index (CCM_NINLINE_LANG_MISMATCH);
2725  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2726  ccm_attrs[vindex].name = "CCM_NINLINE_LANG_MISMATCH";
2727  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2728				   "Call to %s not inlined because it is in"
2729				   " a different language");
2730  ccm_attrs[vindex].fmt = CCMFMT_P1;
2731
2732  vindex = ccm_vis_index (CCM_NINLINE_RTN_WEAK);
2733  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2734  ccm_attrs[vindex].name = "CCM_NINLINE_RTN_WEAK";
2735  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2736				   "Function %s not inlined because it"
2737				   " is marked weak");
2738  ccm_attrs[vindex].fmt = CCMFMT_P1;
2739
2740  vindex = ccm_vis_index (CCM_NINLINE_CALL_WEAKFILE);
2741  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2742  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_WEAKFILE";
2743  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2744				   "Call to %s not inlined because it is"
2745				   " in a different file and it contains a"
2746				   " call to a weak routine");
2747  ccm_attrs[vindex].fmt = CCMFMT_P1;
2748
2749  vindex = ccm_vis_index (CCM_NINLINE_CALL_TRYCATCH);
2750  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2751  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_TRYCATCH";
2752  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2753				   "Call to %s not inlined because it is"
2754				   " in a different file and contains an"
2755				   " explicit try/catch");
2756  ccm_attrs[vindex].fmt = CCMFMT_P1;
2757
2758  vindex = ccm_vis_index (CCM_NINLINE_CALL_REGP);
2759  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2760  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_REGP";
2761  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2762				   "Call to %s not inlined because it would"
2763				   " cause excessive register pressure");
2764  ccm_attrs[vindex].fmt = CCMFMT_P1;
2765
2766  vindex = ccm_vis_index (CCM_NINLINE_RTN_REGP);
2767  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2768  ccm_attrs[vindex].name = "CCM_NINLINE_RTN_REGP";
2769  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2770				   "Function %s not inlined because it would"
2771				   " cause excessive register pressure");
2772  ccm_attrs[vindex].fmt = CCMFMT_P1;
2773
2774  vindex = ccm_vis_index (CCM_NINLINE_CALL_XPENSV);
2775  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2776  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_XPENSV";
2777  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2778				   "Call to %s not inlined because analysis"
2779				   " exceeds the compilation time limit");
2780  ccm_attrs[vindex].fmt = CCMFMT_P1;
2781
2782  vindex = ccm_vis_index (CCM_NINLINE_READONLYIR);
2783  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2784  ccm_attrs[vindex].name = "CCM_NINLINE_READONLYIR";
2785  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2786				   "Function %s not inlined because it is in a file"
2787				   " specified as read-only by -xipo_archive=readonly"
2788				   " and it contains calls to static functions");
2789  ccm_attrs[vindex].fmt = CCMFMT_P1;
2790
2791  vindex = ccm_vis_index (CCM_NINLINE_CALL_THUNK);
2792  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2793  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_THUNK";
2794  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2795				   "Call to %s not inlined because it is in a"
2796				   " compiler-generated function that does not"
2797				   " permit inlining");
2798  ccm_attrs[vindex].fmt = CCMFMT_P1;
2799
2800  vindex = ccm_vis_index (CCM_NINLINE_CALL_XTARGETS);
2801  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2802  ccm_attrs[vindex].name = "CCM_NINLINE_CALL_XTARGETS";
2803  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2804				   "Indirect callsite has too many targets;"
2805				   " callsite marked do not inline");
2806  ccm_attrs[vindex].fmt = CCMFMT_NONE;
2807
2808  vindex = ccm_vis_index (CCM_NINLINE_SELFTAIL_RECURSIVE);
2809  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2810  ccm_attrs[vindex].name = "CCM_NINLINE_SELFTAIL_RECURSIVE";
2811  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2812				   "Function %s not inlined because"
2813				   " of a recursive tail-call to itself");
2814  ccm_attrs[vindex].fmt = CCMFMT_P1;
2815
2816  vindex = ccm_vis_index (CCM_NINLINE_PRAGMA);
2817  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2818  ccm_attrs[vindex].name = "CCM_NINLINE_PRAGMA";
2819  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2820				   "Function %s not inlined because it contains"
2821				   " explicit parallel or alias pragmas");
2822  ccm_attrs[vindex].fmt = CCMFMT_P1;
2823
2824  vindex = ccm_vis_index (CCM_NINLINE_CMPLX2);
2825  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2826  ccm_attrs[vindex].name = "CCM_NINLINE_CMPLX2";
2827  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2828				   "Function %s not inlined because it contains too"
2829				   " many operations.  Increase max_inst_hard in order"
2830				   " to inline it: -xinline_param=max_inst_hard:n");
2831  ccm_attrs[vindex].fmt = CCMFMT_P1;
2832
2833  vindex = ccm_vis_index (CCM_NINLINE_RARE);
2834  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2835  ccm_attrs[vindex].name = "CCM_NINLINE_RARE";
2836  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2837				   "Function %s not inlined because the call"
2838				   " is rarely executed");
2839  ccm_attrs[vindex].fmt = CCMFMT_P1;
2840
2841  vindex = ccm_vis_index (CCM_NINLINE_PAR2);
2842  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2843  ccm_attrs[vindex].name = "CCM_NINLINE_PAR2";
2844  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2845				   "Function %s not inlined because it is called"
2846				   " within a region guarded by an explicit"
2847				   " parallel pragmas");
2848  ccm_attrs[vindex].fmt = CCMFMT_P1;
2849
2850  vindex = ccm_vis_index (CCM_NINLINE_G_LIMIT);
2851  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2852  ccm_attrs[vindex].name = "CCM_NINLINE_G_LIMIT";
2853  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2854				   "Function %s not inlined because it would exceed"
2855				   " the permitted global code size growth limit.  Try"
2856				   " to increase max_growth in order to inline it:"
2857				   " -xinline_param=max_growth:n");
2858  ccm_attrs[vindex].fmt = CCMFMT_P1;
2859
2860  vindex = ccm_vis_index (CCM_NINLINE_L_LIMIT);
2861  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2862  ccm_attrs[vindex].name = "CCM_NINLINE_L_LIMIT";
2863  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2864				   "Function %s not inlined because it would exceed"
2865				   " the maximum function size growth limit.  Increase"
2866				   " max_function_inst in order to inline it:"
2867				   " -xinline_param=max_function_inst:n");
2868  ccm_attrs[vindex].fmt = CCMFMT_P1;
2869
2870  vindex = ccm_vis_index (CCM_NINLINE_REC2);
2871  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2872  ccm_attrs[vindex].name = "CCM_NINLINE_REC2";
2873  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2874				   "Recursive function %s is inlined only up to"
2875				   " %d levels and up to %d size.  Increase"
2876				   " max_recursive_deptha or max_recursive_inst in"
2877				   " order to inline it:"
2878				   " -xinline_param=max_recursive_depth:n,"
2879				   " -xinline_param=max_recursive_inst:n");
2880  ccm_attrs[vindex].fmt = CCMFMT_P1I2I3;
2881
2882  vindex = ccm_vis_index (CCM_NINLINE_FB2);
2883  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2884  ccm_attrs[vindex].name = "CCM_NINLINE_FB2";
2885  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2886				   "Function %s not inlined because the"
2887				   " profile-feedback execution count is too"
2888				   " low.  Decrease min_counter in order to inline it:"
2889				   " -xinline_param:min_counter:n");
2890  ccm_attrs[vindex].fmt = CCMFMT_P1;
2891
2892  vindex = ccm_vis_index (CCM_NINLINE_CS_CMPLX);
2893  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2894  ccm_attrs[vindex].name = "CCM_NINLINE_CS_CMPLX";
2895  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2896				   "Function %s not inlined because called"
2897				   " function's size is too big.  Increase"
2898				   " max_inst_soft in order to inline it:"
2899				   " -xinline_param=max_inst_soft:n");
2900  ccm_attrs[vindex].fmt = CCMFMT_P1;
2901
2902  vindex = ccm_vis_index (CCM_NINLINE_R_EXCPT);
2903  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2904  ccm_attrs[vindex].name = "CCM_NINLINE_R_EXCPT";
2905  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2906				   "Function %s not inlined because it contains"
2907				   " an exception handler");
2908  ccm_attrs[vindex].fmt = CCMFMT_P1;
2909
2910  vindex = ccm_vis_index (CCM_NINLINE_ASM);
2911  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2912  ccm_attrs[vindex].name = "CCM_NINLINE_ASM";
2913  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2914				   "Function %s not inlined because"
2915				   " it contains asm statements");
2916  ccm_attrs[vindex].fmt = CCMFMT_P1;
2917
2918  vindex = ccm_vis_index (CCM_NINLINE_R_READONLYIR);
2919  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2920  ccm_attrs[vindex].name = "CCM_NINLINE_R_READONLYIR";
2921  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2922				   "Function %s not inlined because it is in a file"
2923				   " specified as read-only by -xipo_archive=readonly"
2924				   " and it is a static function");
2925  ccm_attrs[vindex].fmt = CCMFMT_P1;
2926
2927  vindex = ccm_vis_index (CCM_NINLINE_C_READONLYIR);
2928  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2929  ccm_attrs[vindex].name = "CCM_NINLINE_C_READONLYIR";
2930  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2931				   "Call to %s not inlined because the calling"
2932				   " function is in a file specified as read-only"
2933				   " by -xipo_archive=readonly");
2934  ccm_attrs[vindex].fmt = CCMFMT_P1;
2935
2936  vindex = ccm_vis_index (CCM_NINLINE_NEVERRETURN);
2937  ccm_attrs[vindex].vis = CCMV_INLINE | CCMV_BASIC;
2938  ccm_attrs[vindex].name = "CCM_NINLINE_NEVERRETURN";
2939  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2940				   "Function %s not inlined because it"
2941				   " never returns");
2942  ccm_attrs[vindex].fmt = CCMFMT_P1;
2943
2944  vindex = ccm_vis_index (CCM_MPREFETCH);
2945  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2946  ccm_attrs[vindex].name = "CCM_MPREFETCH";
2947  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2948				   "Prefetch of %s inserted");
2949  ccm_attrs[vindex].fmt = CCMFMT_S1;
2950
2951  vindex = ccm_vis_index (CCM_MPREFETCH_LD);
2952  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2953  ccm_attrs[vindex].name = "CCM_MPREFETCH_LD";
2954  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2955				   "Prefetch of %s inserted for load at %s");
2956  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
2957
2958  vindex = ccm_vis_index (CCM_MPREFETCH_ST);
2959  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2960  ccm_attrs[vindex].name = "CCM_MPREFETCH_ST";
2961  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2962				   "Prefetch of %s inserted for store at %s");
2963  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
2964
2965  vindex = ccm_vis_index (CCM_MPREFETCH_FB);
2966  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2967  ccm_attrs[vindex].name = "CCM_MPREFETCH_FB";
2968  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2969				   "Prefetch of %s inserted based on feedback data");
2970  ccm_attrs[vindex].fmt = CCMFMT_S1;
2971
2972  vindex = ccm_vis_index (CCM_MPREFETCH_FB_LD);
2973  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2974  ccm_attrs[vindex].name = "CCM_MPREFETCH_FB_LD";
2975  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2976				   "Prefetch of %s inserted for load at %s based"
2977				   " on feedback data");
2978  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
2979
2980  vindex = ccm_vis_index (CCM_MPREFETCH_FB_ST);
2981  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
2982  ccm_attrs[vindex].name = "CCM_MPREFETCH_FB_ST";
2983  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2984				   "Prefetch of %s inserted for store at %s based"
2985				   " on feedback data");
2986  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
2987
2988  vindex = ccm_vis_index (CCM_MLOAD);
2989  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL;
2990  ccm_attrs[vindex].name = "CCM_MLOAD";
2991  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2992				   "Load below refers to %s");
2993  ccm_attrs[vindex].fmt = CCMFMT_S1;
2994
2995  vindex = ccm_vis_index (CCM_MSTORE);
2996  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL;
2997  ccm_attrs[vindex].name = "CCM_MSTORE";
2998  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
2999				   "Store below refers to %s");
3000  ccm_attrs[vindex].fmt = CCMFMT_S1;
3001
3002  vindex = ccm_vis_index (CCM_MLOAD_P);
3003  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL;
3004  ccm_attrs[vindex].name = "CCM_MLOAD_P";
3005  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3006				   "Load below refers to %s, and was prefetched"
3007				   " at %s");
3008  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
3009
3010  vindex = ccm_vis_index (CCM_MSTORE_P);
3011  ccm_attrs[vindex].vis = CCMV_MEMOPS | CCMV_BASIC | CCMV_UNIMPL;
3012  ccm_attrs[vindex].name = "CCM_MSTORE_P";
3013  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3014				   "Store below refers to %s, and was prefetched"
3015				   " at %s");
3016  ccm_attrs[vindex].fmt = CCMFMT_S1X2;
3017
3018  vindex = ccm_vis_index (CCM_COPYIN);
3019  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3020  ccm_attrs[vindex].name = "CCM_COPYIN";
3021  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3022				   "Parameter %d caused a copyin in the following"
3023				   " call");
3024  ccm_attrs[vindex].fmt = CCMFMT_I1;
3025
3026  vindex = ccm_vis_index (CCM_COPYOUT);
3027  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3028  ccm_attrs[vindex].name = "CCM_COPYOUT";
3029  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3030				   "Parameter %d caused a copyout in the following"
3031				   " call");
3032  ccm_attrs[vindex].fmt = CCMFMT_I1;
3033
3034  vindex = ccm_vis_index (CCM_COPYINOUT);
3035  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3036  ccm_attrs[vindex].name = "CCM_COPYINOUT";
3037  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3038				   "Parameter %d caused both a copyin and copyout"
3039				   " in the following call");
3040  ccm_attrs[vindex].fmt = CCMFMT_I1;
3041
3042  vindex = ccm_vis_index (CCM_PADDING);
3043  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3044  ccm_attrs[vindex].name = "CCM_PADDING";
3045  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3046				   "Padding of %d bytes inserted before"
3047				   " array %s");
3048  ccm_attrs[vindex].fmt = CCMFMT_I1V2;
3049
3050  vindex = ccm_vis_index (CCM_PADCOMMON);
3051  ccm_attrs[vindex].vis = CCMV_FE | CCMV_UNIMPL;
3052  ccm_attrs[vindex].name = "CCM_PADCOMMON";
3053  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3054				   "Padding of %d bytes inserted before"
3055				   " array %s in common block %s");
3056  ccm_attrs[vindex].fmt = CCMFMT_I1V2V3;
3057
3058  vindex = ccm_vis_index (CCM_ALIGN_EQ);
3059  ccm_attrs[vindex].vis = CCMV_FE | CCMV_UNIMPL;
3060  ccm_attrs[vindex].name = "CCM_ALIGN_EQ";
3061  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3062				   "Variable/array %s can not be double-aligned,"
3063				   " because it is equivalenced");
3064  ccm_attrs[vindex].fmt = CCMFMT_V1;
3065
3066  vindex = ccm_vis_index (CCM_ALIGN_PERF);
3067  ccm_attrs[vindex].vis = CCMV_FE;
3068  ccm_attrs[vindex].name = "CCM_ALIGN_PERF";
3069  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3070				   "Alignment of variables in common block may cause"
3071				   " performance degradation");
3072  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3073
3074  vindex = ccm_vis_index (CCM_ALIGN_STRUCT);
3075  ccm_attrs[vindex].vis = CCMV_FE;
3076  ccm_attrs[vindex].name = "CCM_ALIGN_STRUCT";
3077  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3078				   "Alignment of component %s in numeric sequence"
3079				   " structure %s may cause performance degradation");
3080  ccm_attrs[vindex].fmt = CCMFMT_S1S2;
3081
3082  vindex = ccm_vis_index (CCM_TMP_COPY);
3083  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3084  ccm_attrs[vindex].name = "CCM_TMP_COPY";
3085  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3086				   "Argument %s copied to a temporary");
3087  ccm_attrs[vindex].fmt = CCMFMT_V1;
3088
3089  vindex = ccm_vis_index (CCM_TMP_COPYM);
3090  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3091  ccm_attrs[vindex].name = "CCM_TMP_COPYM";
3092  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3093				   "Argument %s might be copied to a temporary;"
3094				   " runtime decision made");
3095  ccm_attrs[vindex].fmt = CCMFMT_V1;
3096
3097  vindex = ccm_vis_index (CCM_PROC_MISMATCH);
3098  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
3099  ccm_attrs[vindex].name = "CCM_PROC_MISMATCH";
3100  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3101				   "Argument %d to subprogram %s differs from"
3102				   " reference on line %d");
3103  ccm_attrs[vindex].fmt = CCMFMT_I1P2I3;
3104
3105  vindex = ccm_vis_index (CCM_PROC_MISMATCH2);
3106  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
3107  ccm_attrs[vindex].name = "CCM_PROC_MISMATCH2";
3108  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3109				   "Scalar argument %d to subprogram %s is"
3110				   " referred to as an array on line %d");
3111  ccm_attrs[vindex].fmt = CCMFMT_I1P2I3;
3112
3113  vindex = ccm_vis_index (CCM_PROC_MISMATCH3);
3114  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
3115  ccm_attrs[vindex].name = "CCM_PROC_MISMATCH3";
3116  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3117				   "Return type/rank from subprogram %s differs"
3118				   " from return on line %d");
3119  ccm_attrs[vindex].fmt = CCMFMT_P1I2;
3120
3121  vindex = ccm_vis_index (CCM_DO_EXPR);
3122  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3123  ccm_attrs[vindex].name = "CCM_DO_EXPR";
3124  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3125				   "DO statement bounds lead to no executions of the"
3126				   " loop");
3127  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3128
3129  vindex = ccm_vis_index (CCM_AUTO_BND);
3130  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3131  ccm_attrs[vindex].name = "CCM_AUTO_BND";
3132  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3133				   "The bounds for automatic variable %s are not"
3134				   " available at all entry points; zero-length"
3135				   " variable might be allocated");
3136  ccm_attrs[vindex].fmt = CCMFMT_V1;
3137
3138  vindex = ccm_vis_index (CCM_LIT_PAD);
3139  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3140  ccm_attrs[vindex].name = "CCM_LIT_PAD";
3141  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3142				   "The character string literal %s padded"
3143				   " to the length specified for the dummy argument");
3144  ccm_attrs[vindex].fmt = CCMFMT_S1;
3145
3146  vindex = ccm_vis_index (CCM_ARRAY_LOOP);
3147  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
3148  ccm_attrs[vindex].name = "CCM_ARRAY_LOOP";
3149  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3150				   "Array statement below generated a loop");
3151  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3152
3153  vindex = ccm_vis_index (CCM_ARRAY_LOOPNEST);
3154  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_OBS;
3155  ccm_attrs[vindex].name = "CCM_ARRAY_LOOPNEST";
3156  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3157				   "Array statement below generated %d nested loops");
3158  ccm_attrs[vindex].fmt = CCMFMT_I1;
3159
3160  vindex = ccm_vis_index (CCM_ALIGN_PERF2);
3161  ccm_attrs[vindex].vis = CCMV_FE;
3162  ccm_attrs[vindex].name = "CCM_ALIGN_PERF2";
3163  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3164				   "Alignment of variable %s in common block %s"
3165				   " may cause a performance degradation");
3166  ccm_attrs[vindex].fmt = CCMFMT_V1V2;
3167
3168  vindex = ccm_vis_index (CCM_ALIGN_PERF3);
3169  ccm_attrs[vindex].vis = CCMV_FE;
3170  ccm_attrs[vindex].name = "CCM_ALIGN_PERF3";
3171  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3172				   "Alignment of variable %s in blank common may"
3173				   " cause a performance degradation");
3174  ccm_attrs[vindex].fmt = CCMFMT_V1;
3175
3176  vindex = ccm_vis_index (CCM_IO_LOOP_ARRAY);
3177  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3178  ccm_attrs[vindex].name = "CCM_IO_LOOP_ARRAY";
3179  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3180				   "I/O implied do item below generated an array"
3181				   " section");
3182  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3183
3184  vindex = ccm_vis_index (CCM_TMPCONST);
3185  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3186  ccm_attrs[vindex].name = "CCM_TMPCONST";
3187  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3188				   "Implicit invocation of class %s constructor for"
3189				   " temporary");
3190  ccm_attrs[vindex].fmt = CCMFMT_S1;
3191
3192  vindex = ccm_vis_index (CCM_TMPDEST);
3193  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3194  ccm_attrs[vindex].name = "CCM_TMPDEST";
3195  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3196				   "Implicit invocation of class %s destructor for"
3197				   " temporary");
3198  ccm_attrs[vindex].fmt = CCMFMT_S1;
3199
3200  vindex = ccm_vis_index (CCM_DBL_CONST);
3201  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3202  ccm_attrs[vindex].name = "CCM_DBL_CONST";
3203  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3204				   "Double constant %s used in float expression");
3205  ccm_attrs[vindex].fmt = CCMFMT_S1;
3206
3207  vindex = ccm_vis_index (CCM_MINLINE);
3208  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3209  ccm_attrs[vindex].name = "CCM_MINLINE";
3210  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3211				   "Function %s inlined from source file %s by"
3212				   " front-end");
3213  ccm_attrs[vindex].fmt = CCMFMT_P1S2;
3214
3215  vindex = ccm_vis_index (CCM_MINLINE2);
3216  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3217  ccm_attrs[vindex].name = "CCM_MINLINE2";
3218  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3219				   "Function %s from source file %s inlined into"
3220				   " inline copy of method %s by front-end");
3221  ccm_attrs[vindex].fmt = CCMFMT_P1S2P3;
3222
3223  vindex = ccm_vis_index (CCM_MINLINE3);
3224  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3225  ccm_attrs[vindex].name = "CCM_MINLINE3";
3226  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3227				   "Function %s not inlined because it uses keyword"
3228				   " %s");
3229  ccm_attrs[vindex].fmt = CCMFMT_P1S2;
3230
3231  vindex = ccm_vis_index (CCM_MINLINE4);
3232  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC | CCMV_UNIMPL;
3233  ccm_attrs[vindex].name = "CCM_MINLINE4";
3234  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3235				   "Function %s not inlined because it is too"
3236				   " complex");
3237  ccm_attrs[vindex].fmt = CCMFMT_P1;
3238
3239  vindex = ccm_vis_index (CCM_TMP_COPYOUT);
3240  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3241  ccm_attrs[vindex].name = "CCM_TMP_COPYOUT";
3242  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3243				   "Argument %s copied from a temporary");
3244  ccm_attrs[vindex].fmt = CCMFMT_V1;
3245
3246  vindex = ccm_vis_index (CCM_TMP_COPYOUTM);
3247  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3248  ccm_attrs[vindex].name = "CCM_TMP_COPYOUTM";
3249  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3250				   "Argument %s might be copied from a temporary;"
3251				   " runtime decision made");
3252  ccm_attrs[vindex].fmt = CCMFMT_V1;
3253
3254  vindex = ccm_vis_index (CCM_TMP_COPYINOUT);
3255  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3256  ccm_attrs[vindex].name = "CCM_TMP_COPYINOUT";
3257  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3258				   "Argument %s copied in and out of a temporary");
3259  ccm_attrs[vindex].fmt = CCMFMT_V1;
3260
3261  vindex = ccm_vis_index (CCM_TMP_COPYINOUTM);
3262  ccm_attrs[vindex].vis = CCMV_FE | CCMV_BASIC;
3263  ccm_attrs[vindex].name = "CCM_TMP_COPYINOUTM";
3264  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3265				   "Argument %s might be copied in and out of"
3266				   " a temporary; runtime decision made");
3267  ccm_attrs[vindex].fmt = CCMFMT_V1;
3268
3269  vindex = ccm_vis_index (CCM_ARRAY_LOOP_2);
3270  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3271  ccm_attrs[vindex].name = "CCM_ARRAY_LOOP_2";
3272  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3273				   "Array statement below generated loop %s");
3274  ccm_attrs[vindex].fmt = CCMFMT_L1;
3275
3276  vindex = ccm_vis_index (CCM_ARRAY_LOOPNEST_2);
3277  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3278  ccm_attrs[vindex].name = "CCM_ARRAY_LOOPNEST_2";
3279  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3280				   "Array statement below generated %d nested"
3281				   " loops: %s");
3282  ccm_attrs[vindex].fmt = CCMFMT_I1LL2;
3283
3284  vindex = ccm_vis_index (CCM_IO_LOOP_ARRAY_2);
3285  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3286  ccm_attrs[vindex].name = "CCM_IO_LOOP_ARRAY_2";
3287  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3288				   "I/O implied do item below generated an array"
3289				   " section: %s");
3290  ccm_attrs[vindex].fmt = CCMFMT_L1;
3291
3292  vindex = ccm_vis_index (CCM_USER_LOOP);
3293  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3294  ccm_attrs[vindex].name = "CCM_USER_LOOP";
3295  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3296				   "Source loop below has tag %s");
3297  ccm_attrs[vindex].fmt = CCMFMT_L1;
3298
3299  vindex = ccm_vis_index (CCM_FOUND_LOOP);
3300  ccm_attrs[vindex].vis = CCMV_FE | CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3301  ccm_attrs[vindex].name = "CCM_FOUND_LOOP";
3302  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3303				   "Discovered loop below has tag %s");
3304  ccm_attrs[vindex].fmt = CCMFMT_L1;
3305
3306  vindex = ccm_vis_index (CCM_MFUNCTION_LOOP);
3307  ccm_attrs[vindex].vis = CCMV_LOOP | CCMV_BASIC | CCMV_WANT;
3308  ccm_attrs[vindex].name = "CCM_MFUNCTION_LOOP";
3309  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3310				   "Copy in M-function of loop below has tag %s");
3311  ccm_attrs[vindex].fmt = CCMFMT_L1;
3312
3313  vindex = ccm_vis_index (CCM_FSIMPLE);
3314  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3315  ccm_attrs[vindex].name = "CCM_FSIMPLE";
3316  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3317				   "Transformations for fsimple=%d applied");
3318  ccm_attrs[vindex].fmt = CCMFMT_I1;
3319
3320  vindex = ccm_vis_index (CCM_STACK);
3321  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3322  ccm_attrs[vindex].name = "CCM_STACK";
3323  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3324				   "Function %s requires %d Mbytes of stack"
3325				   " storage");
3326  ccm_attrs[vindex].fmt = CCMFMT_P1I2;
3327
3328  vindex = ccm_vis_index (CCM_TAILRECUR);
3329  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3330  ccm_attrs[vindex].name = "CCM_TAILRECUR";
3331  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3332				   "Recursive tail call in %s optimized to jump to"
3333				   " entry point");
3334  ccm_attrs[vindex].fmt = CCMFMT_P1;
3335
3336  vindex = ccm_vis_index (CCM_TAILCALL);
3337  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC | CCMV_UNIMPL | CCMV_WANT;
3338  ccm_attrs[vindex].name = "CCM_TAILCALL";
3339  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3340				   "Call to function %s was tail-call optimized");
3341  ccm_attrs[vindex].fmt = CCMFMT_P1;
3342
3343  vindex = ccm_vis_index (CCM_NI_EXIT_OR_PSEUDO);
3344  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3345  ccm_attrs[vindex].name = "CCM_NI_EXIT_OR_PSEUDO";
3346  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3347				   "Template could not be early inlined because it"
3348				   " contains the pseudo instruction %s");
3349  ccm_attrs[vindex].fmt = CCMFMT_S1;
3350
3351  vindex = ccm_vis_index (CCM_NI_BAD_UNARY_OPC);
3352  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3353  ccm_attrs[vindex].name = "CCM_NI_BAD_UNARY_OPC";
3354  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3355				   "Template could not be early inlined because it"
3356				   " contains the instruction opcode %s");
3357  ccm_attrs[vindex].fmt = CCMFMT_S1;
3358
3359  vindex = ccm_vis_index (CCM_NI_INT_LDD_ON_V9);
3360  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3361  ccm_attrs[vindex].name = "CCM_NI_INT_LDD_ON_V9";
3362  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3363				   "Template could not be early inlined because it"
3364				   " contains integer ldd instructions, which are"
3365				   " deprecated in the v9 architecture");
3366  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3367
3368  vindex = ccm_vis_index (CCM_NI_LATE_INL_OPC);
3369  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3370  ccm_attrs[vindex].name = "CCM_NI_LATE_INL_OPC";
3371  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3372				   "Template could not be early inlined because it"
3373				   " contains the instruction opcode %s");
3374  ccm_attrs[vindex].fmt = CCMFMT_S1;
3375
3376  vindex = ccm_vis_index (CCM_NI_BAD_IMM_OP);
3377  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3378  ccm_attrs[vindex].name = "CCM_NI_BAD_IMM_OP";
3379  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3380				   "Template could not be early inlined because the"
3381				   " relocation or immediate operand %s is not well"
3382				   " understood by the optimizer");
3383  ccm_attrs[vindex].fmt = CCMFMT_S1;
3384
3385  vindex = ccm_vis_index (CCM_NI_BAD_STATELEAF);
3386  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3387  ccm_attrs[vindex].name = "CCM_NI_BAD_STATELEAF";
3388  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3389				   "Template could not be early inlined because it"
3390				   " references the state register %s");
3391  ccm_attrs[vindex].fmt = CCMFMT_S1;
3392
3393  vindex = ccm_vis_index (CCM_NI_BAD_ASR_19);
3394  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3395  ccm_attrs[vindex].name = "CCM_NI_BAD_ASR_19";
3396  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3397				   "Template could not be early inlined because"
3398				   " %%asr19 is not supported in pre v8plus code");
3399  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3400
3401  vindex = ccm_vis_index (CCM_NI_BAD_FSR_USE);
3402  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3403  ccm_attrs[vindex].name = "CCM_NI_BAD_FSR_USE";
3404  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3405				   "Template could not be early inlined because"
3406				   " references to %%fsr can only be optimized when the"
3407				   " -iaopts flag is used");
3408  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3409
3410  vindex = ccm_vis_index (CCM_NI_BAD_REGISTER);
3411  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3412  ccm_attrs[vindex].name = "CCM_NI_BAD_REGISTER";
3413  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3414				   "Template could not be early inlined because it"
3415				   " references the register %s");
3416  ccm_attrs[vindex].fmt = CCMFMT_S1;
3417
3418  vindex = ccm_vis_index (CCM_NI_NO_RET_VAL);
3419  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3420  ccm_attrs[vindex].name = "CCM_NI_NO_RET_VAL";
3421  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3422				   "Template could not be early inlined because it"
3423				   " does not return the value declared");
3424  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3425
3426  vindex = ccm_vis_index (CCM_NI_DELAY);
3427  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3428  ccm_attrs[vindex].name = "CCM_NI_DELAY";
3429  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3430				   "Template could not be early inlined because it"
3431				   " contains a non nop delay slot");
3432  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3433
3434  vindex = ccm_vis_index (CCM_NI_SCALL);
3435  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3436  ccm_attrs[vindex].name = "CCM_NI_SCALL";
3437  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3438				   "Template could not be early inlined because it"
3439				   " calls a function which returns a structure");
3440  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3441
3442  vindex = ccm_vis_index (CCM_CASE_POSITION);
3443  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3444  ccm_attrs[vindex].name = "CCM_CASE_POSITION";
3445  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3446				   "Case block below was placed at position %d"
3447				   " based on execution frequency");
3448  ccm_attrs[vindex].fmt = CCMFMT_I1;
3449
3450  vindex = ccm_vis_index (CCM_CALL_WITH_CODE);
3451  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3452  ccm_attrs[vindex].name = "CCM_CALL_WITH_CODE";
3453  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3454				   "Call to %s replaced with inline code.  %d"
3455				   " loops created: %s");
3456  ccm_attrs[vindex].fmt = CCMFMT_P1I2LL3;
3457
3458  vindex = ccm_vis_index (CCM_NI_BAD_SP_ADDR);
3459  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3460  ccm_attrs[vindex].name = "CCM_NI_BAD_SP_ADDR";
3461  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3462				   "Template could not be early inlined because it"
3463				   " contains a %%sp+reg address");
3464  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3465
3466  vindex = ccm_vis_index (CCM_NI_BAD_SP_USAGE);
3467  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3468  ccm_attrs[vindex].name = "CCM_NI_BAD_SP_USAGE";
3469  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3470				   "Template could not be early inlined because it"
3471				   " uses/defines the stack pointer in a non-load/store instruction");
3472  ccm_attrs[vindex].fmt = CCMFMT_NONE;
3473
3474  vindex = ccm_vis_index (CCM_NI_MIXED_REG_TYPES);
3475  ccm_attrs[vindex].vis = CCMV_CG | CCMV_BASIC;
3476  ccm_attrs[vindex].name = "CCM_NI_MIXED_REG_TYPES";
3477  ccm_attrs[vindex].msg = catgets (ccm_catd, 99, vindex,
3478				   "Template could not be early inlined because it"
3479				   " contains register %s used as both x-register and register pair");
3480  ccm_attrs[vindex].fmt = CCMFMT_S1;
3481}
3482