117 CEF_SET_ENUM = (CEF_ENUM | CEF_SET_ICE),
118
119 /* character constant => integer constant expression */
120 CEF_SET_CHAR = (CEF_CHAR | CEF_SET_ICE),
121
122 /*
123 * Remove any "Constant" [6.4.4] flag, but retain the "constant
124 * expression" [6.6] flags.
125 */
126 CEF_CONST_MASK = (CEF_INT | CEF_FLOAT | CEF_CHAR),
127
128 /*
129 * not an integer constant expression => neither of integer,
130 * enumeration and character constant
131 */
132 CEF_CLR_ICE = (CEF_ICE | CEF_INT | CEF_ENUM | CEF_CHAR),
133 };
134
135 enum {
136 Handled = 1 << 0,
137 Fake = 1 << 1,
138 }; /* for expr->flags */
139
140 enum {
141 Taint_comma = 1,
142 }; /* for expr->taint */
143
144 struct expression {
145 enum expression_type type:8;
146 unsigned flags:8;
147 unsigned smatch_flags:16;
148 int op;
149 struct position pos;
150 struct symbol *ctype;
151 unsigned long parent;
152 union {
153 // EXPR_VALUE
154 struct {
155 unsigned long long value;
156 unsigned taint;
157 };
158
|
117 CEF_SET_ENUM = (CEF_ENUM | CEF_SET_ICE),
118
119 /* character constant => integer constant expression */
120 CEF_SET_CHAR = (CEF_CHAR | CEF_SET_ICE),
121
122 /*
123 * Remove any "Constant" [6.4.4] flag, but retain the "constant
124 * expression" [6.6] flags.
125 */
126 CEF_CONST_MASK = (CEF_INT | CEF_FLOAT | CEF_CHAR),
127
128 /*
129 * not an integer constant expression => neither of integer,
130 * enumeration and character constant
131 */
132 CEF_CLR_ICE = (CEF_ICE | CEF_INT | CEF_ENUM | CEF_CHAR),
133 };
134
135 enum {
136 Handled = 1 << 0,
137 Tmp = 1 << 1,
138 Fake = 1 << 2,
139 }; /* for expr->smatch_flags */
140
141 enum {
142 Taint_comma = 1,
143 }; /* for expr->taint */
144
145 struct expression {
146 enum expression_type type:8;
147 unsigned flags:8;
148 unsigned smatch_flags:16;
149 int op;
150 struct position pos;
151 struct symbol *ctype;
152 unsigned long parent;
153 union {
154 // EXPR_VALUE
155 struct {
156 unsigned long long value;
157 unsigned taint;
158 };
159
|