Displaying 14 results from an estimated 14 matches for "v1size".
2018 Jun 18
2
Question about Alias Analysis with restrict keyword
...o see if these two pointers are related by the
getelementptr
1298 // instruction. If one pointer is a GEP with a non-zero index
of the other
1299 // pointer, we know they cannot alias.
1300
1301 // If both accesses are unknown size, we can't do anything
useful here.
1302 if (V1Size == MemoryLocation::UnknownSize &&
1303 V2Size == MemoryLocation::UnknownSize)
1304 return MayAlias;
1305
1306 AliasResult R = aliasCheck(UnderlyingV1,
MemoryLocation::UnknownSize,
1307 AAMDNodes(), V2,
MemoryLocation::UnknownSize,
1308 ...
2013 Feb 27
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...ow LLVM disambiguates in the basicaa code fragment you quote below.
The code fragment asserts that something can be assumed "no alias" if the access size of an memory access (i.e. a load or store) is bigger than the underlying object of the other accessed object.
For you example below:
V1Size = sizeof(mydata)
V2Size = say 4
assuming that GetUnderlyingObject for addr1 and addr2 returns mydata:
getObjectSize(O1) = sizeof(mydata)
getObjectSize(O2) = sizeof(mydata)
this should be
isObjectSmallerThan(O2, V1Size) == false
isObjectSmallerThan(O1, V2Size) == false
??
>
> In llv...
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...e basicaa code fragment you quote below.
>
> The code fragment asserts that something can be assumed "no alias" if the access size of an memory access (i.e. a load or store) is bigger than the underlying object of the other accessed object.
>
> For you example below:
>
> V1Size = sizeof(mydata)
> V2Size = say 4
>
> assuming that GetUnderlyingObject for addr1 and addr2 returns mydata:
This assumption is wrong. The GetUnderlyingObject() return phi node
instead of &mydata.
>
> getObjectSize(O1) = sizeof(mydata)
> getObjectSize(O2) = sizeof(mydata)
>...
2013 Feb 26
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...ot;object"??????
360 return true;
361 }
Figure 2
cat -n lib/Analysis/BasicAliasAnalysis.cpp
1205 // If the size of one access is larger than the entire object on
the other
1206 // side, then we know such behavior is undefined and can assume
no alias.
1207 if (TD)
1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size,
*TD, *TLI)) ||
1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size,
*TD, *TLI)))
1210 return NoAlias;
-------------- next part --------------
; ModuleID = 'a.c'
target datalayout = "e-p:64:64:64...
2009 Nov 05
0
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
...=========================================================
> --- lib/Analysis/BasicAliasAnalysis.cpp (revision 86023)
> +++ lib/Analysis/BasicAliasAnalysis.cpp (working copy)
> @@ -633,6 +633,15 @@
> AliasAnalysis::AliasResult
> BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size,
> const Value *V2, unsigned V2Size) {
> + // Null pointers do not alias with anything
> + if (const Constant *C = dyn_cast<Constant>(V1))
> + if (C->isNullValue())
> + return NoAlias;
> +
> + if (const Constant *C = dyn_cast&l...
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...361 }
>
> Figure 2
> cat -n lib/Analysis/BasicAliasAnalysis.cpp
> 1205 // If the size of one access is larger than the entire object
> on the other
> 1206 // side, then we know such behavior is undefined and can
> assume no alias.
> 1207 if (TD)
> 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2,
> V1Size, *TD, *TLI)) ||
> 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1,
> V2Size, *TD, *TLI)))
> 1210 return NoAlias;
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...>>> cat -n lib/Analysis/BasicAliasAnalysis.cpp
>>> 1205 // If the size of one access is larger than the entire object on the other
>>> 1206 // side, then we know such behavior is undefined and can assume no alias.
>>> 1207 if (TD)
>>> 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size, *TD, *TLI)) ||
>>> 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size, *TD, *TLI)))
>>> 1210 return NoAlias;
> Best,
> Arnold
2013 Feb 27
4
[LLVMdev] Question about intrinsic function llvm.objectsize
...>> Figure 2
>> cat -n lib/Analysis/BasicAliasAnalysis.cpp
>> 1205 // If the size of one access is larger than the entire object on the other
>> 1206 // side, then we know such behavior is undefined and can assume no alias.
>> 1207 if (TD)
>> 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size, *TD, *TLI)) ||
>> 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size, *TD, *TLI)))
>> 1210 return NoAlias;
Best,
Arnold
2009 Nov 04
5
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
This is the first patch I've sent to this project. Please be gentle :)
LLVM fails to remove the dead load in the following code when running
$./llvm-as -o - test.ll | ./opt -O3 -o - | ./llvm-dis -o -
%t = type { i32 }
declare void @foo(i8*)
define void @f(%t* noalias nocapture %stuff ) {
%p = getelementptr inbounds %t* %stuff, i32 0, i32 0
%before = load i32* %p
call void
2007 Jul 24
1
[LLVMdev] alias information on machine instructions
...it seems that only the value and the
size of the type is relevant for the query. but when i look at the
DAGCombiner an "overlap" is calculated from the type size, the offset
and an other offset. how is this supposed to work?
the arguments of the "alias" function are named "V1Size" and "V2Size",
so it would make sense to pass the size only?
>
>> + SDOperand getVecLoad(unsigned Count, MVT::ValueType VT, SDOperand Chain,
>> + SDOperand Ptr, SDOperand SV);
>
> This is code that was deleted from the LLVM trunk recent...
2008 Aug 18
2
[LLVMdev] Flow-Sensitive AA
...;re at.
It doesn't seem to be enough to say:
AA.alias(load, /* size */, store, /* size */);
because AliasAnalysis wouldn't know which operands we're interested in.
So does AliasAnalysis need an updated interface, something like:
virtual AliasResult alias(const Value *V1, unsigned V1Size,
const Instruction *V1Inst,
const Value *V2, unsigned V2Size,
const Instruction *V2Inst);
? Or am I missing something?
-Dave
2009 Nov 06
2
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
...=====================================
>> --- lib/Analysis/BasicAliasAnalysis.cpp (revision 86023)
>> +++ lib/Analysis/BasicAliasAnalysis.cpp (working copy)
>> @@ -633,6 +633,15 @@
>> AliasAnalysis::AliasResult
>> BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size,
>> const Value *V2, unsigned V2Size) {
>> + // Null pointers do not alias with anything
>> + if (const Constant *C = dyn_cast<Constant>(V1))
>> + if (C->isNullValue())
>> + return NoAlias;
>> +
>> + if (co...
2007 Jul 23
0
[LLVMdev] alias information on machine instructions
On Mon, Jul 23, 2007 at 02:19:38PM +0200, Florian Brandner wrote:
> hi,
>
> i know it took a while, but here is a patch that adds a list of source
> values to machine instructions.
Cool!
> i've testet all this for our backend only, which is not public. i do not
> know how much has to be done to integrate this with the other, e.g., the
> x86, targets. does any of the
2007 Jul 23
1
[LLVMdev] alias information on machine instructions
hi,
i know it took a while, but here is a patch that adds a list of source
values to machine instructions.
i modified the DAGISelEmiter to automatically catch regular
loads/stores. custom instructions and loads/stores rewritten by the
lowering pass are not automatically captured.
during the instruction selection a source value operand is added to the
DAG for patterns matching a load/store.