/* The a_arg dance is to avoid annoying whining by compilers that a might be clobbered by longjmp - yeah, it might, but  */
struct arth* gen_neg(compiler_state_t *cstate, struct arth *a_arg)
/* The a_arg dance is to avoid annoying whining by compilers that a might be clobbered by longjmp - yeah, it might, but  */
struct arth* gen_neg(compiler_state_t *cstate, struct arth *a_arg)
{
	struct arth *a = a_arg;
	struct slist *s;
	if (setjmp(cstate->top_ctx))
		return (NULL);
	s = xfer_to_a(cstate, a);
	sappend(a->s, s);
	s = new_stmt(cstate, BPF_ALU|BPF_NEG);
	s->s.k = 0;
	sappend(a->s, s);
	s = new_stmt(cstate, BPF_ST);
	s->s.k = a->regno;
	sappend(a->s, s);
	return a;
}