<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 25, 2015 at 11:14 AM, Simon Atanasyan <span dir="ltr"><<a href="mailto:simon@atanasyan.com" target="_blank">simon@atanasyan.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Mar 25, 2015 at 9:02 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
><br>
> On Wed, Mar 25, 2015 at 10:55 AM, Simon Atanasyan <<a href="mailto:simon@atanasyan.com">simon@atanasyan.com</a>><br>
> wrote:<br>
>><br>
>> On Wed, Mar 25, 2015 at 8:42 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
>> ><br>
>> > On Wed, Mar 25, 2015 at 10:38 AM, Simon Atanasyan <<a href="mailto:simon@atanasyan.com">simon@atanasyan.com</a>><br>
>> > wrote:<br>
>> >><br>
>> >> By the way, what do you suggest to silence the VC++ warning?<br>
>> ><br>
>> > Disabling the warning, this is a false positive because some<br>
>> > instantiations<br>
>> > of the template produce non-zero results out of this shift and the fact<br>
>> > that<br>
>> > some other instantiations always produce 0 is fine. Same goes for<br>
>> > template-conditionally dead code, etc.<br>
>><br>
>> In fact I am satisfied by the current code as well as by you<br>
>> suggestion. The only problem - I do not have access to VC++ so cannot<br>
>> surround the code by appropriate warning disabling pragmas and check<br>
>> that they work.<br>
><br>
><br>
> Nah, I'm suggesting a somewhat more aggressive patth forward: disable the<br>
> warning entirely for the LLVM build. Andy Kaylor recently submitted a patch<br>
> to disable a bunch of noisy MSVC warnings & I'd suggest we just add this one<br>
> to the list.<br>
<br>
</div></div>Hmm, but what about a non-template code like below? In this case the<br>
warning can help to detect the problem. No?<br></blockquote><div><br>It can, but it doesn't sound like we've really had a problem with bugs like this (though I wouldn't object to someone implementing the warning correctly in clang & us using it - it doesn't seem to be a priority).<br><br>It's certainly possible people are writing such bugs, finding them in testing, and not many manage to survive in the codebase long enough to have reached the cleanup Andy was doing (or even to reach the MSVC warning/be cleaned up previously - I don't recall seeing this warning cropping up/being fixed previously, but it's certainly possible) and that the warning would help catch it earlier & save someone some debugging time.<br><br>- David<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
uint8_t getData();<br>
<br>
uint32_t foo() {<br>
  // for example, initially getData() returned uint32_t,<br>
  // or 8 is a typo and should be 7, etc<br>
  return getData() << 8;<br>
}<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Simon Atanasyan<br>
</font></span></blockquote></div><br></div></div>