search for: unknownsize

Displaying 20 results from an estimated 21 matches for "unknownsize".

2018 Jun 18
2
Question about Alias Analysis with restrict keyword
...s 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                                V2AA...
2017 Nov 17
2
Propagating noalias annotation
On 11/17/2017 02:01 AM, Hongbin Zheng wrote: > Do you mean a and b are noalias if: > > static int foo(int *a, int *b) { > return a[0] + b[0]; > } > > int bar(int *x) { > return foo(x+1, x); > } > > ? > > To me, because "AA.alias((x+1, MemoryLocation::UnknownSize), > (x, MemoryLocation::UnknownSize)) != NoAlias", so a and b are not noalias. Remember that MemoryLocation::UnknownSize is unknown, but positive. So you need to check both "AA.alias((x+1, MemoryLocation::UnknownSize), (x, MemoryLocation::UnknownSize)) == NoAlias" and "AA...
2017 Nov 17
3
Propagating noalias annotation
On 11/17/2017 01:49 AM, Hongbin Zheng wrote: > Could you elaborate "Note that, without further analysis of the uses > of the potentially-noalias pointers, you can do this only ..."? > Why the uses, instead of the def, of pointer matter? Both matter. static int foo(int *a, int *b) { return a[0] + b[1]; } int bar(int *x) { return foo(x+1, x); } You can't mark a and
2020 Mar 18
2
valid BasicAA behavior?
...lists.llvm.org>: > All I am expecting from DA is a direction vector containing (*). There seems to be a bug in DI, see Felipe's answer. > I think the main problem is that currently there is no exact way DA can query AliasAnalysis in a ‘conservatively correct’ manner. > > Using UnknownSize seems to be an approximate solution (workaround). Passing an unknown size is conservatively correct. That is, it must be correct for any possible size. Yes, we could be better if we know all the array elements that are accessed. Unfortunately it is also difficult, e.g. because the access range de...
2013 Feb 26
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...quot;?????? 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-i1:8:8-i8:8:8-...
2013 Feb 27
0
[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;
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
2020 Mar 19
2
valid BasicAA behavior?
Am Mi., 18. März 2020 um 18:15 Uhr schrieb Chawla, Pankaj <pankaj.chawla at intel.com>: > > >> DependenceInfo is not using the AA interface correctly. Either DI has to be fixed, or another method added to AA that gives additional guarantees. Please see the bug report for details. > > Thanks for updating the bug report but GetUnderlyingObject() doesn't help in this case.
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...t; 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
2018 Jun 20
2
adding 2 new functions to the AliasAnalysis interface
Hi, RFC Im adding 2 new functions to the AliasAnalysis interface: 1) ModRefSameBufferCheck: this function will receive 2 memoryLocation as parameters, and returns true if the parameters are modifying or refering the same buffer or same memory block, false otherwise. 2) getAddressesDistance: the function will recieve 2 memoryLocation, if they are mod/ref-ing the same buffer/memory block, the
2013 Feb 27
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...alysis/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 >
2020 Mar 17
1
valid BasicAA behavior?
AliasAnalysis and dependence analysis answer different problems. AA check whether two memory ranges accessed at the same time (i.e. in the same iteration) do not overlap. DI checks when two accesses, not necessarily executed in the same iteration, do overlap. DI makes use of AA in verifying that the base pointer (with unknown size), at the beginning of the loop, themselves do not overlap. If they
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...sAnalysis.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
2018 May 22
2
DSE: Remove useless stores between malloc & memset
You might want to look more carefully at how you're constructing the MemoryLocation.   The first argument is a pointer, and the second argument is the number of bytes pointed to by that pointer (or MemoryLocation::UnknownSize if the number of bytes accessed isn't known). More generally, copy-pasting code you don't understand isn't a good idea. -Eli On 5/22/2018 4:02 PM, Dávid Bolvanský wrote: > IR: > define i32 @calloc_strlen_write_between() { >   %call = tail call noalias i8* @calloc(i32 10, i32...
2008 Feb 15
0
Error RODBC: Random termination of R
...) > channel RODB Connection 1 Details: case=tolower DSN=crtedb DATABASE=valid SERVER=10.3.1.91 PORT=5432 SSLMODE=prefer UID=uleopold PWD=****** ReadOnly=Yes FakeOidIndex=No ShowOidColumn=No RowVersioning=No ShowSystemTables=No ConnSettings= Fetch=100 Socket=8192 UnknownSizes=0 MaxVarcharSize=254 MaxLongVarcharSize=8190 Debug=0 CommLog=0 Optimizer=1 Ksqo=1 UseDeclareFetch=0 TextAsLongVarchar=1 UnknownsAsLongVarchar=0 BoolsAsChar=1 Parse=0 CancelAsFreeStmt=0 ExtraSysTablePrefixes=dd_ LFConversion=0 UpdatableCursors=0 DisallowPremature=0...
2018 May 22
0
DSE: Remove useless stores between malloc & memset
...GMT+02:00 Friedman, Eli <efriedma at codeaurora.org>: > You might want to look more carefully at how you're constructing the > MemoryLocation. The first argument is a pointer, and the second argument > is the number of bytes pointed to by that pointer (or > MemoryLocation::UnknownSize if the number of bytes accessed isn't known). > > More generally, copy-pasting code you don't understand isn't a good idea. > > -Eli > > > On 5/22/2018 4:02 PM, Dávid Bolvanský wrote: > > IR: > define i32 @calloc_strlen_write_between() { > %call = tail...
2005 Feb 22
6
rodbc or unixodbc error
Hi, I'm trying to establish a connection to a MySQL database, and am using the rodbc package for it. This is in a GNU/Debian Linux box, with the corresponding Debian unstable packages. I can login to my MySQL databases from any shell and directory, so the problem is probably not there. Here's an example of what I'm doing: R> odbcConnect("test",
2014 Nov 14
6
[LLVMdev] Upcoming Changes/Additions to Scoped-NoAlias metadata
...l is uncommon, and in some sense it is, but this is exactly what the loop vectorizer does when partitioning memory accesses in a loop into potential aliasing sets. The loop vectorizer partitions a loop's memory accesses by taking the access's natural Location object, and setting the size to UnknownSize (the largest representable size) and querying using that infinite-size Location. The logic is that if two access don't alias with both sizes set to infinity, then they must always come from disjoint sets of underlying objects, and because the vectorizer only considers access pointers that are l...
2018 May 22
0
DSE: Remove useless stores between malloc & memset
IR: define i32 @calloc_strlen_write_between() { %call = tail call noalias i8* @calloc(i32 10, i32 1) store i8 97, i8* %call, align 1 %call1 = tail call i32 @strlen(i8* %call) ret i32 %call1 } static bool eliminateStrlen(CallInst *CI, BasicBlock::iterator &BBI, AliasAnalysis *AA, MemoryDependenceResults *MD, const DataLayout &DL, const TargetLibraryInfo *TLI,
2018 May 22
2
DSE: Remove useless stores between malloc & memset
It works with MemoryLocation MemoryLocation::get(const CallInst *CI) { AAMDNodes AATags; CI->getAAMetadata(AATags); const auto &DL = CI->getModule()->getDataLayout(); return MemoryLocation(CI, DL.getTypeStoreSize(CI->getType()), AATags); } Is it fine? :) 2018-05-22 23:56 GMT+02:00 Dávid Bolvanský <david.bolvansky at gmail.com>: > Looks like there are many overloads