Print this page
11972 resync smatch
*** 1,8 ****
--- 1,9 ----
#ifndef LIB_H
#define LIB_H
+ #include <stdbool.h>
#include <stdlib.h>
#include <stddef.h>
/*
* Basic helper routine descriptions for 'sparse'.
*** 30,53 ****
* THE SOFTWARE.
*/
#include "compat.h"
#include "ptrlist.h"
#define DO_STRINGIFY(x) #x
#define STRINGIFY(x) DO_STRINGIFY(x)
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
#endif
! extern int verbose, optimize, optimize_size, preprocessing;
extern int die_if_error;
extern int parse_error;
! extern int repeat_phase, merge_phi_sources;
extern int gcc_major, gcc_minor, gcc_patchlevel;
extern unsigned int hexval(unsigned int c);
struct position {
unsigned int type:6,
stream:14,
--- 31,59 ----
* THE SOFTWARE.
*/
#include "compat.h"
#include "ptrlist.h"
+ #include "utils.h"
+ #include "bits.h"
#define DO_STRINGIFY(x) #x
#define STRINGIFY(x) DO_STRINGIFY(x)
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
#endif
! extern int verbose, optimize_level, optimize_size, preprocessing;
extern int die_if_error;
extern int parse_error;
! extern int repeat_phase;
! extern int do_output;
extern int gcc_major, gcc_minor, gcc_patchlevel;
+ extern const char *base_filename;
+
extern unsigned int hexval(unsigned int c);
struct position {
unsigned int type:6,
stream:14,
*** 81,90 ****
--- 87,98 ----
typedef struct pseudo *pseudo_t;
struct token *skip_to(struct token *, int);
struct token *expect(struct token *, int, const char *);
+ void unexpected(struct token *, const char *errmsg);
+
#ifdef __GNUC__
#define FORMAT_ATTR(pos) __attribute__ ((__format__ (__printf__, pos, pos+1)))
#define NORETURN_ATTR __attribute__ ((__noreturn__))
#define SENTINEL_ATTR __attribute__ ((__sentinel__))
#else
*** 106,122 ****
--- 114,149 ----
#define ERROR_CURR_PHASE (1 << 0)
#define ERROR_PREV_PHASE (1 << 1)
extern int has_error;
+
+ enum phase {
+ PASS__PARSE,
+ PASS__LINEARIZE,
+ PASS__MEM2REG,
+ PASS__OPTIM,
+ PASS__FINAL,
+ };
+
+ #define PASS_PARSE (1UL << PASS__PARSE)
+ #define PASS_LINEARIZE (1UL << PASS__LINEARIZE)
+ #define PASS_MEM2REG (1UL << PASS__MEM2REG)
+ #define PASS_OPTIM (1UL << PASS__OPTIM)
+ #define PASS_FINAL (1UL << PASS__FINAL)
+
+
extern void add_pre_buffer(const char *fmt, ...) FORMAT_ATTR(1);
+ extern void predefine(const char *name, int weak, const char *fmt, ...) FORMAT_ATTR(3);
extern int preprocess_only;
extern int Waddress;
extern int Waddress_space;
extern int Wbitwise;
+ extern int Wbitwise_pointer;
+ extern int Wcast_from_as;
extern int Wcast_to_as;
extern int Wcast_truncate;
extern int Wconstant_suffix;
extern int Wconstexpr_not_const;
extern int Wcontext;
*** 128,137 ****
--- 155,165 ----
extern int Wenum_mismatch;
extern int Wexternal_function_has_definition;
extern int Wsparse_error;
extern int Wimplicit_int;
extern int Winit_cstring;
+ extern int Wint_to_pointer_cast;
extern int Wmemcpy_max_count;
extern int Wnon_pointer_null;
extern int Wold_initializer;
extern int Wold_style_definition;
extern int Wone_bit_signed_bitfield;
*** 138,150 ****
--- 166,181 ----
extern int Woverride_init;
extern int Woverride_init_all;
extern int Woverride_init_whole_range;
extern int Wparen_string;
extern int Wpointer_arith;
+ extern int Wpointer_to_int_cast;
extern int Wptr_subtraction_blows;
extern int Wreturn_void;
extern int Wshadow;
+ extern int Wshift_count_negative;
+ extern int Wshift_count_overflow;
extern int Wsizeof_bool;
extern int Wstrict_prototypes;
extern int Wtautological_compare;
extern int Wtransparent_union;
extern int Wtypesign;
*** 152,175 ****
extern int Wuninitialized;
extern int Wunknown_attribute;
extern int Wvla;
extern int dump_macro_defs;
! extern int dbg_entry;
extern int dbg_dead;
extern int fmem_report;
! extern int fdump_linearize;
extern unsigned long long fmemcpy_max_count;
extern int arch_m64;
extern int arch_msize_long;
extern int arch_big_endian;
- extern void declare_builtin_functions(void);
- extern void create_builtin_stream(void);
extern void dump_macro_definitions(void);
extern struct symbol_list *sparse_initialize(int argc, char **argv, struct string_list **files);
extern struct symbol_list *__sparse(char *filename);
extern struct symbol_list *sparse_keep_tokens(char *filename);
extern struct symbol_list *sparse(char *filename);
--- 183,213 ----
extern int Wuninitialized;
extern int Wunknown_attribute;
extern int Wvla;
extern int dump_macro_defs;
+ extern int dump_macros_only;
! extern int dbg_compound;
extern int dbg_dead;
+ extern int dbg_domtree;
+ extern int dbg_entry;
+ extern int dbg_ir;
+ extern int dbg_postorder;
+ extern unsigned int fmax_warnings;
extern int fmem_report;
! extern unsigned long fdump_ir;
extern unsigned long long fmemcpy_max_count;
+ extern unsigned long fpasses;
+ extern int funsigned_char;
extern int arch_m64;
extern int arch_msize_long;
extern int arch_big_endian;
+ extern int arch_mach;
extern void dump_macro_definitions(void);
extern struct symbol_list *sparse_initialize(int argc, char **argv, struct string_list **files);
extern struct symbol_list *__sparse(char *filename);
extern struct symbol_list *sparse_keep_tokens(char *filename);
extern struct symbol_list *sparse(char *filename);
*** 205,227 ****
return ptr_list_size((struct ptr_list *)(list));
}
static inline void free_instruction_list(struct instruction_list **head)
{
! free_ptr_list((struct ptr_list **)head);
}
static inline struct instruction * delete_last_instruction(struct instruction_list **head)
{
return undo_ptr_list_last((struct ptr_list **)head);
}
- static inline struct basic_block * delete_last_basic_block(struct basic_block_list **head)
- {
- return delete_ptr_list_last((struct ptr_list **)head);
- }
-
static inline struct basic_block *first_basic_block(struct basic_block_list *head)
{
return first_ptr_list((struct ptr_list *)head);
}
static inline struct instruction *last_instruction(struct instruction_list *head)
--- 243,260 ----
return ptr_list_size((struct ptr_list *)(list));
}
static inline void free_instruction_list(struct instruction_list **head)
{
! free_ptr_list(head);
}
static inline struct instruction * delete_last_instruction(struct instruction_list **head)
{
return undo_ptr_list_last((struct ptr_list **)head);
}
static inline struct basic_block *first_basic_block(struct basic_block_list *head)
{
return first_ptr_list((struct ptr_list *)head);
}
static inline struct instruction *last_instruction(struct instruction_list *head)