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.

Reply via email to