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