[cfe-commits] r165273 - in /cfe/trunk: lib/CodeGen/CodeGenFunction.cpp test/CodeGen/catch-undef-behavior.c test/CodeGenCXX/catch-undef-behavior.cpp test/CodeGenCXX/return.cpp

Daniel Dunbar daniel at zuster.org
Wed Jan 23 12:42:48 PST 2013


On Wed, Jan 23, 2013 at 12:08 PM, John McCall <rjmccall at apple.com> wrote:

> On Jan 23, 2013, at 11:57 AM, Daniel Dunbar <daniel at zuster.org> wrote:
>
> On Wed, Jan 23, 2013 at 11:44 AM, Chandler Carruth <chandlerc at google.com>wrote:
>
>>
>> On Wed, Jan 23, 2013 at 11:07 AM, John McCall <rjmccall at apple.com> wrote:
>>
>>> A significant part of the problem, I believe, is that there's a lot of
>>> mostly-externally-maintained C code which, at Apple, happens to need to be
>>> compiled as C++.
>>
>>
>> FWIW, this makes perfect sense, and also makes perfect sense out of a
>> flag to essentially get C's return semantics in a C++ compilation in order
>> to support such code.
>>
>
> This is still the wrong direction of the flag. I just haven't seen good
> justification for changing the compiler in this way to merit the
> possibility of breaking working code.
>
>
> Every change can break working code.  Warning changes can break working
> code if it's compiled with -Werror.  "Show me a whole-percentage speedup or
> take the optimization out" is not really a reasonable response to every
> last proposal.
>

Yes, but that doesn't mean such changes should be made without
consideration either. My argument is that I do not think there is
sufficient user benefit to motivate this change.

 In LLVM and clang, we have a lot of places where we use unreachable
> annotations;  I think Chandler's argument is quite correct that these
> situations come up all the time for many users and that it's ultimately not
> reasonable to expect non-compiler people to use those annotations
> pervasively.
>
> Our specific internal problem that makes this seem like a non-starter is
> that we have a pool of known code that's very awkward to fix.  We do
> control the build environment for that code, though.  For purposes of
> investigation, we can reasonably assume that any project that turns off
> -Wreturn-value should probably also disable the optimization.  Any
> stragglers can be tracked down and fixed just like we would with any other
> compiler change.
>

You are hijacking my argument. My opinion doesn't have anything to do with
an internal problem, I just happen to think this is the wrong choice for
users.

In my opinion, for *most* users and most code it is more important that the
code work than that it be optimal. I think this is the kind of optimization
that compiler hackers and low-level optimization people might find very
desirable, but anyone writing code that depended on it should still be
using an attribute or other marker.

Again in my opinion, for most users, the compiler is just a tool they use
to get work done. They like it to optimize, and they like it to give nice
warnings, but overall they want it to help them get work done and not force
them to change their code.

 - Daniel


> John.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130123/0651b7b8/attachment.html>


More information about the cfe-commits mailing list