On Wed, Apr 23, 2014 at 01:32:24PM -0700, Richard Henderson wrote:
> On 04/23/2014 12:56 PM, Jeff Law wrote:
> > On 04/22/14 15:38, Richard Henderson wrote:
> >> On 04/22/2014 10:13 AM, David Malcolm wrote:
> >>> On Mon, 2014-04-21 at 18:45 -0400, Trevor Saunders wrote:
> >>>>> --- a/gcc/tree-loop-distribution.c
> >>>>> +++ b/gcc/tree-loop-distribution.c
> >>>>> @@ -687,8 +687,9 @@ generate_loops_for_partition (struct loop *loop,
> >>>>> partition_t partition,
> >>>>>           }
> >>>>>             else if (gimple_code (stmt) == GIMPLE_SWITCH)
> >>>>>           {
> >>>>> +          gimple_switch switch_stmt = stmt->as_a_gimple_switch ();
> >>>>
> >>>> maybe it would make more sense to do
> >>>> else if (gimple_switch switch_stmt = stmt->dyn_cast_gimple_switch ())
> >>>
> >>> Thanks.  Yes, or indeed something like:
> >>>
> >>>    else if (gimple_switch switch_stmt = dyn_cast <gimple_switch> (stmt))
> >>>
> >>> (modulo the "pointerness" issues mentioned in
> >>> http://gcc.gnu.org/ml/gcc-patches/2014-04/msg01334.html )
> >>>
> >>
> >> I'm not keen on embedding assignments into conditionals like this, much 
> >> less
> >> embedding variable declarations as well.  I think David's original is 
> >> perfect.
> > Likewise, though I am less annoyed by such things than I was in the past. 
> > Perhaps that's an artifact of actually liking that kind of style for 'for' 
> > loops.
> 
> I'll admit that with *just* the declaration and assignment in the if,
> it's not that bad, if others are strongly in favor of not reproducing the test
> vs the enum value.

oh, I totally see where your coming from, and tbh I think most of the
hand rolled downcasting in C++ I've written doesn't do it with an
assignment in the if.  That said I think its nice you can limmit the
scope of the variable and have fewer lines.

Trev

> 
> Perhaps I'm just reacting to previous uses of assignments within conditionals
> in gcc, which looked more like
> 
>   if (test1
>       && test2
>       && (x = foo, test3(x))
>       && test4(x)
>       && (y = bar(x), test5))
> 
> and which caused all sorts of trouble.  Especially when the if conditional
> expanded to fill an entire 80x25 screen.
> 
> 
> r~
> 

Attachment: signature.asc
Description: Digital signature

Reply via email to