expr *expr_new_compound_lit(type *t, decl_init *init, int static_ctx) { expr *e = expr_new_wrapper(compound_lit); e->bits.complit.decl = compound_lit_decl(t, init); e->bits.complit.static_ctx = static_ctx; return e; }
expr *expr_new_addr_lbl(char *lbl, int static_ctx) { expr *e = expr_new_wrapper(addr); e->bits.lbl.spel = lbl; e->bits.lbl.static_ctx = static_ctx; return e; }
expr *expr_new_assign(expr *to, expr *from) { expr *ass = expr_new_wrapper(assign); ass->lhs = to; ass->rhs = from; return ass; }
expr *expr_new_assign_compound(expr *to, expr *from, enum op_type op) { expr *e = expr_new_wrapper(assign_compound); e->lhs = to; e->rhs = from; e->op = op; return e; }
expr *expr_new_val(int val) { expr *e = expr_new_wrapper(val); e->val.iv.val = val; return e; }
expr *expr_new_addr(expr *sub) { expr *e = expr_new_wrapper(addr); e->lhs = sub; return e; }
expr *expr_new_funcall() { expr *e = expr_new_wrapper(funcall); e->freestanding = !cc1_warning.unused_fnret; return e; }
expr *expr_new_funcall() { expr *e = expr_new_wrapper(funcall); e->freestanding = 1; return e; }
expr *expr_new_str(char *s, size_t l, int wide, where *w, symtable *stab) { expr *e = expr_new_wrapper(str); expr_mutate_str(e, s, l, wide, w, stab); return e; }
expr *expr_new_cast(decl *to) { expr *e = expr_new_wrapper(cast); e->tree_type = to; return e; }
expr *expr_new_stmt(stmt *code) { expr *e = expr_new_wrapper(stmt); e->code = code; return e; }