1. A compiler apparatus which translates a first program that includes a loop into a second program, comprising: a movement judgment unit operable to judge whether or not an instruction which is positioned outside of the loop of the first program can be moved into the loop, based on a state of live ranges of variables used in the instruction; a movement execution unit operable to move the instruction into the loop in the case where said movement judgment unit judges that the instruction can be moved into the loop, thereby generating an intermediate program; and a translation unit operable to translate the intermediate program into the second program.