aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/lib.h
diff options
authorChristopher Li <sparse@chrisli.org>2004-04-16 12:45:25 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:01:34 -0700
commit36e42c3abe2e28974cc421fa1498511e7c6f8ee9 (patch)
tree49841b66afecf7edb9a27e41da4f61a18f1aace3 /lib.h
parent6af6fb881bcc8bad6bd2b348eab84632604f5200 (diff)
downloadsparse-dev-36e42c3abe2e28974cc421fa1498511e7c6f8ee9.tar.gz
[PATCH] pack basic blocks
I figured out that I can unify the two case that need to merge the basic block. By doing that we avoid the need to modify the phi instructions. I also changed some macros in lib.h into inline functions for better type checking.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h52
1 files changed, 43 insertions, 9 deletions
diff --git a/lib.h b/lib.h
index 40555a48..93b56192 100644
--- a/lib.h
+++ b/lib.h
@@ -5,6 +5,7 @@
*
* Copyright (C) 2003 Transmeta Corp.
* 2003 Linus Torvalds
+ * 2004 Christopher Li
*
* Licensed under the Open Software License version 1.1
*/
@@ -34,6 +35,7 @@ struct entrypoint;
struct instruction;
struct instruction_list;
struct multijmp;
+struct multijmp_list;
struct token *skip_to(struct token *, int);
struct token *expect(struct token *, int, const char *);
@@ -116,6 +118,7 @@ extern void free_ptr_list(struct ptr_list **);
extern int ptr_list_size(struct ptr_list *);
extern char **handle_switch(char *arg, char **next);
extern void add_pre_buffer(const char *fmt, ...);
+void * next_iterator(struct list_iterator *iterator);
extern unsigned int pre_buffer_size;
extern unsigned char pre_buffer[8192];
@@ -125,19 +128,50 @@ extern int preprocess_only;
extern void create_builtin_stream(void);
-#define symbol_list_size(list) ptr_list_size((struct ptr_list *)(list))
-#define statement_list_size(list) ptr_list_size((struct ptr_list *)(list))
-#define expression_list_size(list) ptr_list_size((struct ptr_list *)(list))
-#define instruction_list_size(list) ptr_list_size((struct ptr_list *)(list))
-#define bb_list_size(list) ptr_list_size((struct ptr_list *)(list))
+static inline int symbol_list_size(struct symbol_list* list)
+{
+ return ptr_list_size((struct ptr_list *)(list));
+}
+static inline int statement_list_size(struct statement_list* list)
+{
+ return ptr_list_size((struct ptr_list *)(list));
+}
-#define init_multijmp_iterator(list, iterator, flags) init_iterator((struct ptr_list **)(list), (iterator), (flags))
+static inline int expression_list_size(struct expression_list* list)
+{
+ return ptr_list_size((struct ptr_list *)(list));
+}
-#define next_basic_block(iterator) (struct basic_block*) next_iterator(iterator)
-#define next_multijmp(iterator) (struct multijmp*) next_iterator(iterator)
+static inline int instruction_list_size(struct instruction_list* list)
+{
+ return ptr_list_size((struct ptr_list *)(list));
+}
-void * next_iterator(struct list_iterator *iterator);
+static inline int bb_list_size(struct basic_block_list* list)
+{
+ return ptr_list_size((struct ptr_list *)(list));
+}
+
+static inline struct basic_block* next_basic_block(struct list_iterator *iterator)
+{
+ return next_iterator(iterator);
+}
+
+static inline struct multijmp* next_multijmp(struct list_iterator *iterator)
+{
+ return next_multijmp(iterator);
+}
+
+static inline void free_instruction_list(struct instruction_list **head)
+{
+ free_ptr_list((struct ptr_list **)head);
+}
+
+static inline void init_multijmp_iterator(struct multijmp_list **head, struct list_iterator *iterator, int flags)
+{
+ init_iterator((struct ptr_list **)head, iterator, flags);
+}
static inline void init_bb_iterator(struct basic_block_list **head, struct list_iterator *iterator, int flags)
{