Skip to content

Commit

Permalink
V6.2-002A
Browse files Browse the repository at this point in the history
  • Loading branch information
shabiel committed Nov 7, 2015
1 parent fd22a53 commit b7137a2
Show file tree
Hide file tree
Showing 14 changed files with 69 additions and 72 deletions.
6 changes: 4 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -422,7 +422,9 @@ endforeach()
# TODO: find_package or find_library for system libs?
include_directories (/usr/local/include)
target_link_libraries(libmumps ${libmumpslibs})
add_dependencies(libmumps gen_gtm_threadgbl_deftypes)
if(gen_xfer_desc)
add_dependencies(libmumps gen_xfer_desc)
endif()

add_executable(mumps ${mumps_SOURCES})
target_link_libraries(mumps libmumps)
Expand Down
20 changes: 10 additions & 10 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -35,28 +35,28 @@ 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

$ sudo sh ./configure

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>
Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion sr_i386/gtm_threadgbl_deftypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions sr_linux/release_name.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
5 changes: 3 additions & 2 deletions sr_port/actuallist.c
Original file line number Diff line number Diff line change
@@ -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 *
Expand Down Expand Up @@ -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 */
Expand Down
6 changes: 3 additions & 3 deletions sr_port/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 */

Expand Down
5 changes: 3 additions & 2 deletions sr_port/eval_expr.c
Original file line number Diff line number Diff line change
@@ -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 *
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 1 addition & 2 deletions sr_port/expritem.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down
5 changes: 3 additions & 2 deletions sr_port/f_name.c
Original file line number Diff line number Diff line change
@@ -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 *
Expand Down Expand Up @@ -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);
Expand Down
55 changes: 25 additions & 30 deletions sr_port/f_select.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
17 changes: 7 additions & 10 deletions sr_port/gvn.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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();
Expand Down Expand Up @@ -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
Expand All @@ -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.
*/
Expand Down Expand Up @@ -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);
Expand Down
1 change: 0 additions & 1 deletion sr_port/indirection.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 3 additions & 1 deletion sr_unix/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,9 @@ endforeach()
# TODO: find_package or find_library for system libs?
include_directories (/usr/local/include)
target_link_libraries(libmumps ${libmumpslibs})
add_dependencies(libmumps gen_gtm_threadgbl_deftypes)
if(gen_xfer_desc)
add_dependencies(libmumps gen_xfer_desc)
endif()

add_executable(mumps ${mumps_SOURCES})
target_link_libraries(mumps libmumps)
Expand Down
2 changes: 1 addition & 1 deletion sr_x86_64/gtm_threadgbl_deftypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit b7137a2

Please sign in to comment.