gcse.c (gcse_main): Fix comment typo.
* gcse.c (gcse_main): Fix comment typo. (delete_null_pointer_check): Likewise. (hash_scan_set): Don't consider sets with REG_EQUIV MEM notes. * cse.c (cse_insn): Likewise. * function.c (fixup_var_refs_insns_with_hash): The sequence is toplevel. * gcc.c-torture/execute/20010403-1.c: New test. From-SVN: r41444
This commit is contained in:
parent
5c8378a7a2
commit
43e720723f
@ -1,3 +1,12 @@
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcse.c (gcse_main): Fix comment typo.
|
||||
(delete_null_pointer_check): Likewise.
|
||||
(hash_scan_set): Don't consider sets with REG_EQUIV MEM notes.
|
||||
* cse.c (cse_insn): Likewise.
|
||||
* function.c (fixup_var_refs_insns_with_hash): The sequence is
|
||||
toplevel.
|
||||
|
||||
2001-04-19 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* toplev.c: Excise all code for the undocumented -dm option.
|
||||
|
16
gcc/cse.c
16
gcc/cse.c
@ -5067,18 +5067,16 @@ cse_insn (insn, libcall_insn)
|
||||
sets[i].src_in_memory = hash_arg_in_memory;
|
||||
|
||||
/* If SRC is a MEM, there is a REG_EQUIV note for SRC, and DEST is
|
||||
a pseudo that is set more than once, do not record SRC. Using
|
||||
SRC as a replacement for anything else will be incorrect in that
|
||||
situation. Note that this usually occurs only for stack slots,
|
||||
in which case all the RTL would be referring to SRC, so we don't
|
||||
lose any optimization opportunities by not having SRC in the
|
||||
hash table. */
|
||||
a pseudo, do not record SRC. Using SRC as a replacement for
|
||||
anything else will be incorrect in that situation. Note that
|
||||
this usually occurs only for stack slots, in which case all the
|
||||
RTL would be referring to SRC, so we don't lose any optimization
|
||||
opportunities by not having SRC in the hash table. */
|
||||
|
||||
if (GET_CODE (src) == MEM
|
||||
&& find_reg_note (insn, REG_EQUIV, src) != 0
|
||||
&& find_reg_note (insn, REG_EQUIV, NULL_RTX) != 0
|
||||
&& GET_CODE (dest) == REG
|
||||
&& REGNO (dest) >= FIRST_PSEUDO_REGISTER
|
||||
&& REG_N_SETS (REGNO (dest)) != 1)
|
||||
&& REGNO (dest) >= FIRST_PSEUDO_REGISTER)
|
||||
sets[i].src_volatile = 1;
|
||||
|
||||
#if 0
|
||||
|
@ -1682,7 +1682,7 @@ fixup_var_refs_insns_with_hash (ht, var, promoted_mode, unsignedp)
|
||||
rtx insn = XEXP (insn_list, 0);
|
||||
|
||||
if (INSN_P (insn))
|
||||
fixup_var_refs_insn (insn, var, promoted_mode, unsignedp, 0);
|
||||
fixup_var_refs_insn (insn, var, promoted_mode, unsignedp, 1);
|
||||
|
||||
insn_list = XEXP (insn_list, 1);
|
||||
}
|
||||
|
13
gcc/gcse.c
13
gcc/gcse.c
@ -756,7 +756,7 @@ gcse_main (f, file)
|
||||
a high connectivity will take a long time and is unlikely to be
|
||||
particularly useful.
|
||||
|
||||
In normal circumstances a cfg should have about twice has many edges
|
||||
In normal circumstances a cfg should have about twice as many edges
|
||||
as blocks. But we do not want to punish small functions which have
|
||||
a couple switch statements. So we require a relatively large number
|
||||
of basic blocks and the ratio of edges to blocks to be high. */
|
||||
@ -2208,7 +2208,14 @@ hash_scan_set (pat, insn, set_p)
|
||||
/* Is SET_SRC something we want to gcse? */
|
||||
&& want_to_gcse_p (src)
|
||||
/* Don't CSE a nop. */
|
||||
&& ! set_noop_p (pat))
|
||||
&& ! set_noop_p (pat)
|
||||
/* Don't GCSE if it has attached REG_EQUIV note.
|
||||
At this point this only function parameters should have
|
||||
REG_EQUIV notes and if the argument slot is used somewhere
|
||||
explicitely, it means address of parameter has been taken,
|
||||
so we should not extend the lifetime of the pseudo. */
|
||||
&& ((note = find_reg_note (insn, REG_EQUIV, NULL_RTX)) == 0
|
||||
|| GET_CODE (XEXP (note, 0)) != MEM))
|
||||
{
|
||||
/* An expression is not anticipatable if its operands are
|
||||
modified before this insn or if this is not the only SET in
|
||||
@ -5541,7 +5548,7 @@ delete_null_pointer_checks (f)
|
||||
a high connectivity will take a long time and is unlikely to be
|
||||
particularly useful.
|
||||
|
||||
In normal circumstances a cfg should have about twice has many edges
|
||||
In normal circumstances a cfg should have about twice as many edges
|
||||
as blocks. But we do not want to punish small functions which have
|
||||
a couple switch statements. So we require a relatively large number
|
||||
of basic blocks and the ratio of edges to blocks to be high. */
|
||||
|
@ -1,3 +1,7 @@
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/20010403-1.c: New test.
|
||||
|
||||
2001-04-19 David Billinghurst <David.Billinghurst@riotinto.com>
|
||||
Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user