[GVN] Use a simpler form of IRBuilder constructor.
authorAlexey Samsonov <vonosmas@gmail.com>
Fri, 12 Jun 2015 01:39:48 +0000 (01:39 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Fri, 12 Jun 2015 01:39:48 +0000 (01:39 +0000)
commit9947e48cd1d75d00271a0f83374981a6e56c7656
tree1ddd6c1729b4d48afbe29ebece02ee0c3e37696c
parentff449802c2d890be466ac7a96ebbd9f78a4597ca
[GVN] Use a simpler form of IRBuilder constructor.

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.

Test Plan: regression test suite

Reviewers: echristo, dberlin, dblaikie

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D10405

llvm-svn: 239585
llvm/lib/Transforms/Scalar/GVN.cpp
llvm/test/Transforms/GVN/load-pre-nonlocal.ll