PR c++/36254 wrong "control reaches end of non-void function" warning

Manuel López-Ibáñez lopezibanez@gmail.com
Thu Oct 23 16:05:00 GMT 2008


2008/10/23 Richard Guenther <richard.guenther@gmail.com>:
> On Thu, Oct 23, 2008 at 2:57 AM, Manuel López-Ibáñez
> <lopezibanez@gmail.com> wrote:
>> Now with patch.
>>
>> 2008/10/23 Manuel López-Ibáñez <lopezibanez@gmail.com>:
>>> This is similar case as my patch for PR 31246: more cases of
>>> compiler-generated code. In fact, there is some overlap between them.
>>>
>>> Bootstrapped and regression tested on x86_64-unknown-linux-gnu with
>>> --enable-languages=all,obj-c++ --enable-decimal-float.
>>>
>>> OK for trunk?
>
> Wherever you just set TREE_NO_WARNING or gimple_set_no_warning
> (and not propagate it) during gimplification looks fishy.

Why? As far as I understand all those cases are try/catch/finally that
the compiler constructs and wraps around user code. On the other hand,
I can try to minimize the amount of changes to those required to fix
only the bug reported, if that would make easier to approve the patch.

> It looks like for both patches it might work to just disable these warnings for
> EH related code?  (The propagation of the no-warning flag during gimplification
> _does_ look correct, though)

If the user writes a try/catch he should expect to get warnings for
things there. However, for anything generated by the compiler we
should set no_warning (and if possible DEL_ARTIFICIAL). This is
clearly not done in large parts of the compiler. And the resulting
warnings are very confusing.

Cheers,

Manuel.



More information about the Gcc-patches mailing list