diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-03-20 16:11:40 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-04-17 20:43:15 +0200 |
commit | ee17130837d9cef3e587d6dea7533903c277718c (patch) | |
tree | db4d60869b0ad7aef4d45a1e9b40b86db7dc08cc | |
parent | b91ba64904a6a05d619a27a17545163eac97c2ca (diff) | |
download | sparse-ee17130837d9cef3e587d6dea7533903c277718c.tar.gz |
memops: we can kill addresses unconditionally
In rewrite_load_instruction(), if the load instruction is converted
into a phi-node, its address is then no more used and must be removed.
However, this is only done when this address is not a symbol.
This was explicitly done in the following commit because of the problem
of removing an element from the usage list while walking this list:
602f6b6c0d41 ("Leave symbol pseudo usage intact when doing phi-node conversion.")
But currently rewrite_load_instruction() is only used during memops
simplification where the usage list is not walked.
So, kill the address' usage unconditionally.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | memops.c | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -45,9 +45,7 @@ static void rewrite_load_instruction(struct instruction *insn, struct pseudo_lis goto end; complex_phi: - /* We leave symbol pseudos with a bogus usage list here */ - if (insn->src->type != PSEUDO_SYM) - kill_use(&insn->src); + kill_use(&insn->src); insn->opcode = OP_PHI; insn->phi_list = dominators; |