For IA-64 architecture, a compiler can aggressively utilize control and data speculation to increase instruction-level parallelism.
Aggressive speculation normally generates many speculative (control-speculative) and advanced (data-speculative) loads with
the same addresses. Traditional redundant load elimination handles only regular loads. It cannot be straightforwardly applied
to removing speculative and advanced loads. In this paper, we present a framework for comprehensive redundant load elimination,
which correctly handles all six types of the following loads: regular loads, advanced loads, check loads, check advanced loads,
speculative loads, and speculative advanced loads. Our preliminary experimental results demonstrate that it is important to
perform comprehensive redundant load elimination in a compiler for architectures supporting control and data speculation.