diff options
| author | Christopher Li <sparse@chrisli.org> | 2004-04-16 12:45:25 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:01:34 -0700 |
| commit | 36e42c3abe2e28974cc421fa1498511e7c6f8ee9 (patch) | |
| tree | 49841b66afecf7edb9a27e41da4f61a18f1aace3 /lib.h | |
| parent | 6af6fb881bcc8bad6bd2b348eab84632604f5200 (diff) | |
| download | sparse-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.h | 52 |
1 files changed, 43 insertions, 9 deletions
@@ -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) { |
