This is an archive of the discontinued LLVM Phabricator instance.

[GVN] Use a simpler form of IRBuilder constructor.
ClosedPublic

Authored by samsonov on Jun 11 2015, 4:42 PM.

Details

Summary

A side effect of this change is that it IRBuilder now automatically
created debug info locations for new instructions, which is the
same as debug location of insertion point. This is fine for the
functions in questions (GetStoreValueForLoad and
GetMemInstValueForLoad), as they are used in two situations:

  • GVN::processLoad, which tries to eliminate a load. In this case new instructions would have the same debug location as the load they eventually replace;
  • MaterializeAdjustedValue, which adds new instructions to the end of the basic blocks, which could later be used to replace the load definition. In this case we don't yet know the way the load would be eventually replaced (either by assembling the precomputed values via PHI, or by using them directly), so just using the basic block strategy seems to be reasonable. There is also a special case in the code that *would* adjust the location of the last instruction replacing the load definition to the location of the load.

Diff Detail

Event Timeline

samsonov updated this revision to Diff 27556.Jun 11 2015, 4:42 PM
samsonov retitled this revision from to [GVN] Use a simpler form of IRBuilder constructor..
samsonov updated this object.
samsonov edited the test plan for this revision. (Show Details)
samsonov added a subscriber: Unknown Object (MLST).
dblaikie accepted this revision.Jun 11 2015, 4:49 PM
dblaikie edited edge metadata.

Looks good to me (Danny might have some thoughts, but can always address them in post commit, etc).

This revision is now accepted and ready to land.Jun 11 2015, 4:49 PM
This revision was automatically updated to reflect the committed changes.