search for: getmostgenerictbaa

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) { >>&gt...
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...