[med-svn] [fis-gtm] 01/01: Imported Upstream version 6.2-002A

Amul Shah tuskentower-guest at moszumanska.debian.org
Sat Jun 27 11:43:10 UTC 2015


This is an automated email from the git hooks/post-receive script.

tuskentower-guest pushed a commit to annotated tag upstream/6.2-002A
in repository fis-gtm.

commit a63c745931c5a17208bb828cc16e086c3e7141b2
Author: Amul Shah <Amul.Shah at fisglobal.com>
Date:   Fri Jun 26 21:05:46 2015 -0400

    Imported Upstream version 6.2-002A
---
 CMakeLists.txt                     |  2 +-
 README                             | 20 +++++++-------
 sr_i386/gtm_threadgbl_deftypes.h   |  2 +-
 sr_linux/release_name.h            | 10 +++----
 sr_port/actuallist.c               |  5 ++--
 sr_port/compiler.h                 |  6 ++---
 sr_port/eval_expr.c                |  5 ++--
 sr_port/expritem.c                 |  3 +--
 sr_port/f_name.c                   |  5 ++--
 sr_port/f_select.c                 | 55 +++++++++++++++++---------------------
 sr_port/gvn.c                      | 17 +++++-------
 sr_port/indirection.c              |  1 -
 sr_x86_64/gtm_threadgbl_deftypes.h |  2 +-
 13 files changed, 63 insertions(+), 70 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b1625e..4a7c074 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ foreach(lang ${languages})
 endforeach()
 
 # Defaults
-set(version V6.2-002)
+set(version V6.2-002A)
 if("${version}" STREQUAL "")
         set(version V9.9-0)
 endif()
diff --git a/README b/README
index aab5a15..e5a803f 100644
--- a/README
+++ b/README
@@ -35,11 +35,11 @@ To build GT.M for Linux, do the following steps:
    from http://sourceforge.net/projects/fis-gtm/ Unpack the tar file and run
    the configure script as root. Note: the tar file unpacks everything into
    your current working directory, not a new subdirectory. The Linux Standard
-   Base (LSB) install path for GT.M V6.2-002 is /opt/fis-gtm/V6.2-002_i586 or
-   /opt/fis-gtm/V6.2-002_x8664. These instructions are written using x8664, please
+   Base (LSB) install path for GT.M V6.2-002A is /opt/fis-gtm/V6.2-002A_i586 or
+   /opt/fis-gtm/V6.2-002A_x8664. These instructions are written using x8664, please
    use i586 as necessary.
 
-   $ tar xfz gtm_V62002_linux_x8664_pro.tar.gz
+   $ tar xfz gtm_V62002A_linux_x8664_pro.tar.gz
 
    # Note down the installation path for use with cmake below
 
@@ -47,16 +47,16 @@ To build GT.M for Linux, do the following steps:
 
 2. Unpack the GT.M sources
    The GT.M source tarball extracts to a directory with the version number in
-   the name, fis-gtm-V6.2-002
-   $ tar xfz fis-gtm-V6.2-002.tar.gz
-   $ cd fis-gtm-V6.2-002
+   the name, fis-gtm-V6.2-002A
+   $ tar xfz fis-gtm-V6.2-002A.tar.gz
+   $ cd fis-gtm-V6.2-002A
 
    You should find this README, LICENSE, COPYING and CMakeLists.txt file and
    sr_* source directories.
 
 3. Building GT.M -
    <fis-gtm-build> can be a sub directory of the source directory,
-   fis-gtm-V6.2-002, or any other valid path.
+   fis-gtm-V6.2-002A, or any other valid path.
 
    $ mkdir <fis-gtm-build>
    $ cd <fis-gtm-build>
@@ -75,16 +75,16 @@ To build GT.M for Linux, do the following steps:
    #
    #     -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package
    #
-   $ cmake -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package <path to>/fis-gtm-V6.2-002
+   $ cmake -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package <path to>/fis-gtm-V6.2-002A
 
    $ make
 
    $ make install
 
