Author: dcoakley
Date: 2010-11-29 18:22:50 -0500 (Mon, 29 Nov 2010)
New Revision: 3410

Modified:
   trunk/osprey/crayf90/fe90/cmd_line.c
   trunk/osprey/crayf90/fe90/cmd_line.h
   trunk/osprey/crayf90/fe90/cmd_line.m
   trunk/osprey/crayf90/fe90/cond_comp.c
   trunk/osprey/crayf90/fe90/cond_comp.m
   trunk/osprey/crayf90/fe90/debug.c
   trunk/osprey/crayf90/fe90/i_cvrt.c
   trunk/osprey/crayf90/fe90/main.c
   trunk/osprey/crayf90/fe90/mifcvrt.c
   trunk/osprey/crayf90/fe90/p_utils.c
   trunk/osprey/crayf90/fe90/s_asg_expr.c
   trunk/osprey/crayf90/fe90/s_driver.c
   trunk/osprey/crayf90/fe90/s_intrin.c
   trunk/osprey/crayf90/fe90/sytb.c
   trunk/osprey/crayf90/fe90/sytb.m
Log:
Make Fortran frontend compatible with FORTIFY_SOURCE.

o Instead of using the union fields in memory pool elements to do type
  conversion, use a cast operator.  The union fields are seen as very
  small individual buffers by the FORITFY_SOURCE checking, triggering
  false overflow errors.

  The following code demonstrates the underlying issue: the two pointers
  point to the same location but the buffer size returned by
  __builtin_object_size differs (at least with gcc-4.5.1 and "-m32 -O2").

    name_pool_type *my_pool;
    char *ptr1, *ptr2;

    my_pool = (name_pool_type *)malloc(100 * sizeof(name_pool_type));
    ptr1 = &my_pool[3].name_char;
    ptr2 = (char *)&my_pool[3];

    printf("%d\n", __builtin_object_size(ptr1, 1));  // prints "1"
    printf("%d\n", __builtin_object_size(ptr2, 1));  // prints "388"

o In validate_O_option(), use the "msg_str" buffer to build message
  strings since the variable "str" might not point to writable space.
  Check that the "msg_str" buffer is large enough in all cases.

o In label_ref_semantics(), make the buffer size for "stmt_str" large
  enough to accommodate "END FORALL", fixing a buffer overrun.

o Use memory pool access macros more consistently.

Approved by: Sun Chan


Modified: trunk/osprey/crayf90/fe90/cmd_line.c
===================================================================
--- trunk/osprey/crayf90/fe90/cmd_line.c        2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/cmd_line.c        2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -3128,7 +3132,6 @@
    char                 msg_str[30];
    boolean      option_conflict        = FALSE;
    int          scalar;
-   char                *str;
    int          task;
 
 #  if defined(_ACCEPT_VECTOR)
@@ -3210,10 +3213,8 @@
       }
       else if (opt_flags.task_lvl > Task_Lvl_1 &&
                opt_flags.task_lvl > opt_flags.vector_lvl) {
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]);
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]);
+         COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
       else if (opt_flags.scalar_lvl == Scalar_Lvl_2 &&
@@ -3223,10 +3224,8 @@
          /* Rule exception - scalar2, vector3  */
       }
       else if (opt_flags.scalar_lvl < opt_flags.vector_lvl) {
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]);
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]);
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
    }
@@ -3240,10 +3239,8 @@
          /* If vector3, task can be anything */
       }
       else if (opt_flags.scalar_lvl < opt_flags.vector_lvl) {
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]);
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]);
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
       else if (opt_flags.task_lvl > opt_flags.vector_lvl  &&
@@ -3251,14 +3248,10 @@
          task = (opt_flags.vector_lvl == Vector_Lvl_0) ?
                  Task_Lvl_1 : opt_flags.vector_lvl;
 
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[15], "\n");
-         strcpy(&msg_str[16], task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[21], "\n");
-         strcpy(&msg_str[22], task_lvl_str[task]); 
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(16, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(22, task, task, NULL_CHAR);
 
          ntr_msg_queue(0, 1064, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.task_lvl = task;
@@ -3272,14 +3265,10 @@
          /* Rule exception - Scalar2, Task3 is okay. */
 
          if (opt_flags.vector_lvl != Vector_Lvl_3) {
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-            strcpy(&msg_str[13], "\n");
-            strcpy(&msg_str[14], vector_lvl_str[opt_flags.vector_lvl]); 
-            strcpy(&msg_str[21], "\n");
-            strcpy(&msg_str[22], vector_lvl_str[Vector_Lvl_3]); 
+            COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+            COPY_LVL_STR(14, vector, opt_flags.vector_lvl, NEWLINE);
+            COPY_LVL_STR(22, vector, Vector_Lvl_3, NULL_CHAR);
 
             ntr_msg_queue(0, 1064, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.vector_lvl = Vector_Lvl_3;
@@ -3291,36 +3280,26 @@
 
          if (opt_flags.vector_lvl > opt_flags.scalar_lvl) {
             vector = opt_flags.scalar_lvl;
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-            strcpy(&msg_str[13], "\n");
-            strcpy(&msg_str[14], vector_lvl_str[opt_flags.vector_lvl]); 
-            strcpy(&msg_str[21], "\n");
-            strcpy(&msg_str[22], vector_lvl_str[vector]); 
+            COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+            COPY_LVL_STR(14, vector, opt_flags.vector_lvl, NEWLINE);
+            COPY_LVL_STR(22, vector, vector, NULL_CHAR);
 
             ntr_msg_queue(0, 1064, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.vector_lvl = vector;
          }
       }
       else if (opt_flags.task_lvl > opt_flags.scalar_lvl) {
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]);
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]);
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
       else if (opt_flags.task_lvl > opt_flags.vector_lvl) {
          vector = opt_flags.task_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[13], "\n");
-         strcpy(&msg_str[14], vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[21], "\n");
-         strcpy(&msg_str[22], vector_lvl_str[vector]); 
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(14, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(22, vector, vector, NULL_CHAR);
          ntr_msg_queue(0, 1064, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
 
          opt_flags.vector_lvl = vector;
@@ -3330,10 +3309,8 @@
 
       if (opt_flags.task_lvl > Task_Lvl_1 &&
           opt_flags.task_lvl > opt_flags.vector_lvl) {
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]);
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]);
+         COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
       else if (opt_flags.vector_lvl > opt_flags.scalar_lvl) {
@@ -3346,14 +3323,10 @@
          else {
             scalar = (opt_flags.vector_lvl == Vector_Lvl_3) ?
                      Scalar_Lvl_2 : opt_flags.vector_lvl;
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-            strcpy(&msg_str[13], "\n");
-            strcpy(&msg_str[14], scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[21], "\n");
-            strcpy(&msg_str[22], scalar_lvl_str[scalar]); 
+            COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+            COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+            COPY_LVL_STR(14, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(22, scalar, scalar, NULL_CHAR);
             ntr_msg_queue(0, 1064, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
 
             opt_flags.scalar_lvl = scalar;
@@ -3364,12 +3337,9 @@
 
       if (opt_flags.vector_lvl > opt_flags.scalar_lvl) { 
          vector = opt_flags.scalar_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[15], "\n");
-         strcpy(&msg_str[16], vector_lvl_str[vector]); 
+         COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(16, vector, vector, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.vector_lvl = vector;
@@ -3379,12 +3349,9 @@
           opt_flags.task_lvl > Task_Lvl_1) {
          task = (opt_flags.vector_lvl == Vector_Lvl_0) ?
                  Task_Lvl_1 : opt_flags.vector_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[13], "\n");
-         strcpy(&msg_str[14], task_lvl_str[task]); 
+         COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(14, task, task, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.task_lvl = task;
@@ -3399,12 +3366,9 @@
 
          scalar = (opt_flags.vector_lvl == Vector_Lvl_3) ?
                    Scalar_Lvl_2 : opt_flags.vector_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], scalar_lvl_str[opt_flags.scalar_lvl]); 
-         strcpy(&msg_str[15], "\n");
-         strcpy(&msg_str[16], scalar_lvl_str[scalar]); 
+         COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(8, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(16, scalar, scalar, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.scalar_lvl = scalar;
@@ -3415,12 +3379,9 @@
 
          task = (opt_flags.vector_lvl == Vector_Lvl_0) ?
                  Task_Lvl_1 : opt_flags.vector_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[7], "\n");
-         strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[13], "\n");
-         strcpy(&msg_str[14], task_lvl_str[task]); 
+         COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(14, task, task, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.task_lvl = task;
@@ -3432,12 +3393,9 @@
           opt_flags.scalar_lvl != Scalar_Lvl_2) {
          scalar = (opt_flags.task_lvl == Task_Lvl_3) ?
                    Scalar_Lvl_2 : opt_flags.task_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[5], "\n");
-         strcpy(&msg_str[6], scalar_lvl_str[opt_flags.scalar_lvl]); 
-         strcpy(&msg_str[13], "\n");
-         strcpy(&msg_str[14], scalar_lvl_str[scalar]); 
+         COPY_LVL_STR(0, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(6, scalar, opt_flags.scalar_lvl, NEWLINE);
+         COPY_LVL_STR(14, scalar, scalar, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.scalar_lvl = scalar;
@@ -3445,12 +3403,9 @@
 
       if (opt_flags.task_lvl > opt_flags.vector_lvl) { 
          vector = opt_flags.task_lvl;
-         msg_str[0] = NULL_CHAR;
-         strcpy(msg_str, task_lvl_str[opt_flags.task_lvl]); 
-         strcpy(&msg_str[5], "\n");
-         strcpy(&msg_str[6], vector_lvl_str[opt_flags.vector_lvl]); 
-         strcpy(&msg_str[13], "\n");
-         strcpy(&msg_str[14], vector_lvl_str[vector]); 
+         COPY_LVL_STR(0, task, opt_flags.task_lvl, NEWLINE);
+         COPY_LVL_STR(6, vector, opt_flags.vector_lvl, NEWLINE);
+         COPY_LVL_STR(14, vector, vector, NULL_CHAR);
 
          ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
          opt_flags.vector_lvl = vector;
@@ -3470,10 +3425,8 @@
 
             /* Scalar2, Task3 is an exception and is legal. */
 
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]);
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]);
+            COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(8, task, opt_flags.task_lvl, NULL_CHAR);
             ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
          }
       }
