Displaying 20 results from an estimated 43 matches for "getmostgenerictbaa".
2017 Oct 31
3
An ambiguity in TBAA info format
...this:
>>
>> !9 = !{"omnipotent char", ...}
>>
>> We know that these two accesses should be considered no-alias as
>> neither of them encloses the other; the least common type group for
>> them is !9. TypeBasedAAResult::Aliases() and
>> MDNode::getMostGenericTBAA() respond accordingly and all is good.
>>
>> Then, let's change the definition for the node !9:
>>
>> !9 = !{"int", ...}
>>
>> Now it doesn't look like a type group, but rather a structure member.
>> And nodes !5 and !7 now look as descri...
2017 Oct 30
2
An ambiguity in TBAA info format
...s their type
group. A definition of that node could look like this:
!9 = !{"omnipotent char", ...}
We know that these two accesses should be considered no-alias as neither
of them encloses the other; the least common type group for them is !9.
TypeBasedAAResult::Aliases() and MDNode::getMostGenericTBAA() respond
accordingly and all is good.
Then, let's change the definition for the node !9:
!9 = !{"int", ...}
Now it doesn't look like a type group, but rather a structure member.
And nodes !5 and !7 now look as descriptors for structure types, with
their offset fields added...
2017 Feb 13
2
RFC: Representing unions in TBAA
>
>
> I don't think this fully solves the problem -- you'll also need to fix
> getMostGenericTBAA. That is, even if you implement the above scheme,
> say you started out with:
>
> union U {
> int i;
> float f;
> };
>
> float f(union U *u, int *ii, float *ff, bool c) {
> if (c) {
> *ii = 10;
> *ff = 10.0;
> } else {
> u->i = 10; /...
2017 Feb 14
2
RFC: Representing unions in TBAA
...M, Hubert Tong <
hubert.reinterpretcast at gmail.com> wrote:
> On Mon, Feb 13, 2017 at 2:23 AM, Daniel Berlin via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>>
>>> I don't think this fully solves the problem -- you'll also need to fix
>>> getMostGenericTBAA. That is, even if you implement the above scheme,
>>> say you started out with:
>>>
>>> union U {
>>> int i;
>>> float f;
>>> };
>>>
>>> float f(union U *u, int *ii, float *ff, bool c) {
>>> if (c) {
>>>...
2017 Feb 14
2
RFC: Representing unions in TBAA
...gt; wrote:
>>
>>> On Mon, Feb 13, 2017 at 2:23 AM, Daniel Berlin via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>>
>>>>> I don't think this fully solves the problem -- you'll also need to fix
>>>>> getMostGenericTBAA. That is, even if you implement the above scheme,
>>>>> say you started out with:
>>>>>
>>>>> union U {
>>>>> int i;
>>>>> float f;
>>>>> };
>>>>>
>>>>> float f(union U *u, i...
2017 Aug 14
2
RFC: Representing unions in TBAA
...point is, our approach does not try to describe accesses as (type,
> offset) pairs and instead represents access sequences explicitly beginning
> from the base type followed by field descriptors, which is what makes the
> approach so flexible. TypeBasedAAResult::Aliases() and
> MDNode::getMostGenericTBAA() are a bit more complex than they used to be
> (they actually use the same internal function), but rely exclusively on
> linear scans of access sequences unless we have a situation when have to
> check if one of the accessed types is the type of a member of the other
> one, in which ca...
2017 Mar 01
12
RFC: Representing unions in TBAA
...n we can continue the discussion from there.
>
> Hubert, as for the issue with the llvm optimizations losing the TBAA
> information, it should be the responsibility to make sure the aliasing is
> changed in the correct way. One function related to this has already been
> mentioned: getMostGenericTBAA.
>
> Later,
> Steven Perron
>
>
>
> From: Hubert Tong <hubert.reinterpretcast at gmail.com>
> To: Steven Perron/Toronto/IBM at IBMCA
> Cc: Daniel Berlin <dberlin at dberlin.org>, llvm-dev <
> llvm-dev at lists.llvm.org>, Sanjoy Da...
2017 Feb 15
2
RFC: Representing unions in TBAA
On Tue, Feb 14, 2017 at 11:22 PM, Steven Perron <perrons at ca.ibm.com> wrote:
> 3) How should we handle a reference directly through a union, and a
> reference that is not through the union?
>
> My solution was to look for each member of the union overlaps the given
> offset, and see if any of those members aliased the other reference. If no
> member aliases the other
2017 Feb 13
2
RFC: Representing unions in TBAA
Hello all,
I'm new to the llvm community. I'm learning how things work. I noticed
that there has been some interest in improving how unions are handled. Bug
21725 is one example. I figured it might be a interesting place to start.
I discussed this with a couple people, and below is a suggestion on how
to represent unions. I would like some comments on how this fits in with
how
2017 Apr 07
2
RFC: Representing unions in TBAA
...m there.
>>
>> Hubert, as for the issue with the llvm optimizations losing the TBAA
>> information, it should be the responsibility to make sure the
>> aliasing is changed in the correct way. One function related to
>> this has already been mentioned: getMostGenericTBAA.
>>
>> Later,
>> Steven Perron
>>
>>
>>
>> From: Hubert Tong <hubert.reinterpretcast at gmail.com
>> <mailto:hubert.reinterpretcast at gmail.com>>
>> To: Steven Perron/Toronto/IBM at IBMCA
>>...
2013 Jun 20
0
[LLVMdev] Proposal: type uniquing of debug info for LTO
...alled in Metadata.cpp:
> void MDNode::Profile(FoldingSetNodeID &ID) const {
> + if (profileDebugInfoNode(this, ID))
> + return;
> +
>
> There are other examples of these in MDNode for handling of specific metadata.
> /// Methods for metadata merging.
> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>
> Comments are welcome on whether this violates any layering rule.
>
As I've said many times in email, I don't think this is a go...
2013 Jun 20
9
[LLVMdev] Proposal: type uniquing of debug info for LTO
...&ID);
These static functions are called in Metadata.cpp:
void MDNode::Profile(FoldingSetNodeID &ID) const {
+ if (profileDebugInfoNode(this, ID))
+ return;
+
There are other examples of these in MDNode for handling of specific metadata.
/// Methods for metadata merging.
static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
Comments are welcome on whether this violates any layering rule.
Other choices are:
a> Keep a map in DwarfDebug
Keep in mind that the map is used at m...
2013 Jun 20
2
[LLVMdev] Proposal: type uniquing of debug info for LTO
...oid MDNode::Profile(FoldingSetNodeID &ID) const {
>> + if (profileDebugInfoNode(this, ID))
>> + return;
>> +
>>
>> There are other examples of these in MDNode for handling of specific metadata.
>> /// Methods for metadata merging.
>> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>>
>> Comments are welcome on whether this violates any layering rule.
>>
>
> As I've said many times in email...
2013 Jun 20
2
[LLVMdev] Proposal: type uniquing of debug info for LTO
...in Metadata.cpp:
> void MDNode::Profile(FoldingSetNodeID &ID) const {
> + if (profileDebugInfoNode(this, ID))
> + return;
> +
>
> There are other examples of these in MDNode for handling of specific
> metadata.
> /// Methods for metadata merging.
> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>
> Comments are welcome on whether this violates any layering rule.
>
>
> As I've said many times in email, I don't think thi...
2017 Apr 07
2
RFC: Representing unions in TBAA
...issue with the llvm optimizations losing
>> the TBAA
>> information, it should be the responsibility to make sure the
>> aliasing is changed in the correct way. One function related
>> to
>> this has already been mentioned: getMostGenericTBAA.
>>
>> Later,
>> Steven Perron
>>
>>
>>
>> From: Hubert Tong <hubert.reinterpretcast at gmail.com
>> <mailto:hubert.reinterpretcast at gmail.com>
>> <mailto:hubert.reinte...
2013 Jun 20
0
[LLVMdev] Proposal: type uniquing of debug info for LTO
...etNodeID &ID) const {
>>> + if (profileDebugInfoNode(this, ID))
>>> + return;
>>> +
>>>
>>> There are other examples of these in MDNode for handling of specific metadata.
>>> /// Methods for metadata merging.
>>> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
>>> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
>>> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>>>
>>> Comments are welcome on whether this violates any layering rule.
>>>
>>
>> As I'...
2013 Jun 20
0
[LLVMdev] Proposal: type uniquing of debug info for LTO
...alled in Metadata.cpp:
> void MDNode::Profile(FoldingSetNodeID &ID) const {
> + if (profileDebugInfoNode(this, ID))
> + return;
> +
>
> There are other examples of these in MDNode for handling of specific metadata.
> /// Methods for metadata merging.
> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>
> Comments are welcome on whether this violates any layering rule.
As we've already discussed off list, both Eric & I believe this i...
2013 Jun 21
2
[LLVMdev] Proposal: type uniquing of debug info for LTO
...p;ID) const {
>>> + if (profileDebugInfoNode(this, ID))
>>> + return;
>>> +
>>>
>>> There are other examples of these in MDNode for handling of specific
>>> metadata.
>>> /// Methods for metadata merging.
>>> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
>>> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
>>> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>>>
>>> Comments are welcome on whether this violates any layering rule.
>>>
>>>
>>> As...
2013 Jun 21
0
[LLVMdev] Proposal: type uniquing of debug info for LTO
...e::Profile(FoldingSetNodeID &ID) const {
>> + if (profileDebugInfoNode(this, ID))
>> + return;
>> +
>>
>> There are other examples of these in MDNode for handling of specific
>> metadata.
>> /// Methods for metadata merging.
>> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>>
>> Comments are welcome on whether this violates any layering rule.
>>
>>
>> As I've said many times...
2013 Jun 20
1
[LLVMdev] Proposal: type uniquing of debug info for LTO
...oid MDNode::Profile(FoldingSetNodeID &ID) const {
>> + if (profileDebugInfoNode(this, ID))
>> + return;
>> +
>>
>> There are other examples of these in MDNode for handling of specific metadata.
>> /// Methods for metadata merging.
>> static MDNode *getMostGenericTBAA(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericFPMath(MDNode *A, MDNode *B);
>> static MDNode *getMostGenericRange(MDNode *A, MDNode *B);
>>
>> Comments are welcome on whether this violates any layering rule.
>
> As we've already discussed off list, both...