xref: /netbsd-src/external/gpl3/binutils/dist/gprofng/src/comp_com.c (revision cb63e24e8d6aae7ddac1859a9015f48b1d8bd90e)
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 
44 typedef 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 
105 typedef 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 
113 typedef 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 
125 typedef 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 
133 static Ccm_Attr_t *ccm_attrs;            /* Table of per-msg attributes */
134 static nl_catd ccm_catd = (nl_catd) - 1; /* messages id */
135 
136 /*
137  * map COMPMSG_ID to table indices
138  */
139 static int
ccm_vis_index(COMPMSG_ID m)140 ccm_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  */
154 static int
ccm_num_params(COMPMSG_ID m)155 ccm_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 
247 static int
ccm_paramlist_index(COMPMSG_ID m)248 ccm_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 
325 static Ccm_Primtype_t
ccm_param_primtype(COMPMSG_ID m,int param_idx)326 ccm_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 
515 static Ccm_Hitype_t
ccm_param_hightype(COMPMSG_ID m,int param_idx)516 ccm_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 
833 static void
ccm_vis_init()834 ccm_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