Scheduled Instructions go missing

All,
  I'm working on a new scheduler. I have a basic block for
which my scheduler generates bad code. The C code looks
like

int j, *p;
if ((j = *p++) != 0) {...}

My scheduler emits (x86, AT&T)
mov p, %rax
mov (%rax), %rax
mov %rax, j
addq $0x04, p
je ...

Notice there is no test instruction. The default list
scheduler generates

mov p, %rax
mov (%rax), %rax
mov %rax, j
addq $0x04, p
test %rax
je ...

The sequence generated by both schedulers after scheduling
and before emission and they are the same. Specifically,
the test instruction is present in both sequences at the
same point.
  I'm thinking that there is something I set in the SUnits,
but I don't know what that would be. Any ideas?

Aran

All,
  Please dissreguard.

Aran