Displaying 20 results from an estimated 40000 matches similar to: "Ambiguity in !tbaa metadata?"
2013 Oct 08
2
[LLVMdev] dragonegg: switch from old TBAA format to the new struct-path aware TBAA format
Hi Duncan,
I am hoping to remove the support for the old TBAA format soon.
You should be able to switch to the new format by replacing
MDNode *AliasTag = MDHelper.createTBAANode(TreeName, getTBAARoot());
with
MDNode *AliasType = MDHelper.createTBAAScalarTypeNode(TreeName,
getTBAARoot());
MDNode *AliasTag = MDHelper.createTBAAStructTagNode(AliasType, AliasType, 0)
Also replacing
2017 Oct 31
3
An ambiguity in TBAA info format
On 31/10/17 01:48, Hal Finkel wrote:
> On 10/30/2017 04:57 PM, Ivan Kosarev via llvm-dev wrote:
>> Hello,
>>
>> Consider these two TBAA access tags:
>>
>> !1 = !{!5, !5, i64 0}
>> !3 = !{!7, !7, i64 0}
>>
>> !5 = !{!"A", !9}
>> !7 = !{!"B", !9}
>
> I'd find this email less confusing if you'd write out all of
2013 Oct 12
0
[LLVMdev] dragonegg: switch from old TBAA format to the new struct-path aware TBAA format
Hi Manman, thanks for the heads up. I looked into what it would take to produce
full struct TBAA metadata from the GCC aliasing info (GCC has aliasing info for
struct types, in fact for any type), but it looks kind of tricky. The problem
is the "offset" field, which doesn't exist in GCC. In GCC the aliasing
information forms a DAG, with a node for each type, plus a special root
2017 Oct 30
2
An ambiguity in TBAA info format
Hello,
Consider these two TBAA access tags:
!1 = !{!5, !5, i64 0}
!3 = !{!7, !7, i64 0}
!5 = !{!"A", !9}
!7 = !{!"B", !9}
The tag !1 describes an access to an object of type "A" and !3 describes
an access to object of type "B".
Both the type descriptors, !5 and !7, refer to node !9 as their type
group. A definition of that node could look like this:
2019 Jun 05
2
llvm-ir: TBAA and struct copies
Hi Ivan,
The code that we have is indeed different from what the 'standard llvm' expects. Let me explain:
in our version we came into this situation in two steps:
1) I added support for 'special types' that map directly to types supported by hardware.
These types are represented by a struct containing a single iXXX member, providing the necessary bits
of the type, and at the
2019 Jun 04
2
llvm-ir: TBAA and struct copies
Hi,
I have a question about the current definition of TBAA (See [1]).
In the LLVM-IR code that we produce, we generate load/stores of struct types. (See [2] and [3] for a godbolt example showing the issue)
For following c-alike code:
struct S { int dummy; short e, f; } x,y;
struct S* p = &x;
int foobar() {
x.f=42;
*p=y; //**** struct copy
return x.f;
}
We produce:
2017 Jan 14
2
Problems with tbaa in llvm 4.0
Hi all,
I do a little work on the GHC haskell compiler. One of the things I
do is compile current GHC git HEAD against the next release of LLVM
to find issues and adapt the GHC code as early as possible.
A recent modification to LLVM is now rejecting GHC generated LLVM
IR that was previously accepted. I discussed this on IRC with
sanjoyd who explained what had changed and gave me some hints
2017 Nov 02
2
RFC: Generate plain !tbaa tags in place of !tbaa.struct ones
On 02/11/17 05:54, Hal Finkel wrote:
>
> On 10/31/2017 05:02 AM, Ivan Kosarev wrote:
>> To clarify further, what this paper proposes is to use !tbaa for all
>> kinds of accesses, including aggregate ones, so we don't need to
>> bother trying to convert them when an aggregate access becomes a
>> series of scalar accesses or vice versa. As I said, in most cases
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
2018 May 19
2
tbaa error: Access type node must be a valid scalar type
Hi
I am upgrading my clang fork from 5.0 to 6.0 and I am hit by this error:
Access type node must be a valid scalar type
%4 = load %"struct.Foo::p.test1::"*, %"struct.Foo::p.test1::"**
%_param.addr, align 8, !tbaa !16
!16 = !{!15, !15, i64 0}
!15 = !{!"p.test1::", !13, i64 0, !13, i64 8}
It looks like !16 is referencing !15, which is a struct. !13 is
!13 =
2017 Oct 31
1
RFC: Generate plain !tbaa tags in place of !tbaa.struct ones
To clarify further, what this paper proposes is to use !tbaa for all
kinds of accesses, including aggregate ones, so we don't need to bother
trying to convert them when an aggregate access becomes a series of
scalar accesses or vice versa. As I said, in most cases such conversions
are not possible anyway, because !tbaa.struct tags do not refer to the
type of the aggregate itself and only
2020 Mar 03
2
TBAA for struct fields
[AMD Public Use]
Hi Oliver,
I get rid of the warnings by explicitly type-casting it to struct*, and still get similar results.
#######################################################
struct P {
float f1;
float f2;
float f3[3];
float f4;
};
void foo(struct P* p1, struct P* p2) {
p1->f2 = 1.2;
p2->f1 = 3.7;
}
int callFoo() {
struct P p;
foo(&p,
2013 Mar 27
1
[LLVMdev] PROPOSAL: struct-access-path aware TBAA (new version)
Hello,
After discussions with Daniel, Dan and others, here is an updated proposal for struct-access-path aware TBAA.
Given an example
struct A {
int x;
int y;
};
struct B {
A a;
int z;
};
struct C {
B b1;
B b2;
int *p;
};
struct D {
C c;
};
The purpose of struct-path-aware TBAA is to say
"C::b1.a" will alias with "B::a.x", "C::b1.a" will alias with
2017 Apr 11
3
TBAA for subset of a loaded value
I'm interested in what we can do about TBAA for loads that the
compiler inserts when optimizing loads into smaller loads (e.g. what
SROA does). I'm gonna set the stage by using a small C snippet,
because I think C has the best-understood implementation of TBAA among
the folks on the list. However, I was unable to actually come up with
an example where this inhibits optimizations coming
2014 Nov 10
2
[LLVMdev] [Vectorization] Mis match in code generated
Hi Suyog,
Thanks for looking at this. This has recently got itself onto my TODO list
too.
> I am not sure how much all this will improve the code quality for
horizontal reduction
> (donno how frequently such pattern of horizontal reduction from same
array occurs in real world/SPECS).
Actually the main loop of 470.lbm can be SLP vectorized like this. We have
three parts to it: A fully
2015 Jun 11
4
[LLVMdev] Question about NoWrap flag for SCEVAddRecExpr
[+Arnold]
> On Jun 10, 2015, at 1:29 PM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
>
> [+CC Andy]
>
>> Can anyone familiar with ScalarRevolution tell me whether this is an
>> expected behavior or a bug?
>
> Assuming you're talking about 2*k, this is a bug. ScalarEvolution
> should be able to prove that {0,+,4} is <nsw> and
2017 Apr 13
2
TBAA falsely reporting may alias?
Hi,
I'm trying to work with Type Based Alias Analysis (TBAA). Here's the example program I'm working with:
;;;;;;;;;;;;;;;;;;;;;;
define void @foo(i64* %a, i64* %b, i64 %x, i64 %y) {
store i64 %x, i64* %a, !tbaa !2 ; write to stack
store i64 %y, i64* %b, !tbaa !3 ; write to heap
ret void
}
!1 = !{!"root"}
!2 = !{!"stack", !1}
!3 = !{!"heap", !1}
2015 Jan 23
2
[LLVMdev] question about enabling cfl-aa and collecting a57 numbers
Without the patch is also returns the wrong answer for all of these, it
just doesn't cause LICM to promote because it returns PartialAlias (which
is still wrong).
We return may-alias instead, and now suddenly it's happy to promote them.
The broken noalias results exist both before and after my patch:
===== Alias Analysis Evaluator Report =====
521 Total Alias Queries Performed
2012 Aug 22
4
[LLVMdev] PROPOSAL: IR representation of detailed struct assignment information
Hello,
Currently LLVM expects front-ends to lower struct assignments into either
individual scalar loads and stores, or calls to @llvm.memcpy. For structs
with lots of fields, it can take a lot of scalar loads and stores, so
@llvm.memcpy is used instead. Unfortunately, using @llvm.memcpy does not
permit full TBAA information to be preserved. Also, it unnecessarily copies
any padding bytes between
2012 Aug 23
1
[LLVMdev] bending the limits of tbaa metadata
Hi,
I work on DDC, the compiler of a research Haskell dialect, Disciple (disciple.ouroborus.net (http://disciple.ouroborus.net)). We are looking to make use of LLVM's type-based alias analysis metadata to encode non-aliasing information between variables. We have found that the tbaa structure is somewhat limited in its expressivity. In particular we couldn't encode intransitive