walk_expression(expr->conditional.false_expression, callback, env);
return;
- case EXPR_BUILTIN_PREFETCH: {
- builtin_prefetch_expression_t const *const pf = &expr->builtin_prefetch;
- walk_expression(pf->adr, callback, env);
- if (pf->rw != NULL) {
- walk_expression(pf->rw, callback, env);
- if (pf->locality != NULL)
- walk_expression(pf->locality, callback, env);
- }
- return;
- }
-
case EXPR_BUILTIN_CONSTANT_P:
walk_expression(expr->builtin_constant.value, callback, env);
return;
return;
}
+ case EXPR_VA_START:
+ walk_expression(expr->va_starte.ap, callback, env);
+ return;
+
+ case EXPR_VA_ARG:
+ walk_expression(expr->va_arge.ap, callback, env);
+ return;
+
+ case EXPR_VA_COPY:
+ walk_expression(expr->va_copye.src, callback, env);
+ walk_expression(expr->va_copye.dst, callback, env);
+ return;
+
case EXPR_INVALID:
case EXPR_OFFSETOF:
case EXPR_REFERENCE:
case EXPR_STRING_LITERAL:
case EXPR_WIDE_STRING_LITERAL:
case EXPR_FUNCNAME:
- case EXPR_BUILTIN_SYMBOL:
- case EXPR_VA_START:
- case EXPR_VA_ARG:
case EXPR_LABEL_ADDRESS:
+ case EXPR_BUILTIN_TYPES_COMPATIBLE_P:
break;
}
statement_callback const callback,
void *const env)
{
- for (; entity != NULL; entity = entity->base.next) {
+ entity_t const *const end = last != NULL ? last->base.next : NULL;
+ for (; entity != end; entity = entity->base.next) {
/* we only look at variables */
if (entity->kind != ENTITY_VARIABLE)
continue;
if (initializer != NULL) {
walk_initializer(initializer, callback, env);
}
-
- if (entity == last)
- break;
}
}