From: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
To: linux-sparse@vger.kernel.org
Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: [PATCH v2 05/10] fix usage of deadborn loads
Date: Tue, 13 Feb 2018 22:58:07 +0100 [thread overview]
Message-ID: <20180213215812.18735-6-luc.vanoostenryck@gmail.com> (raw)
In-Reply-To: <20180213215812.18735-1-luc.vanoostenryck@gmail.com>
In some situations, loads and others instructions can be
unreachable already when linearized, for example in code like:
void foo(int *ptr)
{
return;
*ptr;
}
Such loads are detected in find_dominating_stores() and must
be discarded. This is done and the load have its opcode set
to OP_LNOP (wich is only useful for debugging) but it's
address is left as being used by the load.
Fix this by removing the address usage.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
flow.c | 2 +-
validation/mem2reg/load-deadborn.c | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 validation/mem2reg/load-deadborn.c
diff --git a/flow.c b/flow.c
index 62658b920..2a6bf5ea3 100644
--- a/flow.c
+++ b/flow.c
@@ -481,7 +481,7 @@ static int find_dominating_stores(pseudo_t pseudo, struct instruction *insn,
/* Unreachable load? Undo it */
if (!bb) {
- insn->opcode = OP_LNOP;
+ kill_use(&insn->src);
return 1;
}
diff --git a/validation/mem2reg/load-deadborn.c b/validation/mem2reg/load-deadborn.c
new file mode 100644
index 000000000..fa0baeae8
--- /dev/null
+++ b/validation/mem2reg/load-deadborn.c
@@ -0,0 +1,9 @@
+static void foo(int a)
+{
+ return;
+ a;
+}
+
+/*
+ * check-name: load-deadborn
+ */
--
2.16.0
next prev parent reply other threads:[~2018-02-13 22:00 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-13 21:58 [PATCH v2 00/10] fix usage when killing loads & stores Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 01/10] add testcase for bad killing of dominated stores Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 02/10] add testcases for converted loads Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 03/10] fix killing of " Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 04/10] kill dead stores when simplifying symbols Luc Van Oostenryck
2018-02-13 21:58 ` Luc Van Oostenryck [this message]
2018-02-13 21:58 ` [PATCH v2 06/10] add helper for pseudo's user-list's size Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 07/10] add helper: has_users() Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 08/10] use has_users() in dead_insn() too Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 09/10] let kill_instruction() report if changes were made Luc Van Oostenryck
2018-02-13 21:58 ` [PATCH v2 10/10] kill dead loads Luc Van Oostenryck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180213215812.18735-6-luc.vanoostenryck@gmail.com \
--to=luc.vanoostenryck@gmail.com \
--cc=linux-sparse@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).