Print this page
11506 smatch resync


 244         };
 245 };
 246 
 247 /* Constant expression values */
 248 int is_zero_constant(struct expression *);
 249 int expr_truth_value(struct expression *expr);
 250 long long get_expression_value(struct expression *);
 251 long long const_expression_value(struct expression *);
 252 long long get_expression_value_silent(struct expression *expr);
 253 
 254 /* Expression parsing */
 255 struct token *parse_expression(struct token *token, struct expression **tree);
 256 struct token *conditional_expression(struct token *token, struct expression **tree);
 257 struct token *primary_expression(struct token *token, struct expression **tree);
 258 struct token *parens_expression(struct token *token, struct expression **expr, const char *where);
 259 struct token *assignment_expression(struct token *token, struct expression **tree);
 260 
 261 extern void evaluate_symbol_list(struct symbol_list *list);
 262 extern struct symbol *evaluate_statement(struct statement *stmt);
 263 extern struct symbol *evaluate_expression(struct expression *);

 264 
 265 extern int expand_symbol(struct symbol *);
 266 
 267 static inline struct expression *alloc_expression(struct position pos, int type)
 268 {
 269         struct expression *expr = __alloc_expression(0);
 270         expr->type = type;
 271         expr->pos = pos;
 272         expr->flags = CEF_NONE;
 273         return expr;
 274 }
 275 
 276 static inline struct expression *alloc_const_expression(struct position pos, int value)
 277 {
 278         struct expression *expr = __alloc_expression(0);
 279         expr->type = EXPR_VALUE;
 280         expr->pos = pos;
 281         expr->value = value;
 282         expr->ctype = &int_ctype;
 283         expr->flags = CEF_SET_INT;




 244         };
 245 };
 246 
 247 /* Constant expression values */
 248 int is_zero_constant(struct expression *);
 249 int expr_truth_value(struct expression *expr);
 250 long long get_expression_value(struct expression *);
 251 long long const_expression_value(struct expression *);
 252 long long get_expression_value_silent(struct expression *expr);
 253 
 254 /* Expression parsing */
 255 struct token *parse_expression(struct token *token, struct expression **tree);
 256 struct token *conditional_expression(struct token *token, struct expression **tree);
 257 struct token *primary_expression(struct token *token, struct expression **tree);
 258 struct token *parens_expression(struct token *token, struct expression **expr, const char *where);
 259 struct token *assignment_expression(struct token *token, struct expression **tree);
 260 
 261 extern void evaluate_symbol_list(struct symbol_list *list);
 262 extern struct symbol *evaluate_statement(struct statement *stmt);
 263 extern struct symbol *evaluate_expression(struct expression *);
 264 struct symbol *find_identifier(struct ident *ident, struct symbol_list *_list, int *offset);
 265 
 266 extern int expand_symbol(struct symbol *);
 267 
 268 static inline struct expression *alloc_expression(struct position pos, int type)
 269 {
 270         struct expression *expr = __alloc_expression(0);
 271         expr->type = type;
 272         expr->pos = pos;
 273         expr->flags = CEF_NONE;
 274         return expr;
 275 }
 276 
 277 static inline struct expression *alloc_const_expression(struct position pos, int value)
 278 {
 279         struct expression *expr = __alloc_expression(0);
 280         expr->type = EXPR_VALUE;
 281         expr->pos = pos;
 282         expr->value = value;
 283         expr->ctype = &int_ctype;
 284         expr->flags = CEF_SET_INT;