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)