1. A method for implementing shadow versioning to improve data dependence analysis for instruction scheduling in compiling code, the method comprising: identifying a plurality of loops within the code; for each loop of the plurality of loops: identifying an original shadow symbol accessed in the loop; initializing a dependence matrix having N rows and N columns for N accesses to the original shadow symbol in the loop, wherein an i th row vector represents a dependence relationship between the i th access to the shadow symbol and all the accesses to the same shadow in the loop; for each original shadow symbol accessed in the loop, performing: examining dependencies between an access pair X, Y to the original shadow symbol; storing dependence vectors for a given access in the dependence matrix as N row vectors; comparing the dependence vectors; classifying the dependence vectors into an X-set and a Y-set based on the access pairs X, Y, wherein accesses in a common set includes common dependence vectors; generating a new shadow symbol for each set; replacing the original shadow symbol with the new shadow symbol for a corresponding access in the code; generating alias relationships between the newly created shadow symbols; performing instruction scheduling for the code; and compiling the code.