1. A method for verifying a compiler comprising: receiving a plurality of programs, the plurality of programs comprising at least a source program and a target program corresponding to the source program; receiving a plurality of compiler-generated hints corresponding to the source program; converting the source program into an intermediate representation; converting the target program into an intermediate representation; merging the intermediate source program and the intermediate target program into a merged program; and validating the merged program.