-   $ cd package/lib/fis-gtm/V6.2-002_x86_64
+   $ cd package/lib/fis-gtm/V6.2-002A_x86_64
 
    # Now you are ready to install GT.M. Answer a few questions and install it.
-   # The recommended installation path is /opt/fis-gtm/V6.2-002_x86_64
+   # The recommended installation path is /opt/fis-gtm/V6.2-002A_x86_64
 
    $ sudo ./configure
 
diff --git a/sr_i386/gtm_threadgbl_deftypes.h b/sr_i386/gtm_threadgbl_deftypes.h
index e2b4a28..88eced2 100644
--- a/sr_i386/gtm_threadgbl_deftypes.h
+++ b/sr_i386/gtm_threadgbl_deftypes.h
@@ -10,7 +10,7 @@
  *								*
  ****************************************************************/
 
-/* Generated by /usr/library/V62002/tools/gen_gtm_threadgbl_deftypes.csh */
+/* Generated by /usr/library/V62002A/tools/gen_gtm_threadgbl_deftypes.csh */
 
 #ifndef GTM_THREADGBL_DEFTYPES_INCLUDED
 #define GTM_THREADGBL_DEFTYPES_INCLUDED
diff --git a/sr_linux/release_name.h b/sr_linux/release_name.h
index 4f434e0..6977231 100644
--- a/sr_linux/release_name.h
+++ b/sr_linux/release_name.h
@@ -10,15 +10,15 @@
  ****************************************************************/
 
 #ifdef __CYGWIN__
-#define GTM_RELEASE_NAME 	"GT.M V6.2-002 CYGWIN x86"
+#define GTM_RELEASE_NAME 	"GT.M V6.2-002A CYGWIN x86"
 #elif defined(__ia64)
-#define GTM_RELEASE_NAME 	"GT.M V6.2-002 Linux IA64"
+#define GTM_RELEASE_NAME 	"GT.M V6.2-002A Linux IA64"
 #elif defined(__x86_64__)
-#define GTM_RELEASE_NAME 	"GT.M V6.2-002 Linux x86_64"
+#define GTM_RELEASE_NAME 	"GT.M V6.2-002A Linux x86_64"
 #elif defined(__s390__)
-#define GTM_RELEASE_NAME 	"GT.M V6.2-002 Linux S390X"
+#define GTM_RELEASE_NAME 	"GT.M V6.2-002A Linux S390X"
 #else
-#define GTM_RELEASE_NAME 	"GT.M V6.2-002 Linux x86"
+#define GTM_RELEASE_NAME 	"GT.M V6.2-002A Linux x86"
 #endif
 #define GTM_PRODUCT 		"GT.M"
 #define GTM_VERSION		"V6.2"
diff --git a/sr_port/actuallist.c b/sr_port/actuallist.c
index cc8c3d0..a350e79 100644
--- a/sr_port/actuallist.c
+++ b/sr_port/actuallist.c
@@ -1,6 +1,7 @@
 /****************************************************************
  *								*
- *	Copyright 2001, 2013 Fidelity Information Services, Inc	*
+ * Copyright (c) 2001-2015 Fidelity National Information 	*
+ * Services, Inc. and/or its subsidiaries. All rights reserved.	*
  *								*
  *	This source code contains the intellectual property	*
  *	of its copyright holder(s), and is made available	*
@@ -106,7 +107,7 @@ error_def(ERR_SIDEEFFECTEVAL);
 		if ((1 < parmcount) && (TREF(side_effect_base))[TREF(expr_depth)])
 		{	/* at least two arguments and at least one side effect - look for lvns needing protection */
 			assert(OLD_SE != TREF(side_effect_handling));
