This is part of the work to remove TargetMachine::resetTargetOptions.
In this patch, instead of updating global variable TargetOptions::NoFramePointerElim in resetTargetOptions, its use in DisableFramePointerElim is replaced with calls to TargetOptions::noFramePointerElim and TargetFrameLowering::noFramePointerElim. These functions determine on a per-function basis if frame pointer elimination should be disabled.
There is no change in functionality except that cl:opt option "disable-fp-elim" can now override function attribute "no-frame-pointer-elim". I removed the option from test case 2014-08-29-CompactUnwind.ll to prevent it from changing the output (it had no effect previously, but with this patch, it overrides the function attribute).
Should be possible to get rid of this now and just check the command line option?