@@ -3482,12 +3435,9 @@
          if (opt_flags.task_lvl > opt_flags.scalar_lvl) { 
             task = (opt_flags.scalar_lvl == Scalar_Lvl_0) ?
                     Task_Lvl_1 : opt_flags.scalar_lvl;
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], task_lvl_str[opt_flags.task_lvl]); 
-            strcpy(&msg_str[13], "\n");
-            strcpy(&msg_str[14], task_lvl_str[task]); 
+            COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(8, task, opt_flags.task_lvl, NEWLINE);
+            COPY_LVL_STR(14, task, task, NULL_CHAR);
 
             ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.task_lvl = task;
@@ -3498,12 +3448,9 @@
          if (opt_flags.task_lvl > opt_flags.scalar_lvl) { 
             scalar = (opt_flags.task_lvl == Task_Lvl_3) ?
                       Scalar_Lvl_2 : opt_flags.task_lvl;
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, task_lvl_str[opt_flags.task_lvl]); 
-            strcpy(&msg_str[5], "\n");
-            strcpy(&msg_str[6], scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[13], "\n");
-            strcpy(&msg_str[14], scalar_lvl_str[scalar]); 
+            COPY_LVL_STR(0, task, opt_flags.task_lvl, NEWLINE);
+            COPY_LVL_STR(6, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(14, scalar, scalar, NULL_CHAR);
 
             ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.scalar_lvl = scalar;
@@ -3518,37 +3465,33 @@
    if (opt_flags.scalar_lvl == Scalar_Lvl_0) {
 
       if (set_aggress_option  &&  opt_flags.aggress) {
-         str = (set_scalar_option) ? "scalar0" : "0";
-         strcat(str, "\n");
-         strcat(str, "aggress");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_scalar_option) ? "scalar0" : "0", NEWLINE);
+         COPY_MSG_STR((set_scalar_option) ? 8 : 2, "aggress", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.aggress = FALSE;
 
       if (set_bottom_load_option  &&  opt_flags.bottom_load) { 
-         str = (set_scalar_option) ? "scalar0" : "0";
-         strcat(str, "\n");
-         strcat(str, "bl");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_scalar_option) ? "scalar0" : "0", NEWLINE);
+         COPY_MSG_STR((set_scalar_option) ? 8 : 2, "bl", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.bottom_load = FALSE;
 
       if (set_recurrence_option && opt_flags.recurrence) {
-         str   = (set_scalar_option) ? "scalar0" : "0";
-         strcat(str, "\n");
-         strcat(str, "recurrence");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_scalar_option) ? "scalar0" : "0", NEWLINE);
+         COPY_MSG_STR((set_scalar_option) ? 8 : 2, "recurrence", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.recurrence = FALSE;
 
       if (set_zeroinc_option  &&  opt_flags.zeroinc) {
-         str   = (set_scalar_option) ? "scalar0" : "0";
-         strcat(str, "\n");
-         strcat(str, "zeroinc");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_scalar_option) ? "scalar0" : "0", NEWLINE);
+         COPY_MSG_STR((set_scalar_option) ? 8 : 2, "zeroinc", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.zeroinc = FALSE;
@@ -3565,10 +3508,9 @@
    if (opt_flags.vector_lvl == Vector_Lvl_0) {
 
       if (set_vsearch_option  &&  opt_flags.vsearch) { 
-         str = (set_vector_option) ? "vector0" : "0";
-         strcat(str, "\n");
-         strcat(str, "vsearch");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_vector_option) ? "vector0" : "0", NEWLINE);
+         COPY_MSG_STR((set_vector_option) ? 8 : 2, "vsearch", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.vsearch = FALSE;
@@ -3576,10 +3518,9 @@
 # if defined(_TARGET_OS_UNICOS)
 
       if (set_pattern_option  &&  opt_flags.pattern) {
-         str = (set_vector_option) ? "vector0" : "0";
-         strcat(str, "\n");
-         strcat(str, "pattern");
-         ntr_msg_queue(0, 99, Log_Error, 0, str, 0, MULT_STR_ARG);
+         COPY_MSG_STR(0, (set_vector_option) ? "vector0" : "0", NEWLINE);
+         COPY_MSG_STR((set_vector_option) ? 8 : 2, "pattern", NULL_CHAR);
+         ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
       opt_flags.pattern = FALSE;
@@ -3591,9 +3532,8 @@
    else if (opt_flags.vector_lvl == Vector_Lvl_1) {
 
       if (set_pattern_option  &&  opt_flags.pattern) {
-         str = (set_vector_option) ? "vector1" : "1";
-         strcpy(msg_str, "\n");
-         strcpy(msg_str, "pattern");
+         COPY_MSG_STR(0, (set_vector_option) ? "vector1" : "1", NEWLINE);
+         COPY_MSG_STR((set_vector_option) ? 8 : 2, "pattern", NULL_CHAR);
          ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
       }
 
@@ -3620,10 +3560,8 @@
 
             /* The two are set wrong - issue an error */
 
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, stream_lvl_str[opt_flags.stream_lvl]);
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], scalar_lvl_str[opt_flags.scalar_lvl]);
+            COPY_LVL_STR(0, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(8, scalar, opt_flags.scalar_lvl, NULL_CHAR);
             ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
             option_conflict    = TRUE;
          }
@@ -3635,31 +3573,25 @@
             opt_flags.stream_lvl = opt_flags.scalar_lvl;
          }
          else if (set_scalar_option) {
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], stream_lvl_str[opt_flags.stream_lvl]); 
-            strcpy(&msg_str[15], "\n");
-            strcpy(&msg_str[16], stream_lvl_str[opt_flags.scalar_lvl]); 
+            COPY_LVL_STR(0, scalar, opt_flags.scalar_lvl, NEWLINE);
+            COPY_LVL_STR(8, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(16, stream, opt_flags.scalar_lvl, NULL_CHAR);
 
             ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.stream_lvl = opt_flags.scalar_lvl;
          }
          else if (set_stream_option) {
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, stream_lvl_str[opt_flags.stream_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], scalar_lvl_str[opt_flags.scalar_lvl]); 
-            strcpy(&msg_str[15], "\n");
+            COPY_LVL_STR(0, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(8, scalar, opt_flags.scalar_lvl, NEWLINE);
 
             if (opt_flags.stream_lvl == Stream_Lvl_3) {
-               strcpy(&msg_str[16], scalar_lvl_str[Stream_Lvl_2]); 
+               COPY_LVL_STR(16, scalar, Stream_Lvl_2, NULL_CHAR);
 
                ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, 
MULT_STR_ARG);
                opt_flags.scalar_lvl = Stream_Lvl_2;
             }
             else {
-               strcpy(&msg_str[16], scalar_lvl_str[opt_flags.stream_lvl]); 
+               COPY_LVL_STR(16, scalar, opt_flags.stream_lvl, NULL_CHAR);
 
                ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, 
MULT_STR_ARG);
                opt_flags.scalar_lvl = opt_flags.stream_lvl;
