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
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel