search for: v1size

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