aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linearize.h
diff options
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-12-12 11:03:04 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:06:02 -0700
commit7f3a296bbbea7c06ccfff9d9ebe25e8f09696cbf (patch)
tree1cac1709c03479e3286a11abdc45232a23a3cea1 /linearize.h
parent7ec6f5462f09df41d61a986b80cf7a6cfb174464 (diff)
downloadsparse-dev-7f3a296bbbea7c06ccfff9d9ebe25e8f09696cbf.tar.gz
Make asm linearization not drop the constraints.
This also makes the OP_ASM data structures a bit more structured in order to contain all the required information.
Diffstat (limited to 'linearize.h')
-rw-r--r--linearize.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/linearize.h b/linearize.h
index eb30e7f9..226cf837 100644
--- a/linearize.h
+++ b/linearize.h
@@ -39,6 +39,19 @@ struct multijmp {
int begin, end;
};
+struct asm_constraint {
+ pseudo_t pseudo;
+ const char *constraint;
+};
+
+DECLARE_PTR_LIST(asm_constraint_list, struct asm_constraint);
+
+struct asm_rules {
+ struct asm_constraint_list *inputs;
+ struct asm_constraint_list *outputs;
+ struct asm_constraint_list *clobbers;
+};
+
struct instruction {
unsigned opcode:8,
size:24;
@@ -92,8 +105,7 @@ struct instruction {
};
struct /* asm */ {
const char *string;
- struct pseudo_list *outputs;
- struct pseudo_list *inputs;
+ struct asm_rules *asm_rules;
};
};
};