||[CAF] fix bug in copying command-line arguments for gasnet_init
When allocating buffer for command-line arg, it did not allocate the extra
byte for the terminating NULL character.
||support OpenUH build in Linux Mint distro
From Open64 commit log:
Open64 currently does not build from source on Linux Mint 12 due to this
distro using yet another layout for 64-bit libraries and objects.
The following change corrects the issue by adding another case to the
Note: If trying to execute a prebuilt OpenUH in Linux Mint, it may require
manully copying crt1.o, crti.o, and crtn.o from /usr/lib/x86_64-linux-gnu to
/usr/lib (and possibly /usr/lib64).
Contributor: David Coakley (AMD)
||[CAF] Fixes DV for allocatable scalar coarrays
This includes a fix for allocatable scalar coarrays ("coscalars"):
The dope vector for allocatable coscalars was not being initialized correctly
after recent change which did away with using the VAR_TMP_IDX for storing PE
bound information. The routine which generates the dope vector wasn't
correctly recognzing the existence of the cobounds in the declaration.
Also, for intrinsic functions which take in a coarray dope vector (e.g.
this_image), it was creating a temp dope vector for the actual argument. This
temp did not contain the cobounds information for coscalars. I modified this
so that it will instead use the original dope vector created for the coscalar.
When trying to determine the address on a remote image, we add the appropriate
offset only if it falls within the RMA heap. Coarrays that aren't in the heap
(e.g. save coarrays that have not been mapped into static coarray section of
heap) do not need an address adjustment so this check is added. Note,
accessing coarrays currently allocated outside the heap (e.g. save coarrays)
will not work unless using GASNet's everything segment configuration.
||adds macro __OPENUH__ which indicates version of OpenUH that is used.
||fix for bug783.
In dwarf frame sections, for -fpic -g code, unified 4byte upointer_size
is used to represent the reference to the code in text no matter
-m32 or -m64. So, in handling the relocations in .debug_frame,
we should always use PC-relative relocation instead of absolute one as
we did in .eh_frame.
Code Reivew: Lai Jian-Xin.
||a new version of the kopencc script.
o. rewritten in perl, original bash script is hard to parse complex arguments.
o. more flexible. No hard-coded opt levels and targets,
user specified opt levels higher priority than the makefile defaults.
o. dump functionality. command-line processed by kopencc now also dumped to
the stderr, this helps programmer debugging the buid issues.
Code Review: Dong Yuan and David Coakley.
||Fixed the x86-ppc cross compiler's gcc preprocessor problem and adjusted it's install method. Reviewed by David Coakley
||Changes include: support for 256-bit fma, limiting load exec on x86 cmp
insns to a single use for the consuming load, updates for non temporal
stores, adding a temp result to a binary and expansion pattern and
cleanup in CG_sched. CR: Jian-Xin.
||fix for bug952.
In the expansion of OPR_STID for X8664 -m32 target,
when the kid is 64bit result with paired TN but the stid_type
is 4byte size or less, we delete the useless higher 32bit tn
by unpair the result. This will help pass the pair check in the
following expansion routines.
Code Review: Lai Jian-Xin.
||add bug952 cases
||Cleanup of r3901.
To fix library dependency problems, the rule make_libdeps for
X8664 is now the same as NVISA.
CR: Mike Murphy
||The hash function for VN_BINARY_EXPR will first canonicalize the
expression. as the following code in file opt_vn_expr_taxonomy.h:509
Is_True(!has_bottom_opnd() && !has_top_opnd(),
("Cannot hash() with Top() or Bottom() operand!"));
return _opc + (_vn.ordinal() << 4) + (_vn.ordinal() << 8);
Following is the canonicalize code in opt_vn_expr.cxx:754
// Puts operands in increasing order of VN if commutative,
// and change opcode for inequalities such that we always
// use LT or LE and never GT or GE.
OPCODE opc1 = OPCODE_commutative_op(_opc);
if (opc1 != OPCODE_UNKNOWN && _vn > _vn)
_opc = opc1;
const OPERATOR opr = OPCODE_operator(_opc);
if (opr == OPR_GE)
_opc = OPCODE_make_op(OPR_LE, OPCODE_rtype(_opc), OPCODE_desc(_opc));
else if (opr == OPR_GT)
_opc = OPCODE_make_op(OPR_LT, OPCODE_rtype(_opc), OPCODE_desc(_opc));
} // VN_BINARY_EXPR::_canonicalize
These code would like to do one of the 2 things as in the comments
a. put operands in increasing order of VN if commutative
b. use LT or LE and never GT or GE
For the expression v0 < v1 where Value_number(v0) = 3 ,
Value_number(v2)= 1 . we try to get it’s hash number. as it satisfy
opc1 != OPCODE_UNKNOWN && _vn  > _vn, it will canonicalize to v1 > v0
The second time we try to get it’s hash number, this
expression satisfy rule a, it will jump to rule b, use LT or LE . So
v1 > v0 will canonicalize to v0 < v1 again. We got a different hash
number from the first time.
The hash number is not unique for this expression.
Actually, the relative operators are not consider to be commutatived.
Only binary operations that the operands can be exchange and the
operator keep the same are commutatived operations, just like plus,
Do not apply rule a for relative operator(LT, LE, GT, GE) should be a solution.
Approved by: Lai Jianxin
||back out commit r3901, it breaks with old versions of make.
||To fix library dependency problems, the
rule make_libdeps for X8664 is now the same as NVISA.
CR: Sun Chan.
||This change fixes a bug in DSP_SCH::Compute_Insn_Size().
Some operations have an opcode variant which assume that rax/eax is an
operand/result. Thus when this register is being targeted no Mod R/M
byte is needed, thus the instruction is 1 byte shorter.
CR: Sun Chan
||This patch fixes initializations of several MEM_POOLs in
ebo_special.cxx, which eliminates many memory pool initialization
trace warnings when the compiler is built in debug mode.
CR: Sun Chan
||This is a fix for a bug found by adding new fields to the
OP structure which caused a segmentation fault during the
code generation phase when building SPEC dealII.
The Base() member function of a POINTS_TO structure only
returns a valid ST pointer when the base kind is fixed (for
debugging purposes, during alias information construction
pointers to different structures are placed in _base when
the base kind is dynamic).
For consistency sake, in this source file I changed the
other check to determine whether the base kind is fixed to
use the Based_is_fixed() member function.
CR: Jian-Xin Lai.
||Fix osprey-gcc-4.2.0 build failure on Linux Mint 12 64-bit.
This distro puts the 64-bit C runtime object files in
/usr/lib/x86_64-linux-gnu instead of /usr/lib or /usr/lib64.
Approved by: Sun Chan
||Remove unused code for GCC 4.0-based C/C++ front end.
It has been superseded by the GCC 4.2-based front end in osprey-gcc-4.2.0.
Approved by: Sun Chan
||[CAF] changing ENABLE_TRACES to ENABLE_LIBCAF_TRACES