This is an archive of the discontinued LLVM Phabricator instance.

Mark that SpeculativeExecution preserves Globals Alias Analysis.
ClosedPublic

Authored by kristof.beyls on May 2 2016, 7:40 AM.

Details

Summary

A few benchmarks with lots of accesses to global variables in the hot
loops regressed a lot since r266399, which added the
SpeculativeExecution pass to the default pipeline. The problem is that
this pass doesn't mark Globals Alias Analysis as preserved. Globals
Alias Analysis is computed in a module pass, whereas
SpeculativeExecution is a function pass, and a lot of passes dependent
on the Globals Alias Analysis to optimize these benchmarks are also
function passes. As such, the Globals Alias Analysis information cannot
be recomputed between SpeculativeExecution and the following function
passes needing that information.

SpeculativeExecution doesn't invalidate Globals Alias Analysis, so mark
it as such to fix those performance regressions.

Diff Detail

Repository
rL LLVM

Event Timeline

kristof.beyls retitled this revision from to Mark that SpeculativeExecution preserves Globals Alias Analysis..
kristof.beyls updated this object.
kristof.beyls added reviewers: jlebar, chandlerc.
kristof.beyls added a subscriber: llvm-commits.
jlebar accepted this revision.May 2 2016, 11:18 AM
jlebar edited edge metadata.

Thank you for finding this!

This revision is now accepted and ready to land.May 2 2016, 11:18 AM
chandlerc accepted this revision.May 2 2016, 1:02 PM
chandlerc edited edge metadata.

LGTM (too)

This revision was automatically updated to reflect the committed changes.