@@ -3679,10 +3611,8 @@
 
             /* The two are set wrong - issue an error */
 
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, stream_lvl_str[opt_flags.stream_lvl]);
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]);
+            COPY_LVL_STR(0, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NULL_CHAR);
             ntr_msg_queue(0, 99, Log_Error, 0, msg_str, 0, MULT_STR_ARG);
             option_conflict    = TRUE;
          }
@@ -3694,31 +3624,25 @@
             opt_flags.stream_lvl = opt_flags.vector_lvl;
          }
          else if (set_vector_option) {
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, vector_lvl_str[opt_flags.vector_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], stream_lvl_str[opt_flags.stream_lvl]); 
-            strcpy(&msg_str[15], "\n");
-            strcpy(&msg_str[16], stream_lvl_str[opt_flags.vector_lvl]); 
+            COPY_LVL_STR(0, vector, opt_flags.vector_lvl, NEWLINE);
+            COPY_LVL_STR(8, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(16, stream, opt_flags.vector_lvl, NULL_CHAR);
 
             ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, MULT_STR_ARG);
             opt_flags.stream_lvl = opt_flags.vector_lvl;
          }
          else if (set_stream_option) {
-            msg_str[0] = NULL_CHAR;
-            strcpy(msg_str, stream_lvl_str[opt_flags.stream_lvl]); 
-            strcpy(&msg_str[7], "\n");
-            strcpy(&msg_str[8], vector_lvl_str[opt_flags.vector_lvl]); 
-            strcpy(&msg_str[15], "\n");
+            COPY_LVL_STR(0, stream, opt_flags.stream_lvl, NEWLINE);
+            COPY_LVL_STR(8, vector, opt_flags.vector_lvl, NEWLINE);
 
             if (opt_flags.stream_lvl == Stream_Lvl_3) {
-               strcpy(&msg_str[16], vector_lvl_str[Stream_Lvl_2]); 
+               COPY_LVL_STR(16, vector, Stream_Lvl_2, NULL_CHAR);
 
                ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, 
MULT_STR_ARG);
                opt_flags.vector_lvl = Stream_Lvl_2;
             }
             else {
-               strcpy(&msg_str[16], vector_lvl_str[opt_flags.stream_lvl]); 
+               COPY_LVL_STR(16, vector, opt_flags.stream_lvl, NULL_CHAR);
 
                ntr_msg_queue(0, 1068, Log_Warning, 0, msg_str, 0, 
MULT_STR_ARG);
                opt_flags.vector_lvl = opt_flags.stream_lvl;
@@ -5438,7 +5362,7 @@
 
       str_pool[str_pool_idx].name_long = 0; /* Zero out last word */
 
-      str_ptr  = &str_pool[FP_NAME_IDX(file_path_tbl_idx)].name_char;
+      str_ptr  = FP_NAME_PTR(file_path_tbl_idx);
 
       for (idx = 0;  idx < length;  idx++) {
          str_ptr[idx] = toupper(module_name[idx]);
@@ -6840,7 +6764,7 @@
 
       str_pool[str_pool_idx].name_long = 0; /* Zero out last word */
 
-      str_ptr  = &str_pool[FP_NAME_IDX(file_path_tbl_idx)].name_char;
+      str_ptr  = FP_NAME_PTR(file_path_tbl_idx);
 
       for (idx = 0;  idx < length;  idx++) {
          str_ptr[idx] = toupper(array_name[idx]);

Modified: trunk/osprey/crayf90/fe90/cmd_line.h
===================================================================
--- trunk/osprey/crayf90/fe90/cmd_line.h        2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/cmd_line.h        2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,5 +1,9 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
 
+/*
+
   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
 
   This program is free software; you can redistribute it and/or modify it
@@ -81,28 +85,28 @@
 *  The following are needed for validate_O_option.               *
 \******************************************************************/
 
-char           *scalar_lvl_str[]       = {
+char           scalar_lvl_str[][8]     = {
                        "scalar0",
                        "scalar1",
                        "scalar2",
                        "scalar3"
                 };
 
-char           *stream_lvl_str[]       = {
+char           stream_lvl_str[][8]     = {
                        "stream0",
                        "stream1",
                        "stream2",
                        "stream3"
                 };
 
-char           *task_lvl_str[]         = {
+char           task_lvl_str[][6]               = {
                        "task0",
                        "task1",
                        "task2",
                        "task3"
                 };
 
-char           *vector_lvl_str[]       = {
+char           vector_lvl_str[][8]     = {
                        "vector0",
                        "vector1",
                        "vector2",

Modified: trunk/osprey/crayf90/fe90/cmd_line.m
===================================================================
--- trunk/osprey/crayf90/fe90/cmd_line.m        2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/cmd_line.m        2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,5 +1,9 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
 
+/*
+
   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
 
   This program is free software; you can redistribute it and/or modify it
@@ -90,3 +94,32 @@
                   strcpy (_nmp++, SUFFIX);                                    \
                }                                                              \
        }
+
+# define ARRAY_LEN(ARRAY)                                                     \
+                (sizeof(ARRAY) / sizeof((ARRAY)[0]))
+
+/* Generate a compile-time error if the constant EXPR is false. */
+# define ASSERT_FALSE(EXPR)                                                   \
+                ((void)sizeof(char[1 - 2 * !!(EXPR)]))
+
+/* Copy a constant string STR of known length LEN into the fixed-length buffer
+ * BUF and then append the character TERM.  To null-terminate the string, TERM
+ * should be NULL_CHAR.  Issues a compile-time error if BUF is too small. */
+# define COPY_STR_WITH_LEN(BUF, POS, STR, LEN, TERM)                          \
+                ASSERT_FALSE(POS + LEN > ARRAY_LEN(BUF));                     \
+                strncpy(&BUF[POS], STR, LEN - 1);                             \
+                BUF[POS + LEN - 1] = TERM
+
+/* Copy a constant string into the fixed-length buffer "msg_str" and terminate
+ * the string with the character TERM. */
+# define COPY_MSG_STR(POS, STR, TERM)                                         \
+                COPY_STR_WITH_LEN(msg_str, POS, STR, ARRAY_LEN(STR), TERM)
+
+/* Copy the *_lvl_str constant string selected by PREFIX and LVL into the
+ * fixed-length buffer "msg_str" and terminate the string with the character
+ * TERM.  The length of the string is determined at compilation time by using a
+ * representative example. */
+# define COPY_LVL_STR(POS, PREFIX, LVL, TERM)                                 \
+                COPY_STR_WITH_LEN(msg_str, POS, PREFIX##_lvl_str[LVL],        \
+                                  ARRAY_LEN(PREFIX##_lvl_str[0]), TERM)
+

Modified: trunk/osprey/crayf90/fe90/cond_comp.c
===================================================================
--- trunk/osprey/crayf90/fe90/cond_comp.c       2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/cond_comp.c       2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -4274,8 +4278,7 @@
       TRACE (Func_Exit, "srch_cc_sym_tbl", NULL);
    }
    else {
-      TRACE (Func_Exit, "srch_cc_sym_tbl", 
-             &str_pool[CC_LN_NAME_IDX(idx)].name_char);
+      TRACE (Func_Exit, "srch_cc_sym_tbl", CC_LN_NAME_PTR(idx));
       idx = CC_LN_ATTR_IDX(idx);
    }
    return (idx);

Modified: trunk/osprey/crayf90/fe90/cond_comp.m
===================================================================
--- trunk/osprey/crayf90/fe90/cond_comp.m       2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/cond_comp.m       2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,5 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
 
+/*
   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
 
   This program is free software; you can redistribute it and/or modify it
@@ -72,7 +75,8 @@
 # define CC_LN_ATTR_IDX(IDX)               cc_ln_tbl[IDX].attr_idx
 # define CC_LN_NAME_IDX(IDX)               cc_ln_tbl[IDX].name_idx
 # define CC_LN_NAME_LEN(IDX)               cc_ln_tbl[IDX].name_len
-# define CC_LN_NAME_LONG(IDX)       &(str_pool[CC_LN_NAME_IDX(IDX)].name_long)
+# define CC_LN_NAME_LONG(IDX)           ((long 
*)&str_pool[CC_LN_NAME_IDX(IDX)])
+# define CC_LN_NAME_PTR(IDX)            ((char 
*)&str_pool[CC_LN_NAME_IDX(IDX)])
 
 
 # define CC_AT_NAME_LEN(IDX)           cc_attr_tbl[IDX].name_len
@@ -84,8 +88,8 @@
 # define CC_AT_NUM_ARGS(IDX)           cc_attr_tbl[IDX].num_args
 # define CC_AT_START_LINE(IDX)         cc_attr_tbl[IDX].start_line
 # define CC_AT_START_COL(IDX)          cc_attr_tbl[IDX].start_col
-# define CC_AT_NAME_PTR(IDX)   &(str_pool[CC_AT_NAME_IDX(IDX)].name_char)
-# define CC_AT_STR_PTR(IDX)    &(str_pool[CC_AT_STR_IDX(IDX)].name_char)
+# define CC_AT_NAME_PTR(IDX)           ((char *)&str_pool[CC_AT_NAME_IDX(IDX)])
+# define CC_AT_STR_PTR(IDX)            ((char *)&str_pool[CC_AT_STR_IDX(IDX)])
 
 # define CC_CURR_BLK_TYPE      cc_blk_stk_tbl[cc_blk_stk_tbl_idx].blk_type
 # define CC_CURR_BLK_IS_ACTIVE cc_blk_stk_tbl[cc_blk_stk_tbl_idx].is_active

Modified: trunk/osprey/crayf90/fe90/debug.c
===================================================================
--- trunk/osprey/crayf90/fe90/debug.c   2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/debug.c   2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -2052,7 +2056,7 @@
    else {
       fprintf(stderr,
               "\n*FE90-ERROR* %s can not have Secondary Name table entries.\n",
-              &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+              AT_OBJ_NAME_PTR(attr_idx));
    }
    return;
 
@@ -2173,8 +2177,7 @@
    }
 
    fprintf(out_file, "\n  %s %s:\n\n",
-                     "Dummy Arguments for",
-                     &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+                     "Dummy Arguments for", AT_OBJ_NAME_PTR(attr_idx));
 
    for (i = first_idx;
         i < (first_idx + count);
@@ -2261,8 +2264,7 @@
          return;
       }
       fprintf(out_file, "\n  %s %s:\n\n",
-                        "Component entries for",
-                        &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+                        "Component entries for", AT_OBJ_NAME_PTR(attr_idx));
    }
    else if (AT_OBJ_CLASS(attr_idx) == Interface) {
       first_idx = ATI_FIRST_SPECIFIC_IDX(attr_idx);
@@ -2273,8 +2275,7 @@
          return;
       }
       fprintf(out_file, "\n  %s %s:\n\n",
-                        "Interface bodies for",
-                        &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+                        "Interface bodies for", AT_OBJ_NAME_PTR(attr_idx));
    }
    else if (AT_OBJ_CLASS(attr_idx) == Namelist_Grp) {
       first_idx = ATN_FIRST_NAMELIST_IDX(attr_idx);
@@ -2285,13 +2286,11 @@
          return;
       }
       fprintf(out_file, "\n  %s %s:\n\n",
-                        "Namelist objects for",
-                        &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+                        "Namelist objects for", AT_OBJ_NAME_PTR(attr_idx));
    }
    else {
       fprintf(out_file, "\n  %s %s:\n\n",
-                        "Invalid attribute entry ",
-                        &name_pool[AT_NAME_IDX(attr_idx)].name_char);
+                        "Invalid attribute entry ", AT_OBJ_NAME_PTR(attr_idx));
       return;
    }
 
@@ -7055,7 +7054,7 @@
    if (HN_ATTR_IDX(idx) != NULL_IDX) {
 
       if (HN_NAME_IDX(idx) != NULL_IDX) {
-         fprintf(out_file, "%-32.32s  
",&name_pool[HN_NAME_IDX(idx)].name_char);
+         fprintf(out_file, "%-32.32s  ", HN_NAME_PTR(idx));
       }
       else {
          fprintf(out_file, "%-32.32s  ", "**No name - HN_NAME_IDX is 0**");
@@ -7474,7 +7473,7 @@
    if (LN_ATTR_IDX(idx) != NULL_IDX) {
 
       if (LN_NAME_IDX(idx) != NULL_IDX) {
-         fprintf(out_file, "%-32.32s  
",&name_pool[LN_NAME_IDX(idx)].name_char);
+         fprintf(out_file, "%-32.32s  ", LN_NAME_PTR(idx));
       }
       else {
          fprintf(out_file, "%-32.32s  ", "**No name - LN_NAME_IDX is 0**");
@@ -8047,7 +8046,7 @@
       return;
    }
 
-   fprintf(out_file, "  %-51s", &name_pool[SN_NAME_IDX(sn_idx)].name_char); 
+   fprintf(out_file, "  %-51s", SN_NAME_PTR(sn_idx)); 
 
    fprintf(out_file, " %-16s= %-8d\n", "            IDX", sn_idx);
 

Modified: trunk/osprey/crayf90/fe90/i_cvrt.c
===================================================================
--- trunk/osprey/crayf90/fe90/i_cvrt.c  2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/i_cvrt.c  2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -809,7 +813,7 @@
 
    cvrt_sytb_to_pdg();
 
-   name_ptr = &name_pool[ATP_EXT_NAME_IDX(pgm_attr_idx)].name_char;
+   name_ptr = ATP_EXT_NAME_PTR(pgm_attr_idx);
 #ifdef KEY /* Bug 14150 */
    /* Imitate kludgy transformation performed by sgi/cwh_stab.cxx */
    const char *ext_name = ATP_EXT_NAME_PTR(pgm_attr_idx);
@@ -9223,8 +9227,8 @@
 
            PDG_DBG_PRINT_START    
            PDG_DBG_PRINT_C("fei_name");
-           PDG_DBG_PRINT_S("(1) name_ptr", 
-                    &name_pool[ATP_MOD_PATH_IDX(IR_IDX_L(ir_idx))].name_char);
+           PDG_DBG_PRINT_S("(1) name_ptr",
+                    ATP_MOD_PATH_NAME_PTR(IR_IDX_L(ir_idx)));
            PDG_DBG_PRINT_D("(2) unused", 0);
            PDG_DBG_PRINT_D("(3) unused", 0);
            PDG_DBG_PRINT_D("(4) unused", 0);
@@ -9232,7 +9236,7 @@
            PDG_DBG_PRINT_END
 
 # ifdef _ENABLE_FEI
-           fei_name(&name_pool[ATP_MOD_PATH_IDX(IR_IDX_L(ir_idx))].name_char,
+           fei_name(ATP_MOD_PATH_NAME_PTR(IR_IDX_L(ir_idx)),
                     0,
                     0,
                     0,
@@ -11898,7 +11902,7 @@
           ATP_IN_INTERFACE_BLK(attr_idx) &&
           ATP_EXPL_ITRFC(attr_idx) &&
           ATP_PROC(attr_idx) == Extern_Proc) {
-         name_ptr = &name_pool[ATP_EXT_NAME_IDX(attr_idx)].name_char;
+         name_ptr = ATP_EXT_NAME_PTR(attr_idx);
          if (strcmp(AT_OBJ_NAME_PTR(SCP_ATTR_IDX(curr_scp_idx)), 
                     name_ptr) == 0) {
             /*
@@ -11912,7 +11916,7 @@
    }
 
    pgm_unit = ATP_PGM_UNIT(attr_idx);
-   name_ptr = &name_pool[ATP_EXT_NAME_IDX(attr_idx)].name_char;
+   name_ptr = ATP_EXT_NAME_PTR(attr_idx);
    parent_idx = NULL_IDX;
 
 
@@ -12209,7 +12213,7 @@
 
          ATP_SCP_ALIVE(attr_idx) = FALSE;
 
-         name_ptr = &name_pool[ATP_EXT_NAME_IDX(attr_idx)].name_char;
+         name_ptr = ATP_EXT_NAME_PTR(attr_idx);
 
          /* prev_idx is a pdgcs index to the name being entered */
          /* in the pdgcs secondary name table.                  */

Modified: trunk/osprey/crayf90/fe90/main.c
===================================================================
--- trunk/osprey/crayf90/fe90/main.c    2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/main.c    2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -1635,16 +1639,16 @@
 
       TBL_REALLOC_CK(str_pool, length);
 
-      strcpy(&str_pool[str_idx].name_char, location);
+      strcpy((char *)&str_pool[str_idx], location);
 
-      char_ptr = strrchr(&str_pool[str_idx].name_char, SLASH);
+      char_ptr = strrchr((char *)&str_pool[str_idx], SLASH);
 
       if (char_ptr == NULL) {
          release_file_ptr = fopen("version.string", "r");
       }
       else {
          strcpy(++char_ptr, "version.string");
-         release_file_ptr = fopen(&str_pool[str_idx].name_char, "r");
+         release_file_ptr = fopen((char *)&str_pool[str_idx], "r");
       }
 
       /* If not found - default to initial value in release_level #.x.x.x */

Modified: trunk/osprey/crayf90/fe90/mifcvrt.c
===================================================================
--- trunk/osprey/crayf90/fe90/mifcvrt.c 2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/mifcvrt.c 2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -453,7 +457,7 @@
 
    /* Subprogram header information */
    init_subprog_info (pgm_attr_idx);
-   name_ptr = &name_pool[ATP_EXT_NAME_IDX(pgm_attr_idx)].name_char;
+   name_ptr = ATP_EXT_NAME_PTR(pgm_attr_idx);
    msp.name = mnpool(&msp, name_ptr);
 
    /* Allocate scope table entries for this routine. */
@@ -4905,8 +4909,7 @@
    }
    if (ATP_EXT_NAME_IDX(attr_idx) != NULL_IDX &&
        ATP_EXT_NAME_IDX(attr_idx) != AT_NAME_IDX(attr_idx)) {
-      msp.func[funcix].extname =
-        mnpool(&msp, &name_pool[ATP_EXT_NAME_IDX(attr_idx)].name_char);
+      msp.func[funcix].extname = mnpool(&msp, ATP_EXT_NAME_PTR(attr_idx));
    }
 
    if ((ATP_PROC(attr_idx) == Module_Proc) || 

Modified: trunk/osprey/crayf90/fe90/p_utils.c
===================================================================
--- trunk/osprey/crayf90/fe90/p_utils.c 2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/p_utils.c 2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -2637,7 +2641,7 @@
    int                 lbl_blk_idx;
    stmt_type_type      lbl_stmt_type;
    int                 line_num;
-   char                 stmt_str[10];
+   char                 stmt_str[12];
    boolean             valid_branch_target = TRUE;
 
 

Modified: trunk/osprey/crayf90/fe90/s_asg_expr.c
===================================================================
--- trunk/osprey/crayf90/fe90/s_asg_expr.c      2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/s_asg_expr.c      2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  * Copyright 2007, 2008. PathScale, LLC.  All Rights Reserved.
  */
 /*
@@ -8806,7 +8810,7 @@
           if (AT_OBJ_CLASS(SN_ATTR_IDX(i)) == Data_Obj &&
               ATD_CLASS(SN_ATTR_IDX(i)) == Struct_Component &&
               SN_ATTR_IDX(i) != IR_OPND_R(ir_idx).idx &&
-              
strcmp(AT_OBJ_NAME_PTR(IR_OPND_R(ir_idx).idx),&name_pool[SN_NAME_IDX(i)].name_char)==0)
+              strcmp(AT_OBJ_NAME_PTR(IR_OPND_R(ir_idx).idx), 
SN_NAME_PTR(i))==0)
               IR_OPND_R(ir_idx).idx = SN_ATTR_IDX(i);
         }
       }

Modified: trunk/osprey/crayf90/fe90/s_driver.c
===================================================================
--- trunk/osprey/crayf90/fe90/s_driver.c        2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/s_driver.c        2010-11-29 23:22:50 UTC (rev 
3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  * Copyright (C) 2007, 2008. PathScale, LLC. All Rights Reserved.
  */
 /*
@@ -746,7 +750,7 @@
          continue;
       }
 
-      host_idx = srch_host_sym_tbl(&name_pool[LN_NAME_IDX(name_idx)].name_char,
+      host_idx = srch_host_sym_tbl(LN_NAME_PTR(name_idx),
                                    LN_NAME_LEN(name_idx),
                                    &host_name_idx,
                                    FALSE);

Modified: trunk/osprey/crayf90/fe90/s_intrin.c
===================================================================
--- trunk/osprey/crayf90/fe90/s_intrin.c        2010-11-23 21:32:12 UTC (rev 
3409)
+++ trunk/osprey/crayf90/fe90/s_intrin.c        2010-11-29 23:22:50 UTC (rev 
3410)
@@ -15910,7 +15910,7 @@
           (opt_flags.set_allfastint_option && 
            arg_info_list[info_idx1].ed.linear_type == Integer_8 &&
            ATP_EXTERNAL_INTRIN(*spec_idx))) {
-         name_ptr = &name_pool[AT_NAME_IDX(*spec_idx)].name_char;
+         name_ptr = AT_OBJ_NAME_PTR(*spec_idx);
 
          j = -1;
          if (name_ptr[6] == 'J') {

Modified: trunk/osprey/crayf90/fe90/sytb.c
===================================================================
--- trunk/osprey/crayf90/fe90/sytb.c    2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/sytb.c    2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
  */
+
 /*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
@@ -351,8 +352,7 @@
       TRACE (Func_Exit, "srch_sym_tbl", NULL);
    }  
    else {
-      TRACE (Func_Exit, "srch_sym_tbl", 
-                        &name_pool[LN_NAME_IDX(*name_idx)].name_char);
+      TRACE (Func_Exit, "srch_sym_tbl", LN_NAME_PTR(*name_idx));
       idx = LN_ATTR_IDX(*name_idx);
    }
    return (idx);
@@ -4833,11 +4833,10 @@
    }
 
 
-   strcat(&name_pool[new_name_idx].name_char, 
-          &name_pool[name_str_idx].name_char);
+   strcat((char *)&name_pool[new_name_idx], (char *)&name_pool[name_str_idx]);
 
    while (scp_idx != NULL_IDX) {
-      strcat(&name_pool[new_name_idx].name_char, UNIQUE_PROC_CONNECTOR);
+      strcat((char *)&name_pool[new_name_idx], UNIQUE_PROC_CONNECTOR);
 #ifdef KEY /* Bug 5089 */
       int attr_idx = SCP_ATTR_IDX(scp_idx);
       char *appendage;
@@ -4864,10 +4863,10 @@
         appendage = AT_OBJ_NAME_PTR(attr_idx);
        appendage_len = AT_NAME_LEN(attr_idx);
       }
-      strcat(&name_pool[new_name_idx].name_char, appendage);
+      strcat((char *)&name_pool[new_name_idx], appendage);
       length += appendage_len + UNIQUE_PROC_LEN;
 #else /* KEY Bug 5089 */
-      strcat(&name_pool[new_name_idx].name_char,
+      strcat((char *)&name_pool[new_name_idx],
              AT_OBJ_NAME_PTR(SCP_ATTR_IDX(scp_idx)));
 
       length   = length + AT_NAME_LEN(SCP_ATTR_IDX(scp_idx)) + UNIQUE_PROC_LEN;
@@ -6407,8 +6406,7 @@
    }  
    else {
       found    = TRUE;
-      TRACE (Func_Exit, "srch_global_name_tbl", 
-                         &str_pool[GN_NAME_IDX(idx)].name_char);
+      TRACE (Func_Exit, "srch_global_name_tbl", GN_NAME_PTR(idx));
    }
    return (found);
  
@@ -8823,7 +8821,7 @@
    TRACE (Func_Entry, "make_external_name", NULL);
 
    if (!AT_IS_INTRIN(attr_idx)) {
-      name_ptr = &name_pool[name_idx].name_char;
+      name_ptr = (char *)&name_pool[name_idx];
 
       if (!on_off_flags.upper_case_names) {
          for (i = 0;  i < name_len;  i++) {
@@ -8860,7 +8858,7 @@
     * namespace as well. */
    else if (Pgm_Unit == AT_OBJ_CLASS(attr_idx) &&
      Module == ATP_PGM_UNIT(attr_idx)) {
-     name_ptr = &name_pool[name_idx].name_char;
+     name_ptr = (char *)&name_pool[name_idx];
      TOKEN_STR(ext_token)[0] = '_';
      TOKEN_STR(ext_token)[1] = toupper(name_ptr[0]);
      for (i = 1; i < name_len; i += 1) {

Modified: trunk/osprey/crayf90/fe90/sytb.m
===================================================================
--- trunk/osprey/crayf90/fe90/sytb.m    2010-11-23 21:32:12 UTC (rev 3409)
+++ trunk/osprey/crayf90/fe90/sytb.m    2010-11-29 23:22:50 UTC (rev 3410)
@@ -1,4 +1,8 @@
 /*
+ * Copyright (C) 2010 Advanced Micro Devices, Inc.  All Rights Reserved.
+ */
+
+/*
  *  Copyright (C) 2006. QLogic Corporation. All Rights Reserved.
  */
 
@@ -400,15 +404,15 @@
 # define AT_NOT_VISIBLE(IDX)           attr_tbl[IDX].fld.not_visible
 # define AT_OBJ_CLASS(IDX)             attr_tbl[IDX].fld.object_class
 # define AT_OBJ_NAME(IDX)              name_pool[AT_NAME_IDX(IDX)].name_char
-# define AT_OBJ_NAME_LONG(IDX)         &(name_pool[AT_NAME_IDX(IDX)].name_long)
-# define AT_OBJ_NAME_PTR(IDX)          &name_pool[AT_NAME_IDX(IDX)].name_char
+# define AT_OBJ_NAME_LONG(IDX)         ((long *)&name_pool[AT_NAME_IDX(IDX)])
+# define AT_OBJ_NAME_PTR(IDX)          ((char *)&name_pool[AT_NAME_IDX(IDX)])
 # define AT_OPTIONAL(IDX)              attr_tbl[IDX].fld.optional
 # define AT_ORIG_MODULE_IDX(IDX)       attr_tbl[IDX].fld.orig_module_idx
 # define AT_ORIG_NAME_IDX(IDX)         attr_tbl[IDX].fld.orig_name_idx
 # define AT_ORIG_NAME_LEN(IDX)         attr_tbl[IDX].fld.orig_name_len
-# define AT_ORIG_NAME_PTR(IDX)    &name_pool[AT_ORIG_NAME_IDX(IDX)].name_char
+# define AT_ORIG_NAME_PTR(IDX)     ((char *)&name_pool[AT_ORIG_NAME_IDX(IDX)])
 # define AT_ORIG_NAME(IDX)         name_pool[AT_ORIG_NAME_IDX(IDX)].name_char
-# define AT_ORIG_NAME_LONG(IDX)    
&(name_pool[AT_ORIG_NAME_IDX(IDX)].name_long)
+# define AT_ORIG_NAME_LONG(IDX)     ((long *)&name_pool[AT_ORIG_NAME_IDX(IDX)])
 # define AT_PRIVATE(IDX)               attr_tbl[IDX].fld.private_access
 # define AT_REF_IN_CHILD(IDX)          attr_tbl[IDX].fld.ref_in_child
 # define AT_REFERENCED(IDX)            attr_tbl[IDX].fld.referenced
@@ -2242,8 +2246,8 @@
 # endif
 
 # define ATP_EXT_NAME(IDX)           name_pool[ATP_EXT_NAME_IDX(IDX)].name_char
-# define ATP_EXT_NAME_LONG(IDX)    
&(name_pool[ATP_EXT_NAME_IDX(IDX)].name_long)
-# define ATP_EXT_NAME_PTR(IDX)      &name_pool[ATP_EXT_NAME_IDX(IDX)].name_char
+# define ATP_EXT_NAME_LONG(IDX)             ((long 
*)&name_pool[ATP_EXT_NAME_IDX(IDX)])
+# define ATP_EXT_NAME_PTR(IDX)      ((char *)&name_pool[ATP_EXT_NAME_IDX(IDX)])
 
 # ifdef _DEBUG
 # define ATP_EXT_NAME_LEN(IDX)                                                \
@@ -2441,7 +2445,7 @@
 # define ATP_MOD_PATH_IDX(IDX)         attr_tbl[IDX].fld.field4
 # endif
 
-# define ATP_MOD_PATH_NAME_PTR(IDX)  
&name_pool[ATP_MOD_PATH_IDX(IDX)].name_char
+# define ATP_MOD_PATH_NAME_PTR(IDX)  ((char 
*)&name_pool[ATP_MOD_PATH_IDX(IDX)])
 
 # ifdef _DEBUG
 # define ATP_MOD_PATH_LEN(IDX)                                                \
@@ -3238,8 +3242,8 @@
 # define FP_NAME_IDX(IDX)              file_path_tbl[IDX].name_idx
 # define FP_NAME_LEN(IDX)              file_path_tbl[IDX].name_len
 # define FP_NAME(IDX)                  (str_pool[FP_NAME_IDX(IDX)].name_char)
-# define FP_NAME_LONG(IDX)            &(str_pool[FP_NAME_IDX(IDX)].name_long)
-# define FP_NAME_PTR(IDX)             &str_pool[FP_NAME_IDX(IDX)].name_char
+# define FP_NAME_LONG(IDX)             ((long *)&str_pool[FP_NAME_IDX(IDX)])
+# define FP_NAME_PTR(IDX)              ((char *)&str_pool[FP_NAME_IDX(IDX)])
 # define FP_NEXT_FILE_IDX(IDX)         file_path_tbl[IDX].next_file_idx
 # define FP_OFFSET(IDX)                        file_path_tbl[IDX].offset
 # define FP_OUTPUT_TO_O(IDX)           file_path_tbl[IDX].output_to_o
@@ -3258,13 +3262,13 @@
 # define GA_NAME_IDX(IDX)              global_attr_tbl[IDX].fld.name_idx
 # define GA_NAME_LEN(IDX)              global_attr_tbl[IDX].fld.length
 # define GA_OBJ_CLASS(IDX)             global_attr_tbl[IDX].fld.object_class
-# define GA_OBJ_NAME_LONG(IDX)         &(str_pool[GA_NAME_IDX(IDX)].name_long)
-# define GA_OBJ_NAME_PTR(IDX)          &str_pool[GA_NAME_IDX(IDX)].name_char
+# define GA_OBJ_NAME_LONG(IDX)         ((long *)&str_pool[GA_NAME_IDX(IDX)])
+# define GA_OBJ_NAME_PTR(IDX)          ((char *)&str_pool[GA_NAME_IDX(IDX)])
 # define GA_OPTIONAL(IDX)              global_attr_tbl[IDX].fld.optional
 # define GA_ORIG_NAME_LEN(IDX)         global_attr_tbl[IDX].fld.orig_name_len
 # define GA_ORIG_NAME_IDX(IDX)         global_attr_tbl[IDX].fld.orig_name_idx
-# define GA_ORIG_NAME_PTR(IDX)       &str_pool[GA_ORIG_NAME_IDX(IDX)].name_char
-# define GA_ORIG_NAME_LONG(IDX)     
&(str_pool[GA_ORIG_NAME_IDX(IDX)].name_long)
+# define GA_ORIG_NAME_PTR(IDX)       ((char *)&str_pool[GA_ORIG_NAME_IDX(IDX)])
+# define GA_ORIG_NAME_LONG(IDX)              ((long 
*)&str_pool[GA_ORIG_NAME_IDX(IDX)])
 # define GA_REFERENCED(IDX)            global_attr_tbl[IDX].fld.referenced
 # define GA_USE_ASSOCIATED(IDX)                
global_attr_tbl[IDX].fld.use_associated
 #ifdef KEY /* Bug 14150 */
@@ -3726,11 +3730,11 @@
 # define GL_PATH_NAME_LEN(IDX)         global_line_tbl[IDX].path_name_len
 # define GL_SOURCE_LINES(IDX)          global_line_tbl[IDX].source_lines
 
-# define GL_FILE_NAME_LONG(IDX)   &(str_pool[GL_FILE_NAME_IDX(IDX)].name_long)
-# define GL_FILE_NAME_PTR(IDX)    &str_pool[GL_FILE_NAME_IDX(IDX)].name_char
+# define GL_FILE_NAME_LONG(IDX)              ((long 
*)&str_pool[GL_FILE_NAME_IDX(IDX)])
+# define GL_FILE_NAME_PTR(IDX)       ((char *)&str_pool[GL_FILE_NAME_IDX(IDX)])
 
-# define GL_PATH_NAME_LONG(IDX)   &(str_pool[GL_PATH_NAME_IDX(IDX)].name_long)
-# define GL_PATH_NAME_PTR(IDX)    &str_pool[GL_PATH_NAME_IDX(IDX)].name_char
+# define GL_PATH_NAME_LONG(IDX)              ((long 
*)&str_pool[GL_PATH_NAME_IDX(IDX)])
+# define GL_PATH_NAME_PTR(IDX)       ((char *)&str_pool[GL_PATH_NAME_IDX(IDX)])
 
 
 /* GLOBAL NAME TABLE */
@@ -3738,8 +3742,8 @@
 # define GN_ATTR_IDX(IDX)              global_name_tbl[IDX].attr_idx
 # define GN_NAME_IDX(IDX)              global_name_tbl[IDX].name_idx
 # define GN_NAME_LEN(IDX)              global_name_tbl[IDX].name_len
-# define GN_NAME_LONG(IDX)            &(str_pool[GN_NAME_IDX(IDX)].name_long)
-# define GN_NAME_PTR(IDX)             &str_pool[GN_NAME_IDX(IDX)].name_char
+# define GN_NAME_LONG(IDX)             ((long *)&str_pool[GN_NAME_IDX(IDX)])
+# define GN_NAME_PTR(IDX)              ((char *)&str_pool[GN_NAME_IDX(IDX)])
 
 /* GLOBAL TYPE TABLE */
 
@@ -3760,6 +3764,7 @@
 # define HN_ATTR_IDX(IDX)              hidden_name_tbl[IDX].attr_idx
 # define HN_NAME_IDX(IDX)              hidden_name_tbl[IDX].name_idx
 # define HN_NAME_LEN(IDX)              hidden_name_tbl[IDX].name_len
+# define HN_NAME_PTR(IDX)              ((char *)&name_pool[HN_NAME_IDX(IDX)])
 
 
 /* SCOPE TABLE definitions */
@@ -4098,7 +4103,8 @@
 # define LN_IN_ONLY_LIST(IDX)          loc_name_tbl[IDX].in_only_list
 # define LN_NAME_IDX(IDX)              loc_name_tbl[IDX].name_idx
 # define LN_NAME_LEN(IDX)              loc_name_tbl[IDX].name_len
-# define LN_NAME_LONG(IDX)             &(name_pool[LN_NAME_IDX(IDX)].name_long)
+# define LN_NAME_LONG(IDX)             ((long *)&name_pool[LN_NAME_IDX(IDX)])
+# define LN_NAME_PTR(IDX)              ((char *)&name_pool[LN_NAME_IDX(IDX)])
 # define LN_NEW_NAME(IDX)              loc_name_tbl[IDX].new_name
 # define LN_RENAMED(IDX)               loc_name_tbl[IDX].renamed
 
@@ -4118,8 +4124,8 @@
 # define RO_LINE_NUM(IDX)              rename_only_tbl[IDX].line_num
 # define RO_NAME_IDX(IDX)              rename_only_tbl[IDX].name_idx
 # define RO_NAME_LEN(IDX)              rename_only_tbl[IDX].name_len
-# define RO_NAME_LONG(IDX)             &(name_pool[RO_NAME_IDX(IDX)].name_long)
-# define RO_NAME_PTR(IDX)              &name_pool[RO_NAME_IDX(IDX)].name_char
+# define RO_NAME_LONG(IDX)             ((long *)&name_pool[RO_NAME_IDX(IDX)])
+# define RO_NAME_PTR(IDX)              ((char *)&name_pool[RO_NAME_IDX(IDX)])
 # define RO_NEXT_IDX(IDX)              rename_only_tbl[IDX].next_idx
 # define RO_RENAME_IDX(IDX)            rename_only_tbl[IDX].rename_idx
 # define RO_RENAME_NAME(IDX)           rename_only_tbl[IDX].rename_name
@@ -4133,6 +4139,7 @@
 # define SN_MATCHED_DARG(IDX)          sec_name_tbl[IDX].matched
 # define SN_NAME_IDX(IDX)              sec_name_tbl[IDX].name_idx
 # define SN_NAME_LEN(IDX)              sec_name_tbl[IDX].length
+# define SN_NAME_PTR(IDX)              ((char *)&name_pool[SN_NAME_IDX(IDX)])
 # define SN_SIBLING_LINK(IDX)          sec_name_tbl[IDX].sibling_link
 
 
@@ -4159,7 +4166,7 @@
 # define SB_EXT_NAME_IDX(IDX)          stor_blk_tbl[IDX].fld.ext_name_idx
 # define SB_EXT_NAME_LEN(IDX)          stor_blk_tbl[IDX].fld.ext_name_len
 # define SB_EXT_NAME(IDX)            name_pool[SB_EXT_NAME_IDX(IDX)].name_char
-# define SB_EXT_NAME_PTR(IDX)       &name_pool[SB_EXT_NAME_IDX(IDX)].name_char
+# define SB_EXT_NAME_PTR(IDX)        ((char *)&name_pool[SB_EXT_NAME_IDX(IDX)])
 #endif /* KEY Bug 14150 */
 # define SB_FILL_SYMBOL(IDX)           stor_blk_tbl[IDX].fld.fill_symbol
 # define SB_FIRST_ATTR_IDX(IDX)                
stor_blk_tbl[IDX].fld.first_attr_idx
@@ -4176,8 +4183,8 @@
 # define SB_MODULE_IDX(IDX)            stor_blk_tbl[IDX].fld.module_idx
 # define SB_MODULE(IDX)                        stor_blk_tbl[IDX].fld.module
 # define SB_NAME_IDX(IDX)              stor_blk_tbl[IDX].fld.name_idx
-# define SB_NAME_PTR(IDX)              &name_pool[SB_NAME_IDX(IDX)].name_char
-# define SB_NAME_LONG(IDX)             &(name_pool[SB_NAME_IDX(IDX)].name_long)
+# define SB_NAME_PTR(IDX)              ((char *)&name_pool[SB_NAME_IDX(IDX)])
+# define SB_NAME_LONG(IDX)             ((long *)&name_pool[SB_NAME_IDX(IDX)])
 # define SB_NAME(IDX)                  name_pool[SB_NAME_IDX(IDX)].name_char
 # define SB_NAME_IN_STONE(IDX)         stor_blk_tbl[IDX].fld.name_in_stone
 # define SB_NAME_LEN(IDX)              stor_blk_tbl[IDX].fld.name_len


------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to