On 11/03/2016 03:03 PM, Jakub Jelinek wrote: > On Thu, Nov 03, 2016 at 03:02:21PM +0100, Martin Liška wrote: >>> But how would you be able to find out if there isn't any return *ptr; after >>> the scope or similar (as MEM_REF)? With is_gimple_reg, they will be turned >>> into SSA form and you can easily verify (uses of ASAN_POISON are a problem >>> if they are encountered at runtime). What would you do for the >>> must_live_in_memory vars? Add some pass that detects it, handle it somehow >>> in addressable pass, handle it in SRA, ... ? >> >> If there's return of *ptr, there must be a &my_char, and it looks >> _4 = MEM[(char *)&my_char]; >> >> properly identifies that my_char has address taken. > > It doesn't. MEM_REF's ADDR_EXPR isn't considered to be address taking. > > Jakub >
You are of course right, my mistake in the patch draft. Thanks for clarification, Martin