Bugfix import of egcs 1.1, 1998-08-24 snapshot.
This commit is contained in:
parent
705363981e
commit
2da237ca1f
|
@ -1,3 +1,62 @@
|
|||
Mon Aug 24 01:21:38 PDT 1998 Jeff Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
Sun Aug 23 00:47:52 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* regmove.c (optimize_reg_copy_3): Disable for egcs-1.1.
|
||||
|
||||
Thu Aug 20 13:56:53 1998 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* config/i386/winnt.c: Include system.h, not stdio.h to get
|
||||
sys/param.h pulled in before rtl.h in case the system defines MIN
|
||||
and MAX.
|
||||
|
||||
Wed Aug 19 21:33:19 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.c (rs6000_output_load_toc_table): Use ld for 64-bit.
|
||||
(output_toc): Use single TOC slot or llong minimal-toc for DFmode
|
||||
and DImode 64-bit. Use llong for minimal-toc SFmode and
|
||||
SYMBOL_REF / LABEL_REF 64-bit.
|
||||
(output_function_profiler): Use llong for profiler label and ld to
|
||||
load 64-bit label address.
|
||||
|
||||
Tue Aug 18 23:48:30 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* c-common.c (decl_attributes): Issue an error if the argument
|
||||
to alias is not a string.
|
||||
|
||||
Tue Aug 18 13:05:59 BST 1998 Richard Earnshaw (rearnsha@arm.com)
|
||||
|
||||
* arm.c (arm_override_options): Remove lie about ignoring PIC flag.
|
||||
|
||||
Tue Aug 18 10:32:11 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* haifa-sched.c (sched_analyze): Put all JUMP_INSNs on the last
|
||||
pending memory flush list.
|
||||
|
||||
* regmove.c (fixup_match_2): Do not call reg_overlap_mentioned_p
|
||||
on notes.
|
||||
|
||||
* regmove.c (optimize_reg_copy_1): Update REG_N_CALLS_CROSSED
|
||||
and REG_LIVE_LENGTH as successful substitutions are made.
|
||||
|
||||
Mon Aug 17 21:07:19 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* From Graham
|
||||
* tree.c (build_index_type): Copy TYPE_SIZE_UNIT from sizetype
|
||||
to itype.
|
||||
* c-decl.c (finish_enum): Copy TYPE_SIZ_UNIT from enumtype to tem.
|
||||
|
||||
* rs6000.c (secondary_reload_class): For TARGET_ELF, indicate that
|
||||
a BASE_REGS register is needed as an intermediate when copying
|
||||
a symbolic value into any register class other than BASE_REGS.
|
||||
|
||||
Mon Aug 17 11:25:52 1998 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
* arm.h (SECONDARY_INPUT_RELOAD_CLASS): Return NO_REGS if compiling
|
||||
for architecture v4.
|
||||
|
||||
Sun Aug 16 00:57:48 PDT 1998 Jeff Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
1998-08-17 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* pt.c (check_explicit_specialization): Don't abort on bogus
|
||||
explicit instantiations.
|
||||
|
||||
1998-08-14 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* rtti.c (get_tinfo_fn): Don't mess with the context for now.
|
||||
|
|
|
@ -1107,19 +1107,33 @@ check_explicit_specialization (declarator, decl, template_count, flags)
|
|||
|
||||
if (ctype != NULL_TREE && TYPE_BEING_DEFINED (ctype))
|
||||
{
|
||||
/* Since finish_struct_1 has not been called yet, we
|
||||
can't call lookup_fnfields. We note that this
|
||||
template is a specialization, and proceed, letting
|
||||
finish_struct fix this up later. */
|
||||
tree ti = perm_tree_cons (NULL_TREE,
|
||||
TREE_OPERAND (declarator, 1),
|
||||
NULL_TREE);
|
||||
TI_PENDING_SPECIALIZATION_FLAG (ti) = 1;
|
||||
DECL_TEMPLATE_INFO (decl) = ti;
|
||||
/* This should not be an instantiation; explicit
|
||||
instantiation directives can only occur at the top
|
||||
level. */
|
||||
my_friendly_assert (!explicit_instantiation, 0);
|
||||
if (!explicit_instantiation)
|
||||
{
|
||||
/* Since finish_struct_1 has not been called yet, we
|
||||
can't call lookup_fnfields. We note that this
|
||||
template is a specialization, and proceed, letting
|
||||
finish_struct fix this up later. */
|
||||
tree ti = perm_tree_cons (NULL_TREE,
|
||||
TREE_OPERAND (declarator, 1),
|
||||
NULL_TREE);
|
||||
TI_PENDING_SPECIALIZATION_FLAG (ti) = 1;
|
||||
DECL_TEMPLATE_INFO (decl) = ti;
|
||||
}
|
||||
else
|
||||
/* It's not legal to write an explicit instantiation in
|
||||
class scope, e.g.:
|
||||
|
||||
class C { template void f(); }
|
||||
|
||||
This case is caught by the parser. However, on
|
||||
something like:
|
||||
|
||||
template class C { void f(); };
|
||||
|
||||
(which is illegal) we can get here. The error will be
|
||||
issued later. */
|
||||
;
|
||||
|
||||
return decl;
|
||||
}
|
||||
else if (ctype != NULL_TREE
|
||||
|
|
|
@ -3813,6 +3813,10 @@ sched_analyze (head, tail)
|
|||
{
|
||||
if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN)
|
||||
{
|
||||
/* Make each JUMP_INSN a scheduling barrier for memory references. */
|
||||
if (GET_CODE (insn) == JUMP_INSN)
|
||||
last_pending_memory_flush
|
||||
= alloc_INSN_LIST (insn, last_pending_memory_flush);
|
||||
sched_analyze_insn (PATTERN (insn), insn, loop_notes);
|
||||
loop_notes = 0;
|
||||
}
|
||||
|
|
|
@ -288,12 +288,45 @@ optimize_reg_copy_1 (insn, dest, src)
|
|||
PATTERN (q))))
|
||||
{
|
||||
/* We assume that a register is used exactly once per
|
||||
insn in the updates below. If this is not correct,
|
||||
no great harm is done. */
|
||||
insn in the REG_N_REFS updates below. If this is not
|
||||
correct, no great harm is done.
|
||||
|
||||
|
||||
We do not undo this substitution if something later
|
||||
fails. Therefore, we must update the other REG_N_*
|
||||
counters now to keep them accurate. */
|
||||
if (sregno >= FIRST_PSEUDO_REGISTER)
|
||||
REG_N_REFS (sregno) -= loop_depth;
|
||||
{
|
||||
REG_N_REFS (sregno) -= loop_depth;
|
||||
|
||||
if (REG_LIVE_LENGTH (sregno) >= 0)
|
||||
{
|
||||
REG_LIVE_LENGTH (sregno) -= length;
|
||||
/* REG_LIVE_LENGTH is only an approximation after
|
||||
combine if sched is not run, so make sure that
|
||||
we still have a reasonable value. */
|
||||
if (REG_LIVE_LENGTH (sregno) < 2)
|
||||
REG_LIVE_LENGTH (sregno) = 2;
|
||||
}
|
||||
|
||||
REG_N_CALLS_CROSSED (sregno) -= n_calls;
|
||||
}
|
||||
|
||||
if (dregno >= FIRST_PSEUDO_REGISTER)
|
||||
REG_N_REFS (dregno) += loop_depth;
|
||||
{
|
||||
REG_N_REFS (dregno) += loop_depth;
|
||||
|
||||
if (REG_LIVE_LENGTH (dregno) >= 0)
|
||||
REG_LIVE_LENGTH (dregno) += d_length;
|
||||
|
||||
REG_N_CALLS_CROSSED (dregno) += d_n_calls;
|
||||
}
|
||||
|
||||
/* We've done a substitution, clear the counters. */
|
||||
length = 0;
|
||||
d_length = 0;
|
||||
n_calls = 0;
|
||||
d_n_calls = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -485,6 +518,18 @@ optimize_reg_copy_3 (insn, dest, src)
|
|||
rtx p, set, subreg;
|
||||
enum machine_mode old_mode;
|
||||
|
||||
/* This code has been disabled on the egcs-1.1 release branch due to
|
||||
a potentially serious bug.
|
||||
|
||||
In a nutshell, if we perform a series of substitutions, then have a
|
||||
later substitution fail we will not be able to undo the previous
|
||||
substitutions, leaving bogus RTL.
|
||||
|
||||
A fix for this can be found in the mainline sources, but it did not
|
||||
seem worth the trouble and potential problems to migrate the real
|
||||
fix to the egcs-1.1 branch. */
|
||||
return;
|
||||
|
||||
if (src_no < FIRST_PSEUDO_REGISTER
|
||||
|| dst_no < FIRST_PSEUDO_REGISTER
|
||||
|| ! find_reg_note (insn, REG_DEAD, src_reg)
|
||||
|
@ -790,6 +835,8 @@ fixup_match_2 (insn, dst, src, offset, regmove_dump_file)
|
|||
&& (NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_BEG
|
||||
|| NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END)))
|
||||
break;
|
||||
if (GET_RTX_CLASS (GET_CODE (p)) != 'i')
|
||||
continue;
|
||||
if (reg_overlap_mentioned_p (dst, PATTERN (p)))
|
||||
{
|
||||
if (try_auto_increment (p, insn, 0, dst, newconst, 0))
|
||||
|
|
|
@ -4127,6 +4127,7 @@ build_index_type (maxval)
|
|||
|
||||
TYPE_MODE (itype) = TYPE_MODE (sizetype);
|
||||
TYPE_SIZE (itype) = TYPE_SIZE (sizetype);
|
||||
TYPE_SIZE_UNIT (itype) = TYPE_SIZE_UNIT (sizetype);
|
||||
TYPE_ALIGN (itype) = TYPE_ALIGN (sizetype);
|
||||
if (TREE_CODE (maxval) == INTEGER_CST)
|
||||
{
|
||||
|
|
|
@ -1 +1 @@
|
|||
char *version_string = "egcs-2.91.54 19980816 (gcc2 ss-980609 experimental)";
|
||||
char *version_string = "egcs-2.91.55 19980824 (gcc2 ss-980609 experimental)";
|
||||
|
|
Loading…
Reference in New Issue