Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.2.1
-
Solaris 10 and 11
Red Hat Linux
OpenSuSE Linux
SunPro C++ 12.1, 12.2, 12.3Defect is independent of platform and/or compiler.
-
Patch Available
-
Regression, Unit Test Broken
-
Incorrect Behavior
Description
std::valarray<>::operator&& () produces wrong result:
test.cc
#include <iostream> #include <valarray> static const size_t maxlen = 10; void print(const std::valarray<bool>& v) { for (size_t i = 0; i < maxlen; ++i) std::cerr << v[i] << " "; std::cerr << std::endl; } int main() { int nonzero[maxlen] = { 0, 1, 0, 3, 0, -5, 0, -7, 0, -11 }; int one = 1; int ret = 0; size_t i; std::valarray<int> v0 (nonzero, maxlen); std::valarray<bool> v3 (maxlen); for (i = 0; i < maxlen; i++) v3[i] = nonzero[i] && one; std::valarray<bool> v1 = std::operator&& (v0, one); for (i = 0; i < maxlen; i++) { if ((nonzero[i] && one) != v1[i]) ret = 1; } if (ret) { std::cerr << "expected: "; print (v3); std::cerr << "got: "; print (v1); } return ret; }
1. Output from GCC 4.5.0:
[steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:22:47][2463]>> ./v-gcc [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:01][2464]>> echo $status 0
2. Output from SunPro C++ 12.2 with stlport4:
[steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:02][2465]>> ./v-ss122-stlport [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:08][2466]>> echo $status 0
3. Output from SunPro C++ 12.2 with our patched stdcxx:
[steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:10][2467]>> ./v-ss122-stdcxx [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:18][2468]>> echo $status 0
4. Output from Pathscale 4.0.12.1 (which didn't patch stdcxx):
[steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:20][2469]>> ./v-pathscale expected: 0 1 0 1 0 1 0 1 0 1 got: 0 1 0 0 0 0 0 0 0 0 [steleman@darthvader][/src/steleman/programming/stdcxx-ss122/bugfixes-sunw/nothrow][02/08/2012 13:23:24][2470]>> echo $status 1
Patch for stdcxx 4.2.1 to follow shortly.