-			se_warn = (!run_time && (SE_WARN == TREF(side_effect_handling)));
+			se_warn = SE_WARN_ON;
 			for (i = 0, j = parmcount, ref0 = counttrip->operand[1].oprval.tref; --j;
 				ref0 = ref0->operand[1].oprval.tref)
 			{	/* no need to do the last argument - can't have a side effect after it */
diff --git a/sr_port/compiler.h b/sr_port/compiler.h
index 052630a..11872b0 100644
--- a/sr_port/compiler.h
+++ b/sr_port/compiler.h
@@ -243,6 +243,7 @@ typedef struct
  * PostConditionals can cause this path to be avoided in which case we do not want to issue an error at compile time.
  * Therefore issue only a warning at compile-time and proceed with compilation as if this codepath will not be reached at runtime.
  */
+error_def(ERR_BOOLSIDEFFECT);
 error_def(ERR_DEVPARINAP);
 error_def(ERR_DEVPARUNK);
 error_def(ERR_DEVPARVALREQ);
@@ -353,9 +354,8 @@ typedef struct
 	newtriple(OC_GVRECTARG)->operand[0] = put_tref(TREF(expr_start));	\
 }
 
-/* note assignment below and that it always occurs */
-#define SHIFT_SIDE_EFFECTS	((TREF(saw_side_effect) = TREF(shift_side_effects)) \
-	&& (NULL != TREF(expr_start)) && (GTM_BOOL == TREF(gtm_fullbool)))
+/* note assignment below */
+#define SHIFT_SIDE_EFFECTS	((TREF(saw_side_effect) = TREF(shift_side_effects)) && (GTM_BOOL == TREF(gtm_fullbool)))
 
 #define INITIAL_SIDE_EFFECT_DEPTH 33	/* initial allocation for expression nesting to track side effects */
 
