On Tue, Jun 03, 2014 at 01:33:39PM +0400, Yury Gribov wrote: > >Also note (but, already preexisting issue) is that the > >__asan_report* and __asan_{load,store}* calls are declared in > >sanitizer.def as having 1st argument PTR type, while in the library > >it is uptr (aka PTRMODE). So, either we should fix up sanitizer.def > >to match that (we were passing already base_addr which is integral, > >not pointer), or if we keep sanitizer.def as is, we should pass > >to the calls base_ssa instead of base_addr. > > Which solution is better for middle-end? Would casting to uptr > complicate alias analysis or somehow damage optimization > capabilities of further passes?
Supposedly at least for use_calls case pretending the argument is void * instead of uptr would result in smaller IL (no need to cast it to integral type). > Frankly I don't understand why libsanitizer prefers uptr to void*'s > and size_t's... Supposedly because then you don't have to cast it on the library side if you want to perform masking/shifting etc. on it. But that doesn't sound like a very strong argument. Jakub