1. A method, in a data processing system, for prefetching irregular memory references into a software controlled cache, the method comprising: receiving source code that is to be compiled; analyzing the source code to identify at least one of a plurality of loops that contain an irregular memory reference; determining whether the irregular memory reference within the at least one of the plurality of loops is a candidate for optimization; responsive to an indication that the irregular memory reference may be optimized, determining whether the irregular memory reference is valid for prefetching, wherein determining whether the irregular memory reference is valid for prefetching comprises: back-slicing the address of the irregular memory reference to determine whether a computed address for the irregular memory reference contains a cache reference thereby forming a back-sliced address; and responsive to the back-sliced address failing to contain the cache reference, indicating the irregular memory reference as valid for prefetching; responsive to an indication that the irregular memory reference is valid for prefetching, inserting a store statement for an address of the irregular memory reference into the at least one of the plurality of loops; and inserting a runtime library call into a prefetch runtime library for the irregular memory reference, wherein data associated with the irregular memory reference is prefetched into the software controlled cache when the runtime library call is invoked.