diff --git a/sr_port/eval_expr.c b/sr_port/eval_expr.c
index 341ba04..1ae54e7 100644
--- a/sr_port/eval_expr.c
+++ b/sr_port/eval_expr.c
@@ -1,6 +1,7 @@
 /****************************************************************
  *								*
- *	Copyright 2001, 2013 Fidelity Information Services, Inc	*
+ * Copyright (c) 2001-2015 Fidelity National Information 	*
+ * Services, Inc. and/or its subsidiaries. All rights reserved.	*
  *								*
  *	This source code contains the intellectual property	*
  *	of its copyright holder(s), and is made available	*
@@ -47,7 +48,7 @@ int eval_expr(oprtype *a)
 		return EXPR_FAIL;
 	}
 	se_handling = TREF(side_effect_handling);
-	se_warn = (!run_time && (SE_WARN == se_handling));
+	se_warn = SE_WARN_ON;
 	while (bin_opcode = tokentable[TREF(window_token)].bo_type)	/* NOTE assignment NOT condition */
 	{
 		type = tokentable[TREF(window_token)].opr_type;
diff --git a/sr_port/expritem.c b/sr_port/expritem.c
index fddee39..f19c5ea 100644
--- a/sr_port/expritem.c
+++ b/sr_port/expritem.c
@@ -27,7 +27,6 @@
 GBLREF	bool		devctlexp;
 GBLREF	boolean_t	run_time;
 
-error_def(ERR_BOOLSIDEFFECT);
 error_def(ERR_EXPR);
 error_def(ERR_FCNSVNEXPECTED);
 error_def(ERR_FNOTONSYS);
@@ -705,7 +704,7 @@ int expritem(oprtype *a)
 		if (!saw_se)						/* might have lucked out on ordering */
 			saw_local = FALSE;				/* just clear the backptrs - shut off other processing */
 		saw_se = FALSE;
-		se_warn = (!run_time && (SE_WARN == TREF(side_effect_handling)));
+		se_warn = SE_WARN_ON;
 		dqloop(funcbp, que, tripbp)
 		{	/* work chained arguments which are in reverse order */
 			argtrip = tripbp->bpt;
diff --git a/sr_port/f_name.c b/sr_port/f_name.c
index 13cf1a3..b2f685b 100644
--- a/sr_port/f_name.c
+++ b/sr_port/f_name.c
@@ -1,6 +1,7 @@
 /****************************************************************
  *								*
- *	Copyright 2001, 2014 Fidelity Information Services, Inc	*
+ * Copyright (c) 2001-2015 Fidelity National Information 	*
+ * Services, Inc. and/or its subsidiaries. All rights reserved.	*
  *								*
  *	This source code contains the intellectual property	*
  *	of its copyright holder(s), and is made available	*
@@ -76,7 +77,7 @@ int f_name(oprtype *a, opctype op)
 		column = source_column;
 		if (EXPR_FAIL == expr(depth, MUMPS_STR))
 			return FALSE;
-		if (!run_time && (OC_INDFNNAME2 == r->opcode) && (SE_WARN == TREF(side_effect_handling)))
+		if (SE_WARN_ON && (OC_INDFNNAME2 == r->opcode))
 			ISSUE_SIDEEFFECTEVAL_WARNING(column - 1);
 	}
 	coerce(depth, OCT_MVAL);
diff --git a/sr_port/f_select.c b/sr_port/f_select.c
index 3da7b1e..47d60c3 100644
--- a/sr_port/f_select.c
+++ b/sr_port/f_select.c
@@ -35,7 +35,7 @@ LITREF octabstruct oc_tab[];
 
 int f_select(oprtype *a, opctype op)
 {
-	boolean_t	first_time, save_saw_side, *save_se_base, save_shift, shifting, we_saw_side_effect = FALSE;
+	boolean_t	first_time, save_saw_side, saw_se_in_select, *save_se_base, save_shift, shifting, gvn_or_indir_in_select;
 	opctype		old_op;
 	oprtype		*cnd, endtrip, target, tmparg;
 	triple		*oldchain, *r, *ref, *save_start, *save_start_orig, tmpchain, *triptr;
@@ -60,7 +60,8 @@ int f_select(oprtype *a, opctype op)
 	{
 		dqinit(&tmpchain, exorder);
 		oldchain = setcurtchain(&tmpchain);
-		INCREMENT_EXPR_DEPTH;	/* Don't want to hit botton with each expression, so start at 1 rather than 0 */
+		INCREMENT_EXPR_DEPTH;	/* Don't want to hit bottom with each expression, so start at 1 rather than 0 */
+		TREF(expr_start) = TREF(expr_start_orig) = &tmpchain;
 		TREF(shift_side_effects) = TRUE;
 	} else
 		TREF(shift_side_effects) = FALSE;
@@ -130,44 +131,38 @@ int f_select(oprtype *a, opctype op)
 	ref->operand[0] = tmparg;
 	ref->operand[1] = put_ilit(FALSE);	/* Not a subroutine reference */
 	ins_triple(r);
+	saw_se_in_select = TREF(saw_side_effect);	/* note this down before it gets reset by DECREMENT_EXPR_DEPTH */
 	if (shifting)
-	{
-		assert(1 == TREF(expr_depth));
-		we_saw_side_effect = TREF(saw_side_effect);
-		save_se_base[save_expr_depth] |= (TREF(side_effect_base))[1];
 		DECREMENT_EXPR_DEPTH;		/* Clean up */
-	}
 	assert(!TREF(expr_depth));
+	gvn_or_indir_in_select = (TREF(expr_start) != TREF(expr_start_orig));
 	TREF(expr_start) = save_start;
 	TREF(expr_start_orig) = save_start_orig;
-	TREF(saw_side_effect) = save_saw_side;
 	TREF(shift_side_effects) = save_shift;
-	SELECT_CLEANUP;
-	TREF(expr_depth) = save_expr_depth;
+	save_se_base[save_expr_depth] |= (TREF(side_effect_base))[TREF(expr_depth)];
+	TREF(saw_side_effect) = saw_se_in_select | save_saw_side;
+	SELECT_CLEANUP;	/* restores TREF(expr_depth), TREF(side_effect_base) and TREF(side_effect_depth) */
 	if (shifting)
-	{	/* We have built a separate chain so decide what to do with it */
-		if (we_saw_side_effect || (GTM_BOOL != TREF(gtm_fullbool))
-			|| ((save_start != save_start_orig) && (OC_NOOP != save_start->opcode)))
-		{	/* Only play this game if a side effect requires it */
-			newtriple(OC_GVSAVTARG);	/* Need 1 of these at expr_start */
+	{
+		if (!gvn_or_indir_in_select && ((GTM_BOOL == TREF(gtm_fullbool)) || !saw_se_in_select))
+		{
 			setcurtchain(oldchain);
-			TREF(saw_side_effect) |= we_saw_side_effect;
-			if (NULL == save_start)
-			{	/* If this chain is new, look back for a pre-boolean place to put it */
-				for (ref = (TREF(curtchain))->exorder.bl;
-				     (ref != TREF(curtchain)) && oc_tab[ref->opcode].octype & OCT_BOOL; ref = ref->exorder.bl)
-						;
-				TREF(expr_start) = TREF(expr_start_orig) = ref;
-			}
-			dqadd(TREF(expr_start), &tmpchain, exorder);
-			TREF(expr_start) = tmpchain.exorder.bl;
-			triptr = newtriple(OC_GVRECTARG);
-			triptr->operand[0] = put_tref(TREF(expr_start));
+			triptr = (TREF(curtchain))->exorder.bl;
+			dqadd(triptr, &tmpchain, exorder);	/* this is a violation of info hiding */
 		} else
-		{	/* Just put it where it would "naturally" go */
+		{
+			shifting = ((TREF(expr_start) != TREF(expr_start_orig)) && (OC_NOOP != (TREF(expr_start))->opcode));
+			newtriple(shifting ? OC_GVSAVTARG : OC_NOOP);	/* must have one of these two at expr_start */
 			setcurtchain(oldchain);
-			triptr = (TREF(curtchain))->exorder.bl;
-			dqadd(triptr, &tmpchain, exorder);
+			assert(NULL != TREF(expr_start));
+			dqadd(TREF(expr_start), &tmpchain, exorder);
+			TREF(expr_start) = tmpchain.exorder.bl;
+			if (shifting)
+			{	/* only play this game if something else started it */
+				assert(OC_GVSAVTARG == (TREF(expr_start))->opcode);
+				triptr = newtriple(OC_GVRECTARG);
+				triptr->operand[0] = put_tref(TREF(expr_start));
+			}
 		}
 	}
 	*a = put_tref(r);
diff --git a/sr_port/gvn.c b/sr_port/gvn.c
index db7e6c3..41c7220 100644
--- a/sr_port/gvn.c
+++ b/sr_port/gvn.c
@@ -32,7 +32,7 @@ error_def(ERR_SIDEEFFECTEVAL);
 
 int gvn(void)
 {
-	boolean_t	in_select = FALSE, parse_status, shifting, vbar;
+	boolean_t	parse_status, shifting, vbar;
 	char		x;
 	int		hash_code;
 	opctype		ox;
@@ -45,7 +45,7 @@ int gvn(void)
 	advancewindow();
 	sb1 = sb2 = subscripts;
 	ox = 0;
-	if (shifting = (TREF(shift_side_effects) && (!TREF(saw_side_effect) || ((GTM_BOOL == TREF(gtm_fullbool))
+	if (shifting = (TREF(shift_side_effects) && (!TREF(saw_side_effect) || (GTM_BOOL == TREF(gtm_fullbool)
 		&& (OLD_SE == TREF(side_effect_handling))))))
 	{	/* NOTE assignment above */
 		dqinit(&tmpchain, exorder);
@@ -54,7 +54,7 @@ int gvn(void)
 	if ((TK_LBRACKET == TREF(window_token)) || (TK_VBAR == TREF(window_token)))
 	{
 		assert(sb2 == sb1);
-		/* Set "hash_code" as the first operand so OC_GVEXTNAM has it passed in at same spot as op_gvname */
+		/* set "hash_code" as the first operand so OC_GVEXTNAM has it passed in at same spot as op_gvname */
 		sb1++;
 		vbar = (TK_VBAR == TREF(window_token));
 		advancewindow();
@@ -102,7 +102,7 @@ int gvn(void)
 			ox = OC_GVNAME;
 			*sb1++ = put_ilit((mint)hash_code);
 		} else
-			*sb2 = put_ilit((mint)hash_code);	/* Fill in hash_code in the space previously set aside */
+			*sb2 = put_ilit((mint)hash_code);	/* fill in hash_code in the space previously set aside */
 		*sb1++ = put_str((TREF(window_ident)).addr, (TREF(window_ident)).len);
 		advancewindow();
 	} else
@@ -121,7 +121,7 @@ int gvn(void)
 			return FALSE;
 		}
 		ox = OC_GVNAKED;
-		/* Pass in a dummy hash_code in case of OC_GVNAKED. We need this so op_gvname_fast, op_gvextnam_fast and
+		/* pass in a dummy hash_code in case of OC_GVNAKED. We need this so op_gvname_fast, op_gvextnam_fast and
 		 * op_gvnaked_fast have the same call interface. op_savgvn.c relies on this to replace OC_GVNAME, OC_GVEXTNAM
 		 * or OC_GVNAKED opcodes with a OC_SAVGVN opcode.
 		 */
@@ -169,11 +169,8 @@ int gvn(void)
 	SUBS_ARRAY_2_TRIPLES(ref, sb1, sb2, subscripts, 0);
 	if (shifting)
 	{
-		if (NULL == TREF(expr_start))
-			TREF(saw_side_effect) = in_select = TRUE;	/* Special case relied on by f_select */
-		if (in_select
-			|| (TREF(saw_side_effect) && ((GTM_BOOL != TREF(gtm_fullbool)) || (OLD_SE != TREF(side_effect_handling)))))
-		{	/* Saw a side effect in a subscript - time to stop shifting */
+		if (TREF(saw_side_effect) && ((GTM_BOOL != TREF(gtm_fullbool)) || (OLD_SE != TREF(side_effect_handling))))
+		{	/* saw a side effect in a subscript - time to stop shifting */
 			setcurtchain(oldchain);
 			triptr = (TREF(curtchain))->exorder.bl;
 			dqadd(triptr, &tmpchain, exorder);
diff --git a/sr_port/indirection.c b/sr_port/indirection.c
index 0403639..127b793 100644
--- a/sr_port/indirection.c
+++ b/sr_port/indirection.c
@@ -27,7 +27,6 @@ GBLREF	spdesc		stringpool;
 GBLREF	unsigned char	*source_buffer;
 GBLREF	int		source_column;
 
-error_def(ERR_BOOLSIDEFFECT);
 error_def(ERR_EXPR);
 error_def(ERR_LPARENMISSING);
 error_def(ERR_MAXNRSUBSCRIPTS);
diff --git a/sr_x86_64/gtm_threadgbl_deftypes.h b/sr_x86_64/gtm_threadgbl_deftypes.h
index bd35723..74a3951 100644
--- a/sr_x86_64/gtm_threadgbl_deftypes.h
+++ b/sr_x86_64/gtm_threadgbl_deftypes.h
@@ -10,7 +10,7 @@
  *								*
  ****************************************************************/
 
-/* Generated by /usr/library/V62002/tools/gen_gtm_threadgbl_deftypes.csh */
+/* Generated by /usr/library/V62002A/tools/gen_gtm_threadgbl_deftypes.csh */
 
 #ifndef GTM_THREADGBL_DEFTYPES_INCLUDED
 #define GTM_THREADGBL_DEFTYPES_INCLUDED

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/fis-gtm.git



More information about the debian-med-commit mailing list