Can you tell us your compiler optimization level, and whether register coloring, instruction scheduling, and/or peephole optimizations are enabled?  I seem to only reproduce this with level 0 optimizations (which I ordinarily do not use) and the peephole optimizer enabled, though my assembly is different than yours.  Hopefully that might be an easy workaround for you.
 
Level 1 and peephole (OK):
 
int a = -10003;
a = -10002 - a;
000020FA: 203CFFFFD8EE    move.l   #-10002,d0
00002100: 0480FFFFD8ED    subi.l   #-10003,d0
00002106: 2D40FFFC        move.l   d0,-4(a6)
 
Level 0 and no peephole (OK):
 
int a = -10003;
000025AA: 203CFFFFD8ED    move.l   #-10003,d0
000025B0: 2D40FFFC        move.l   d0,-4(a6)
a = -10002 - a;
000025B4: 203CFFFFD8EE    move.l   #-10002,d0
000025BA: 90AEFFFC        sub.l    -4(a6),d0
000025BE: 2D40FFFC        move.l   d0,-4(a6)
 
Level 0 and peephole (BUG):
 
int a = -10003;
000022EE: 203CFFFFD8ED    move.l   #-10003,d0
000022F4: 2D40FFFC        move.l   d0,-4(a6)
a = -10002 - a;
000022F8: 223CFFFFD8EE    move.l   #-10002,d1
000022FE: 93AEFFFC        sub.l    d1,-4(a6)