C18のヘルプより
Optimizations will not occur on any function containing inline assembly code.
関数内にインラインアセンブラを記述すると、関数全体が最適化の対象でなくなるという制限。 nop() なんかは実際はインラインアセンブラのマクロだったりするので、気軽に nop() を挟むと実は最適化されないという罠。nop() を1個追加しただけで “can not fit the section” なるエラーになったので何事かと思った次第。