diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-21 00:07:33 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-21 00:07:33 +0000 |
commit | 2c59145b87ab545152364c5fbe052b5e414e0a88 (patch) | |
tree | f90d57c3d5e2996dc54ebe2a6fdefbf8714163ff /gcc/gcse.c | |
parent | 227be4e17be4bedb1f5317c98edcbf0a295566d6 (diff) | |
download | gcc-2c59145b87ab545152364c5fbe052b5e414e0a88.tar.gz |
* gcse.c (record_one_set): Prepend instead of append onto
reg_set_table, making it O(n) instead O(n^2).
* lcm.c (compute_antinout_edge,compute_laterin,compute_available):
Use a queue instead of a stack as worklist.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35158 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r-- | gcc/gcse.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c index aa3f7a711ce..224dd6bcfa1 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -1140,21 +1140,8 @@ record_one_set (regno, insn) sizeof (struct reg_set)); bytes_used += sizeof (struct reg_set); new_reg_info->insn = insn; - new_reg_info->next = NULL; - if (reg_set_table[regno] == NULL) - reg_set_table[regno] = new_reg_info; - else - { - reg_info_ptr1 = reg_info_ptr2 = reg_set_table[regno]; - /* ??? One could keep a "last" pointer to speed this up. */ - while (reg_info_ptr1 != NULL) - { - reg_info_ptr2 = reg_info_ptr1; - reg_info_ptr1 = reg_info_ptr1->next; - } - - reg_info_ptr2->next = new_reg_info; - } + new_reg_info->next = reg_set_table[regno]; + reg_set_table[regno] = new_reg_info; } /* Called from compute_sets via note_stores to handle one SET or CLOBBER in |