| Rev |
Log message |
Author |
Age |
Path |
| 3750 |
Fixed bug 675 - IPA generates incorrect line/file table information:
IPA currently line number information in WHIRL statements for code
being inlined is being replaced with the line number information
associated with the call (see note * below).
The fix is to have IPA generate a global file table along with maps
for each input WHIRL file that maps an index into the input file table
to an index into the global file table.
Then during processing done IP_READ_fix_tree the file index field in
the SRCPOS record in each WHIRL statement node is updated to use the
appropriate global file table index.
In output_queue::flush() the current state of the global file table is
written to the current .I file. Note that the processing to do this
is done by a newly added routine copy_DST_Type(). Also the routine
merge_directories_and_files(), which AFAICS has always generated bogus
file tables, is no longer called and has been removed.
Reviewed and approved by Gautam.
Note *: A workaround in IPO_INLINE::Process_Op_Code was added with the
PSC 1.3 merge which prevents assembly errors when out-of-ranges file
indices were detected in the .loc assembly directives (if you take out
this work around in previous version of the compiler, the IPA compile
of SPEC xalancbmk will likely fail). This change removes this
workaround. |
dgilmore |
600d 11h |
/trunk/ |
| 3749 |
Fix [Bug 872] ZDL-- Error loop body
C.R. by YeMei |
shenruifen |
603d 04h |
/trunk/ |
| 3748 |
Add Stephen Clarke to MAINTAINERS |
stevec |
603d 10h |
/trunk/ |
| 3747 |
Fix bug #876.
This patch is related to bug 827 and rev 3739. For a simple case:
extern void undef();
static void foo() {
undef(); // <-- A
}
static void bar() {
int n;
switch(n) {
foo(); // <-- B
}
}
int global() {
bar();
}
The callsite B is dead code and eliminated by the GCC FE at O2. With the
patch to bug 827, function foo is still marked as referenced. Then
function foo() is emitted to the BE and generate the call to "undef".
There will be an error in the final linking phase: undefined reference
to `undef()'. In the previous patch rev 3739, when we generate the CALL node to a
function, both the name and decl of the function are marked as
referenced. That causes this regression. Since the logic to detect if a
static function is used but not defined only check the name of the
symbol, the new patch only set the name of the function referenced.
Code Review by Sun Chan. |
laijx |
603d 23h |
/trunk/ |
| 3746 |
Fix bug877.
Fix compiler failure when program does not end with a new line character.
Code Review: Sun-Chan. |
zhuqing |
604d 00h |
/trunk/ |
| 3745 |
Bug 828 - Output faiulre in g++ regression suite in SVN3663 , Author: Stephen Clarke <stephen.clarke@st.com> , Reviewed by : Jian-Xin Lai |
codestr0m |
606d 22h |
/trunk/ |
| 3741 |
Fix bug792, support constraint "b" used in inline asm on IA-64.
Code Review:Jian-xin. |
zhuqing |
608d 01h |
/trunk/ |
| 3740 |
fix bug 875. itanium dbg build err due to insufficient option space.
Code Review: Lai Jian-xin. |
yug |
608d 23h |
/trunk/ |
| 3739 |
Fix bug #827.
he error message should be reported at toplev.c, line 884:
874 if (TREE_CODE (decl) == FUNCTION_DECL
875 && DECL_INITIAL (decl) == 0
876 && DECL_EXTERNAL (decl)
877 && ! DECL_ARTIFICIAL (decl)
878 && ! TREE_NO_WARNING (decl)
879 && ! TREE_PUBLIC (decl)
880 && (warn_unused_function
881 || TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME
(decl))))
882 {
883 if (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)))
884 pedwarn ("%q+F used but never defined", decl);
885 else
886 warning (0, "%q+F declared %<static%> but never
defined", decl);
887 /* This symbol is effectively an "extern" declaration now.
*/
888 TREE_PUBLIC (decl) = 1;
889 assemble_external (decl);
890 }
Because the TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) is
not set for the callee in this case, the compiler doesn't report any
error on this case. The patch is to set this flag when handle the
CALL_EXPR when the tree is translated into spin.
Code review by Gautam. |
laijx |
611d 01h |
/trunk/ |
| 3738 |
fixed bug 865
In IA64, open64 need ftz.o to lin with -Ofast optimization , this patch build and install ftz.o |
ycwu |
611d 03h |
/trunk/ |
| 3737 |
Fix bug847.
1. Put global asm code at where it defines
2. When there is global asm in source file, do not emit .org
Code Review: Jian-Xin. |
zhuqing |
615d 23h |
/trunk/ |
| 3736 |
fixed typo error in revision 3735
code review by Lia Jian xin |
ycwu |
618d 00h |
/trunk/ |
| 3735 |
A new implementation for the open64's support for DSP Zero-Delay-Loop(ZDL) feature. This ZDL contribution is a co-operational approach of global scalar optimizer WOPT and the Code Generation component CG. The common ZDL features, i.e, the loop counting mechanism hidden and bottom loop condition abstracted are implemented in WOPT with minimized changes while keeping the maximum optimizing result. A pseudo branch op method is introduced to expand ZDL WHIRL operator and delay the ZDL hardware instruction generation to the very last phase of CG loop optimization. This lazy implementation helps keeping the compatibility with other CG loop optimizations to produce the most optimal code. With the new ZDL implementation, open64 provides the equal expressibility to gcc's doloop_begin, doloop_end and decrement_and_branch_until_zero patterns.
Pragma:
#pragma zdl off
Flags:
WOPT_Enable_ZDL
OPT_Lower_ZDL
WOPT_Enable_ZDL_Early_Exit
WOPT_ZDL_Innermost_Only
CG_zdl_enabled_level[SL]
retargeting macro:
ZDL_TARG
retargeting interface:
INT CG_LOOP_ZDL_Gen(LOOP_DESCR*); //cg_loop.cxx
void Emit_Phase_Validity_Check(void); //cgemit.cxx
void Target_Specific_ZDLBR_Expansion(TN* target_tn); //whirl2ops.cxx
provided options
-WOPT:zdl
-WOPT:zdl_skip_a
-WOPT:zdl_skip_b
-WOPT:zdl_skip_e
-OPT:lower_zdl
-CG:zdl_enabled_level[SL]
Code Review: Fred Chow, Lai Jianxin and Sun Chan. |
yug |
621d 05h |
/trunk/ |
| 3734 |
fixed for bug 826
The fix is to partially undo the change for revision 3659. The change
for revision 3659 includes other fix in addition to the one for
removing 'structure copies'. This fix undoes only the part for
optimization of removing structure copies.
Code review by Lai Jianxin |
ycwu |
622d 02h |
/trunk/ |
| 3733 |
Fix bug851. Add option "TENV:mregparm=%d" to be when use "mregparm=%d".
Code Review: David Coakley |
zhuqing |
622d 05h |
/trunk/ |
| 3732 |
Fixed a problem in load folding optimization where the memory location used
in the load operation is overwritten by a store operation. A check is added
to prevent folding of such load operations.
CR by Jian-Xin |
shivaram |
623d 02h |
/trunk/ |
| 3731 |
popcnt is now generated for call to builtin_popcnt on Barcelona
and above. I use the following check: Is_Target_SSE42() ||
Is_Target_Barcelona()
Is_Target_SSE42 enables it on Orochi. Is_Target_Barcelona enables it
on Barcelona.
Thanks to Jian-Xin Lai for code review. |
rramanar |
624d 22h |
/trunk/ |
| 3730 |
Fix bug867. Add driver support for option "-mregparm=NUM".
Code Review: Sun Chan & David Coakley |
zhuqing |
629d 05h |
/trunk/ |
| 3729 |
Fix bug833, patch provide by Steve. The recursing of WGEN_Expand_Expr will break initializer, the fix is to avoid this recursive.
Code Review: Jian Xin & Sun Chan |
zhuqing |
630d 22h |
/trunk/ |
| 3728 |
Fix bug832, add user defined align info to ty_idx.
Code Review: Sun Chan. |
zhuqing |
630d 22h |
/trunk/ |