Correction: the lesson is that you cannot exploit the available ILP by static (compile-time) analysis. There is definitely enough ILP to exploit if you do the analysis at execution time, which is what any modern CPU does with register renaming, reorder buffers, dependency tracking etc.