Displaying 13 results from an estimated 13 matches for "modrefinfo".
2017 Oct 09
3
Expose aliasing information in getModRefInfo (or viceversa?)
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
SetAliasResultFi...
2017 Oct 09
2
Expose aliasing information in getModRefInfo (or viceversa?)
...gt;
> wrote:
>
>> 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 (Lo...
2017 Oct 09
1
Expose aliasing information in getModRefInfo (or viceversa?)
...mail.com>> wrote:
>
> 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 (LoadIn...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...is odd.
On my clang.bc
Without:
2.2967 ( 53.8%) 0.0242 ( 26.4%) 2.3210 ( 53.2%) 2.3227 ( 53.2%)
Memory SSA
2.3364 ( 53.7%) 0.0246 ( 25.7%) 2.3610 ( 53.1%) 2.3636 ( 53.1%)
Memory SSA
2.3353 ( 54.0%) 0.0258 ( 27.0%) 2.3611 ( 53.4%) 2.3632 ( 53.3%)
Memory SSA
With two getModRefInfo calls:
3.0302 ( 58.8%) 0.0328 ( 29.9%) 3.0630 ( 58.2%) 3.0858 ( 58.2%)
Memory SSA
3.0097 ( 58.9%) 0.0325 ( 30.0%) 3.0422 ( 58.3%) 3.0590 ( 58.3%)
Memory SSA
3.0486 ( 58.8%) 0.0317 ( 29.4%) 3.0804 ( 58.2%) 3.1331 ( 58.3%)
Memory SSA
with alias followed by getModRefInfo...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...Are we instead looking to set a MRI_Must bit, disjunct of MRI_Mod, and
>> test for MRI_Ref&MRI_Must or MRI_Mod&MRI_Must?
>>
>
> Yes.
>
I didn't mean to pick on the example, sorry if that's how it came through.
Since the consensus is to expose the Must info in ModRefInfo, I'm trying to
figure out how to add it in a way that makes sense to me.
The way I see ModRefInfo is designed right now is to lower the lattice to
NoModRef as fast as possible (start with ModRef as top, get to NoModRef as
bottom). The implementation is based on having either Mod or Ref and
mask...
2017 Oct 10
4
Expose aliasing information in getModRefInfo (or viceversa?)
...ust bit, disjunct of MRI_Mod, and
>>> test for MRI_Ref&MRI_Must or MRI_Mod&MRI_Must?
>>>
>>
>> Yes.
>>
>
> I didn't mean to pick on the example, sorry if that's how it came through.
>
> Since the consensus is to expose the Must info in ModRefInfo, I'm trying
> to figure out how to add it in a way that makes sense to me.
> The way I see ModRefInfo is designed right now is to lower the lattice to
> NoModRef as fast as possible (start with ModRef as top, get to NoModRef as
> bottom). The implementation is based on having either...
2015 Jul 28
1
[LLVMdev] AliasSetTracker and UnknownInst's (callsites mostly) problem
...A mayalias %C.
But the same logic when adding callsite is wrong (
findAliasSetForUnknownInst).
Callsite may be known to readonly access one pointer and change the content
of other pointer.
Why to merge together two noalias pointers if they have some mod/ref
relationships with common callsite?
If modrefinfo(%A, %call1) == REF and modrefinfo(%B, %call1) == MOD
it doesn't mean %A may/must alias %B.
AliasSet's for %A and %B must stay independent with corrected access
lattice: aliasset(%A).Access |= RefAccess, aliasset(%B).Access |= ModAccess.
And I think new UnknownInst must be added to both Alia...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...r fp in this example is:
isMustAlias (CallSite argument a, Value a) && getModRefBehavior(CallSite)==
onlyReadsMemory.
So adding a MRI_MustMod is insufficient?
Are we instead looking to set a MRI_Must bit, disjunct of MRI_Mod, and test
for MRI_Ref&MRI_Must or MRI_Mod&MRI_Must?
In getModRefInfo(CS, Loc), the MRI_Must bit would then be set if
doesAccessArgPointees and ArgAlias == MustAlias for all Args, which seems
correct.
I may be missing something here, I don't want to dive into the wrong
implementation.
On Tue, Oct 10, 2017 at 9:16 AM, Alina Sbirlea <alina.sbirlea at gmail.c...
2017 Nov 28
1
Expose aliasing information in getModRefInfo (or viceversa?)
...l Finkel <hfinkel at anl.gov>; Daniel Berlin <dberlin at dberlin.org>;
>> George Burgess IV <george.burgess.iv at gmail.com>; Sanjoy Das <
>> sanjoy at playingwithpointers.com>
>>
>>
>> *Subject:* Re: [llvm-dev] Expose aliasing information in getModRefInfo
>> (or viceversa?)
>>
>>
>>
>> Hi Nuno,
>>
>>
>>
>> Thanks for taking the time to look over this!
>>
>>
>>
>> Here's the reasoning I reached after going over this again.
>>
>>
>>
>> > "...
2015 Jun 13
7
[LLVMdev] AliasAnalysis refactoring for the new pass manager
...9;t *just* results, so I don't like the current name.
Whatever convention we use, we should use a similar one for the ModRef
stuff. ModRefBehavior there already seems to have good names if it were
switched to an enum class outside of AA. ModRefResult I would probably make
ModRefKind, but maybe ModRefInfo? We call the methods getModRefInfo....
Please suggest patterns that you like!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150613/d7e8f2ce/attachment.html>
2016 Aug 29
2
GVN / Alias Analysis issue with llvm.masked.scatter/gather intrinsics
this is definitely a bug in AA.
225 for (auto I = CS2.arg_begin(), E = CS2.arg_end(); I != E; ++I) {
226 const Value *Arg = *I;
227 if (!Arg->getType()->isPointerTy())
-> 228 continue;
229 unsigned CS2ArgIdx = std::distance(CS2.arg_begin(), I);
230 auto CS2ArgLoc = MemoryLocation::getForArgument(CS2,
CS2ArgIdx, TLI);
2016 Aug 29
2
GVN / Alias Analysis issue with llvm.masked.scatter/gather intrinsics
...llvm-dev/attachments/20160829/db3748fd/attachment.html>
-------------- next part --------------
diff --git a/lib/Analysis/AliasAnalysis.cpp b/lib/Analysis/AliasAnalysis.cpp
index f931b6f..ee51067 100644
--- a/lib/Analysis/AliasAnalysis.cpp
+++ b/lib/Analysis/AliasAnalysis.cpp
@@ -155,7 +155,7 @@ ModRefInfo AAResults::getModRefInfo(ImmutableCallSite CS,
if (doesAccessArgPointees(MRB)) {
for (auto AI = CS.arg_begin(), AE = CS.arg_end(); AI != AE; ++AI) {
const Value *Arg = *AI;
- if (!Arg->getType()->isPointerTy())
+ if (!Arg->getType()->isPtrOrPtrVectorTy...
2015 Jun 15
2
[LLVMdev] AliasAnalysis refactoring for the new pass manager
...Unknown,
Partial,
Complete
};
> Whatever convention we use, we should use a similar one for the ModRef stuff. ModRefBehavior there already seems to have good names if it were switched to an enum class outside of AA. ModRefResult I would probably make ModRefKind, but maybe ModRefInfo? We call the methods getModRefInfo....
>
> Please suggest patterns that you like!
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
&g...