search for: codegentbaa

Displaying 6 results from an estimated 6 matches for "codegentbaa".

2018 Apr 27
1
TBAA metadata
...ul AliasAnalysis methods<https://llvm.org/docs/AliasAnalysis.html#OtherItfs>). The TBAA root of the access type and the base type of an access tag must be the same, and that is the TBAA root of the access tag." (https://llvm.org/docs/LangRef.html#tbaa-metadata) But, from what I see, the CodeGenTBAA pass never sets this field. CodeGenTBAA::getAccessTagInfo() calls createTBAAStructTagNode() to create the access tag, but it does not pass the IsConstant parameter. /// \brief Return metadata for a TBAA tag node with the given /// base type, access type and offset relative to the base type....
2019 Jan 14
2
Aliasing rules difference between GCC and Clang
...otent char", !5, i64 0} !5 = !{!"Simple C/C++ TBAA"} This makes all the stores alias, which is overly conservative, as %struct.A and %struct.B do not alias. It seems that when the struct member is an array, the base type becomes the element type. This is simply unhandled still in CodeGenTBAA ("TODO"). My question then is if it would be possible to instead create the DAG nodes !"A" and !"B" (as in the first type DAG above) and use them as the base types and then have the access type to be !"int", with the right offset into the struct node? A...
2019 Jan 18
2
Aliasing rules difference between GCC and Clang
Hi Ivan, On 2019-01-17 18:09, Ivan Kosarev wrote: > Hello, Jonas, > > > It seems that when the struct member is an array, the base type > > becomes the element type. This is simply unhandled still in > > CodeGenTBAA ("TODO"). My question then is if it would be > > possible to instead create the DAG nodes !"A" and !"B" (as in > > the first type DAG above) and use them as the base types and > > then have the access type to be !"int", with the right offset...
2011 Dec 05
0
[LLVMdev] tbaa
...lias sets for 7 pointer values. AliasSet[0x207f860, 7] may alias, Mod/Ref Pointers: (i32* %1, 4), (i32* %x, 4), (i32** %p, 8), (i32** %q, 8), (float* %z, 4), (float** %t, 8), (i32* %2, 4) I guess it is because of the way how TBAA alias analysis treats pointers. See file: tools/clang/lib/CodeGen/CodeGenTBAA.cpp, line 147&148 147 if (Ty->isPointerType()) 148 return MetadataCache[Ty] = getTBAAInfoForNamedType("any pointer", 149 getChar()); For any pointer, no matter which object it points to, TBAA will generate t...
2011 Dec 05
2
[LLVMdev] tbaa
Duncan Sands <baldrick <at> free.fr> writes: > > Hi Yi, > > > Could anyone tell me how exactly do I use "Type Based Alias Analysis"? > > > > I compiled the C program with Clang, and verified that there is tbaa > > metadata in the IR code. > > > > But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results,
2011 Dec 06
3
[LLVMdev] tbaa
...s. >  AliasSet[0x207f860, 7] may alias, Mod/Ref   Pointers: (i32* %1, 4), > (i32* %x, 4), (i32** %p, 8), (i32** %q, 8), (float* %z, 4), (float** %t, > 8), (i32* %2, 4) > > I guess it is because of the way how TBAA alias analysis treats pointers. > See file: tools/clang/lib/CodeGen/CodeGenTBAA.cpp, line 147&148 > >    147   if (Ty->isPointerType()) >    148     return MetadataCache[Ty] = getTBAAInfoForNamedType("any pointer", >    149                                                        getChar()); > > For any pointer, no matter which object it points...