[Intel-gfx] [RFC PATCH] drm/i915: fix potential dangling else problems in for_each_ macros

Daniel Vetter daniel at ffwll.ch
Wed Nov 25 01:23:23 PST 2015


On Tue, Nov 24, 2015 at 11:47:26PM +0000, Chris Wilson wrote:
> On Tue, Nov 24, 2015 at 10:26:01PM +0000, Chris Wilson wrote:
> > On Tue, Nov 24, 2015 at 07:36:25PM +0200, Jani Nikula wrote:
> > >  /* Iterate over initialised rings */
> > >  #define for_each_ring(ring__, dev_priv__, i__) \
> > >  	for ((i__) = 0; (i__) < I915_NUM_RINGS; (i__)++) \
> > > -		if (((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__)))
> > > +		for_each_if ((((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__))))
> > 
> > Idly wondering if we would be happy with
> > 
> > for_each_ring(ring__, dev_priv__)
> > 	for ((ring__) = &(dev_priv__)->ring[0];
> > 	     (ring__) <= &(dev_priv__)->ring[I915_NUM_RINGS];
> > 	     (ring__)++)
> > 	     for_each_if(intel_ring_initialized(ring__))
> > 
> > ?
> > 
> > The downside is that we have used i__ in several places rather than
> > ring->id.
> 
> Fwiw, 13 files changed, 113 insertions(+), 140 deletions(-)
> 
> Seems a reasonable shrinkage.

Maybe for_each_engine even, and phase out for_each_ring completely?
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list