New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixing problems with the Intel compiler using a GCC 4.4 std library #1477
Conversation
This is surprising, the problems fixed here happen when using GCC4.6 as a standard library, at least according my reading of the logs here. Either this change doesn't do anything, or somehow Intel ends up using 4.6 standard library sources while pretending to be 4.4 compiler. That's a huge gap, for instance it means "0.9 rvalue references" (with different implicit special member rules for instance) instead of the real thing, it could easily explain the problems we are seeing. Basically what it means is that we are still supporting GCC4.4, the question is how has this worked so far? |
@K-ballo: I think the problem at hand is slightly more complicated. Our intel 13 builder indeed uses the stdlib from 4.6. The PR description is wrong then. We see two failures:
I am not entirely sure why this is happening. That doesn't mean we still support gcc 4.4, we don't support the compiler frontend. We merely have to support its stdlib. Unfortunately most systems only come equipped with gcc 4.4 plus some version of the intel compiler. The intel compiler itself supports all the necessary C++11 features we need though. |
It has worked so far because we already implemented a few workaround in similar situations. The use of |
LGTM |
We should figure out what this means for us, other than no movable-only types on maps. |
@Finomnis: could you please add/change an Intel V13 builder on buildbot to use stdlibc++ 4.4? This would reproduce the issue and would avoid running into similar issues in the future. |
It does not look like that would reproduce the issue. See 4.4 vs 4.6, they operate under different language rules and each one is correct for the compiler that they target. What we would need is the cross product of all Intel versions we are willing to support with all the "compatibility gcc modes" we are willing to support. |
I'd suggest to support the most commonly used combinations, one for each compiler version. That also implies that we should add build system support to detect those combinations while rejecting all others (at least issuing a warning). |
This PR is removing a compilation error for a particular set of compiler + |
@@ -16,13 +16,18 @@ namespace hpx { namespace serialization | |||
namespace detail | |||
{ | |||
struct ptr_helper; | |||
#if defined(HPX_INTEL_VERSION) && ((__GNUC__ == 4 && __GNUC_MINOR__ == 4) || HPX_INTEL_VERSION < 1400) | |||
typedef boost::shared_ptr<ptr_helper> ptr_helper_ptr; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing include for boost::shared_ptr
usage here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, fixed.
On Saturday, April 25, 2015 08:38:12 Agustín Bergé wrote:
Yes, that would be the best thing to do. I think we can phase out intel13 |
Fixing problems with the Intel compiler using a GCC 4.4 std library
This PR solves a problem with using the intel compiler series with a standard library provided by gcc 4.4.x standard libraries.