[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-sparse
Subject: [PATCH 2/5] add instruction OP_UNREACH
From: Luc Van Oostenryck <luc.vanoostenryck () gmail ! com>
Date: 2020-03-18 17:31:17
Message-ID: 20200318173120.63939-3-luc.vanoostenryck () gmail ! com
[Download RAW message or body]
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
Documentation/IR.rst | 3 +++
linearize.c | 3 +++
opcode.def | 1 +
3 files changed, 7 insertions(+)
diff --git a/Documentation/IR.rst b/Documentation/IR.rst
index 9d6f2299eaf1..33a761662fad 100644
--- a/Documentation/IR.rst
+++ b/Documentation/IR.rst
@@ -47,6 +47,9 @@ Terminators
* .type: type of .cond, must be an integral type
* .multijmp_list: pairs of case-value - destination basic block
+.. op:: OP_UNREACH
+ Mark code as unreachable
+
.. op:: OP_COMPUTEDGOTO
Computed goto / branch to register
diff --git a/linearize.c b/linearize.c
index 30ed2a302d95..f1e538e23ae1 100644
--- a/linearize.c
+++ b/linearize.c
@@ -183,6 +183,7 @@ static const char *opcodes[] = {
[OP_BR] = "br",
[OP_CBR] = "cbr",
[OP_SWITCH] = "switch",
+ [OP_UNREACH] = "unreach",
[OP_COMPUTEDGOTO] = "jmp *",
/* Binary */
@@ -399,6 +400,8 @@ const char *show_instruction(struct instruction *insn)
} END_FOR_EACH_PTR(jmp);
break;
}
+ case OP_UNREACH:
+ break;
case OP_PHISOURCE: {
struct instruction *phi;
diff --git a/opcode.def b/opcode.def
index 57d827f449b5..2583e2f4a602 100644
--- a/opcode.def
+++ b/opcode.def
@@ -10,6 +10,7 @@ OPCODE(RET, BADOP, BADOP, BADOP, 1, OPF_NONE)
OPCODE(BR, BADOP, BADOP, BADOP, 0, OPF_NONE)
OPCODE(CBR, BADOP, BADOP, BADOP, 1, OPF_NONE)
OPCODE(SWITCH, BADOP, BADOP, BADOP, 1, OPF_NONE)
+OPCODE(UNREACH, BADOP, BADOP, BADOP, 0, OPF_NONE)
OPCODE(COMPUTEDGOTO, BADOP, BADOP, BADOP, 1, OPF_NONE)
OPCODE_RANGE(TERMINATOR, RET, COMPUTEDGOTO)
--
2.25.1
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic