<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 28, 2014 at 10:54 AM, Philip Reames <span dir="ltr"><<a href="mailto:listmail@philipreames.com" target="_blank">listmail@philipreames.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Chandler, while I actually agree with you in principal, I think
    you're ignoring an important factor.  The pragma approach is already
    widely deployed.  If we don't support pragma usage, there's no real
    migration path for these applications.</blockquote></div><br>I'm not ignoring it in this case, but this is a special and unusual case, so it is somewhat surprising.</div><div class="gmail_extra"><br></div><div class="gmail_extra">
The fact of the matter is that existing usage of this pragma outside of Clang and LLVM is somewhat irrelevant. There were only two proposed uses of this pragma when it was brought up:</div><div class="gmail_extra"><br></div>
<div class="gmail_extra">1) Working around a miscompile in the compiler.</div><div class="gmail_extra">2) Debugging a single function in unoptimized form while the rest of the program was optimized.</div><div class="gmail_extra">
<br></div><div class="gmail_extra">In the first use case, there is no reason to care about existing deployments as those are targeted at fixing a different compiler's miscompiles.</div><div class="gmail_extra"><br></div>
<div class="gmail_extra">In the second case, there is no widespread checked in usage of this pattern because it is only used for the sake of debugging sessions.</div><div class="gmail_extra"><br></div><div class="gmail_extra">
Again, this was discussed previously. The variant on #2 which came up was a header or macro that enabled the pragma for one TU at a time in a somewhat programmatic way. However, the response was that it would be much better to do this at the build system level, and there was never any real argument against that.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">In general, the use cases for this *particular* pragma seem vanishingly small. It does not establish an ABI, provide a semantic contract, or control diagnostics. It is not something that would be expected to be checked into a codebase long term and work across implementations (see #1). So I don't think the legacy application concerns apply in this case.</div>
</div>