[llvm-dev] Expose aliasing information in getModRefInfo (or viceversa?)
Alina Sbirlea via llvm-dev
llvm-dev at lists.llvm.org
Mon Oct 9 13:47:47 PDT 2017
Hi,
This came up in https://reviews.llvm.org/D38569, and I'd like some input on
what's the best way to get alias and mod-ref info without having two alias
calls.
A couple of ideas:
(a) Extend the getModRefInfo interface (+getModRefBehavior,
+gerArgModRefInfo) to return a pair {ModRefInfo, AliasResult}.
The AliasResult can be optional based on an argument
e.g.:
struct MRI_AR { ModRefInfo MRI, AliasResult AR };
MRI_AR getModRefInfoAlias (LoadInst *LI, MemoryLocation Loc, bool
SetAliasResultField);
Add wrapper APIs to preserve current calls.
e.g.:
ModRefInfo getModRefInfo (LoadInst *LI, MemoryLocation Loc) {
return getModRefInfoAlias (LI, Loc, false).MRI;
}
(b) From talking offline with George, introducing a MRI_MustMod in
ModRefInfo.
Open question: How to handle callsites.
In terms of whether this is worth doing, as a preliminary timing test I
timed the llvm bootstrap build with 1 vs 2 alias calls in D38569:
instructionClobbersQuery:296, and got the following:
2 alias calls:
real 62m52.627s
user 2769m46.964s
sys 17m48.072s
1 alias call:
real 62m56.659s
user 2766m40.452s
sys 17m46.312s
Thoughts?
Thanks,
Alina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171009/695af180/attachment.html>
More information about the llvm-dev
mailing list