Print this page
11972 resync smatch
*** 62,71 ****
--- 62,72 ----
EXPR_INDEX, // index in initializer
EXPR_POS, // position in initializer
EXPR_FVALUE,
EXPR_SLICE,
EXPR_OFFSETOF,
+ EXPR_ASM_OPERAND,
};
/*
* Flags for tracking the promotion of constness related attributes
*** 192,202 ****
// EXPR_SLICE
struct /* slice */ {
struct expression *base;
unsigned r_bitpos, r_nrbits;
};
! // EXPR_CAST and EXPR_SIZEOF
struct /* cast_arg */ {
struct symbol *cast_type;
struct expression *cast_expression;
};
// EXPR_CONDITIONAL
--- 193,204 ----
// EXPR_SLICE
struct /* slice */ {
struct expression *base;
unsigned r_bitpos, r_nrbits;
};
! // EXPR_CAST, EXPR_FORCE_CAST, EXPR_IMPLIED_CAST,
! // EXPR_SIZEOF, EXPR_ALIGNOF and EXPR_PTRSIZEOF
struct /* cast_arg */ {
struct symbol *cast_type;
struct expression *cast_expression;
};
// EXPR_CONDITIONAL
*** 239,254 ****
union {
struct ident *ident;
struct expression *index;
};
};
};
};
! /* Constant expression values */
! int is_zero_constant(struct expression *);
int expr_truth_value(struct expression *expr);
long long get_expression_value(struct expression *);
long long const_expression_value(struct expression *);
long long get_expression_value_silent(struct expression *expr);
/* Expression parsing */
--- 241,276 ----
union {
struct ident *ident;
struct expression *index;
};
};
+ // EXPR_ASM_OPERAND
+ struct {
+ struct ident *name;
+ struct expression *constraint;
+ struct expression *expr;
};
+ };
};
! ///
! // Constant expression values
! // --------------------------
!
! ///
! // test if an expression evaluates to the constant ``0``.
! // @return: ``1`` if @expr evaluate to ``0``,
! // ``0`` otherwise.
! int is_zero_constant(struct expression *expr);
!
! ///
! // test the compile time truth value of an expression
! // @return:
! // * ``-1`` if @expr is not constant,
! // * ``0`` or ``1`` depending on the truth value of @expr.
int expr_truth_value(struct expression *expr);
+
long long get_expression_value(struct expression *);
long long const_expression_value(struct expression *);
long long get_expression_value_silent(struct expression *expr);
/* Expression parsing */