← Back to team overview

maria-developers team mailing list archive

Re: RFC: Compile-time checking for unmatched DBUG_ENTER/LEAVE via unused variable

 

Stewart,

You're right that it's entirely up to the optimizer to optimize out that
variable (and in fact I hope that it would). That should not change the
"unused-variable" warning though, as that static analysis done by the
compiler happens much earlier, as far as I know. That is, the detection of
the variable being unused should be completely independent of the
optimizer's decision to eliminate the variable entirely.

Regards,

Jeremy


On Wed, Aug 7, 2013 at 2:14 AM, Stewart Smith <stewart@xxxxxxxxxxxxxxxx>wrote:

> Jeremy Cole <jeremycole@xxxxxxxxxx> writes:
> > The attached patch adds what amounts to compile-time checking for
> unmatched
> > DBUG_ENTER/DBUG_LEAVE (DBUG_RETURN, DBUG_VOID_RETURN) by introducing a
> > variable in DBUG_ENTER which is only used in DBUG_LEAVE. This allows any
> > compiler which can robustly detect unused variables to detect the
> mismatch
> > at compile-time. There is already a run-time check for this case, but it
> is
> > somewhat limited as it requires _db_return_ to be called in order to
> detect
> > the mismatch, and this is in practice not always the case. Particularly
> > three cases allow this to escape detection:
>
> Ideally we'd be able to check for gcc attribute noreturn but I'm not
> sure there's a way to do that (as it's not a preproceessor thing).
>
> I'm pretty sure that with some optimization levels that the temp
> variable can get optimized out (although I haven't looked at the
> produced code).
>
> Personally, looks good and I'm tempted to pull it into Percona Server.
> --
> Stewart Smith
>

References