[llvm-commits] [PATCH] Phi speculation improvement for BasicAA
Hal Finkel
hfinkel at anl.gov
Fri Nov 16 16:57:13 PST 2012
----- Original Message -----
> From: "Eli Friedman" <eli.friedman at gmail.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Commit Messages and Patches for LLVM" <llvm-commits at cs.uiuc.edu>
> Sent: Friday, November 16, 2012 6:30:49 PM
> Subject: Re: [llvm-commits] [PATCH] Phi speculation improvement for BasicAA
>
> On Fri, Nov 16, 2012 at 4:16 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> > Hello,
> >
> > As a followup, and partial solution, to PR14351, the attached patch
> > removes some of the special significance of the first incoming phi
> > value in the phi aliasing checking logic in BasicAA. In the
> > context of a loop, the current logic assumes that the first
> > incoming value is the interesting one (meaning that it is the one
> > that comes from outside the loop), but this is often not the case.
> > With this patch, we now test first the incoming value that comes
> > from a block other than the parent of the phi being tested. This
> > is important for, among other things, alias-analysis-based
> > instruction dependency breaking for instruction scheduling.
> >
> > As noted in the PR, Arnold is currently working on a more general
> > solution. In the mean time, this fix captures several cases I need
> > (and has an associated test case). Please review.
>
> --- a/lib/Analysis/BasicAliasAnalysis.cpp
> +++ b/lib/Analysis/BasicAliasAnalysis.cpp
> @@ -1065,9 +1065,15 @@ BasicAliasAnalysis::aliasPHI(const PHINode
> *PN,
> uint64_t PNSize,
> if (PN > V2)
> std::swap(Locs.first, Locs.second);
>
> + // Find the first incoming phi value not from its parent.
> + unsigned f = 0;
> + for (; PN->getIncomingBlock(f) == PN->getParent(); ++f);
>
> Try to avoid for loops with an empty body, e.g. "while
> (PN->getIncomingBlock(f) == PN->getParent()) { ++f; }". Or if you
> really like the for loop, at least put the ";" on a separate line.
>
> Also, this loop isn't guaranteed to terminate in unreachable code.
>
>
> It would be nice if you could simplify the testcase a bit more.
Eli, thanks! I've turned to loop into a while (and fixed it so that it won't run off the end of the list in unreachable code), and cleanup up the test case. How's this?
-Hal
>
> -Eli
>
--
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
A non-text attachment was scrubbed...
Name: phi_spec_order2.patch
Type: text/x-patch
Size: 5683 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121116/f6b18872/attachment.bin>
More information about the llvm-commits
mailing list