On 03/06/2018 09:28 AM, Richard Biener wrote:
> On Tue, Mar 6, 2018 at 1:00 PM, Prathamesh Kulkarni
> <prathamesh.kulka...@linaro.org> wrote:
>> For the following test-case,
>> int a;
>> static void foo()
>> a = 3;
>> int main()
>> a = 4;
>> foo ();
>> return a;
>> I assume it's safe to remove "a = 4" since 'a' would be overwritten
>> by call to foo ?
>> IIUC, ipa-reference pass does mod/ref analysis to compute side-effects
>> of function call,
>> so could we perhaps use ipa_reference_get_not_written_global() in dse
>> pass to check if a global variable will be killed on call to a
>> function ? If not, I suppose we could write a similar ipa pass that
>> computes the set of killed global variables per function but I am not
>> sure if that's the correct approach.
> Do you think the situation happens often enough to make this worthwhile?
> ipa-reference doesn't compute must-def, only may-def and may-use IIRC.
This dead write optimization sounds similar to "DeadSpy: a tool to pinpoint
program inefficiencies" by Milind Chabbi and John Mellor-Crummey of Rice
The abstract says there were numerous dead writes in the SPEC 2006 gcc
benchmark and eliminating those provided average 15% improvement in performance.