On Thu, Feb 28, 2013 at 11:36 AM, Sean McBride <span dir="ltr"><<a href="mailto:sean@rogue-research.com" target="_blank">sean@rogue-research.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all,<br>
<br>
Consider this C++:<br>
<br>
-------------------<br>
#include <iostream><br>
int main(int argc, char **argv)<br>
{<br>
  std::ios_base::iostate foo = ~std::ios::failbit;<br>
<br>
  return foo;<br>
}<br>
-------------------<br>
<br>
$ clang --version<br>
clang version 3.3 (trunk 176286)<br>
<br>
$ clang -fsanitize=enum test.cxx<br>
<br>
$ ./a.out<br>
<br>
0x000106017fde: runtime error: load of value 4294967291, which is not a valid value for type 'std::ios_base::iostate' (aka 'std::_Ios_Iostate')<br>
 e8 11 2c 00 00 8b  45 e8 48 83 c4 20 5d c3  90 90 90 90 90 90 90 90  55 48 89 e5 48 83 ec 10  48 b8<br>
             ^<br>
<br>
The C++03 standard does "~ios::failbit" in <a href="http://27.6.1.3/22" target="_blank">27.6.1.3/22</a>, which suggests it's valid and clang is wrong.<br>
<br>
Is this a false positive?<br></blockquote><div><br></div><div>No. This is <a href="http://gcc.gnu.org/PR56158">gcc.gnu.org/PR56158</a></div></div>