1. A compiler for converting source code for a program written in a programming language into an object program written in a machine language comprising: an optimization execution unit for performing optimization of said object program written in said machine language; and a program modification unit for, before said optimization process is performed by said optimization execution unit, modifying said object program to provide a form that is appropriate for said optimization, wherein, when said object program includes a branch, said program modification unit selects at said branch a specific path to extract, relative to said branch, a series of paths that are not merged.