I saw a few resources where it was stated that data flow analysis is a global code optimization technique. This is a misconception, right? Data flow analysis can be used for code optimization, but it is not a code optimization technique (at least I found no such claim in the Dragon book). If I am right, then this is the reason why option \((C)\) is false, i.e., data flow analysis can always be done (and the information derived from it can always be used for code optimization), irrespective of whether or not code optimization has been done on the intermediate code.
And, I believe option \((D)\) is wrong because the information from the front-end can always be used for optimization, for example – symbol tables (a major portion of which gets filled in via the phases constituting the front-end of the compiler), which the code optimization phase absolutely needs to access.
For option \((B)\), please check my comment here.
And, please correct me if any of the above claims seem to be objectionable.