On Fri, Jul 13, 2012 at 11:41 AM, Dehao Chen <de...@google.com> wrote: > On Fri, Jul 13, 2012 at 3:36 PM, Richard Guenther > <richard.guent...@gmail.com> wrote: >> >> On Fri, Jul 13, 2012 at 9:18 AM, Steven Bosscher <stevenb....@gmail.com> >> wrote: >> > On Fri, Jul 13, 2012 at 3:36 AM, Dehao Chen <de...@google.com> wrote: >> >> I'd suggest: >> >> 1. Remove this unittest for now. >> > >> > And revert the patch for now. >> > >> > >> >> 2. Integrate locus with block, and store them as an index. (This will >> >> incur big operation to GCC) >> > >> > I'm not sure what you mean with "integrate"...? >> > >> > A lot of the code you'll need already exists in emit-rtl.c. That code >> > should be split out to a new file and be shared between rtl and >> > gimple. You'll probably want to make block_locators_locs, >> > block_locators_blocks, and locations_locators_locs part of struct >> > function. The biggest challenges will be avoiding bloat and managing >> > the locators for inlining/cloning... >> >> Btw, we discussed this briefly on the summit with Dodji and libcpp >> virtual locations already provide a way to associate a location_t with >> something else resulting in a new location_t. For inlining we simply have >> to say that the location_t's we use would always refer to the original >> BLOCK (thus, the abstract origin). There is no point to update the BLOCKs >> to point to the copies as far as debug information is concerned (?). > > I'm not quite sure if I understand correctly: we will clone all blocks > and update them during function inline/clone, and assign new > location_t to the cloned gimple/phi_arg_t/expr etc. Otherwise, the > inline stack cannot be maintained, right?
That's true. Richard.