tberghammer added a comment.

In http://reviews.llvm.org/D16769#340936, @clayborg wrote:

> Looks fine. A few things I don't like, but I can live with:
>
> - Making constructors appear all on one line does save space, but it means 
> you can't debug very well as stepping into these constructors will stop on 
> the constructor line and then if you step, you will step  over and out of the 
> entire thing. Granted these classes are very simple and probably don't 
> require debugging anymore, but it is a drawback to clang-format.


I think if this is not the format we want then we should check clang-format to 
support our use case. In this specific case I think putting everything in 1 
line is fine as you see the function arguments when you step in and I also 
think clang-format will do something different for constructors with more code 
in them.

> - Many functions had variables that were put into temporaries like:

> 

>   ``` bool DoesAdjoinOrIntersect (const Range &rhs) const { const BaseType 
> lhs_base = this->GetRangeBase(); const BaseType rhs_base = 
> rhs.GetRangeBase(); const BaseType lhs_end = this->GetRangeEnd(); const 
> BaseType rhs_end = rhs.GetRangeEnd(); bool result = (lhs_base <= rhs_end) && 
> (lhs_end >= rhs_base); return result; } ```

> 

>   were reduced to lines like the following:

> 

>   ``` bool DoesAdjoinOrIntersect(const Range &rhs) const { return 
> GetRangeBase() <= rhs.GetRangeEnd() && GetRangeEnd() >= rhs.GetRangeBase(); } 
> ``` So I see the efficiency, but if I step into this function now it means 
> less useful debugging as you will be stepping into and out of functions and 
> you will lose the values and not be able to see what is going on. The 
> compiler will get rid of the temporary variables when it optimizes things so 
> I am not sure why these changes make things better.


I made these changes intentionally because I feel that inlining these 
temporaries improve the readability as you don't have to match the very similar 
6-7 letter words by eye and it shouldn't hurt debugging too much because you 
can either evaluate the expression you are interested or just display "*this" 
or "rhs" as a frame variable. From efficiency perspective they won't matter if 
the types used are basic types (PODs) but if the compiler can optimize them out 
if they have a non-trivial constructor/destructor. I can revert those if you 
want.


http://reviews.llvm.org/D16769



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to