Skip to content
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

Make using C++11 mandatory. See #314 #317

Closed
wants to merge 1 commit into from

Conversation

delcypher
Copy link
Contributor

I will wait for the tests to run. If all pass I will merge this.

@delcypher
Copy link
Contributor Author

Eurgh. Looks like we can't build against LLVM 2.9 with C++11 enabled :(

@ccadar @MartinNowack

Is there any good reason to keep supporting LLVM 2.9 at this point? llvm-gcc is completely dead and has been for while so I don't think we should be supporting this any more.

If you "really need LLVM 2.9 support" you can always checkout older revisions. But I really think we should drop LLVM 2.9

@MartinNowack
Copy link
Contributor

I'm in favor as well to drop LLVM 2.9 support #318

@ccadar
Copy link
Contributor

ccadar commented Dec 17, 2015

I'm happy to do this at some point, but given that we only switched the officially supported version of LLVM from 2.9 to 3.4 last month, it might be a bit early to retire 2.9 completely. Some people might be using it. I can send a message to the mailing list.

@delcypher
Copy link
Contributor Author

I'm happy to do this at some point, but given that we only switched the officially supported version of LLVM from 2.9 to 3.4 last month, it might be a bit early to retire 2.9 completely.

llvm-gcc is completely dead (last released in 2011) and nobody should be using it. Supporting LLVM 2.9 is also holding up development of KLEE

  • Can't use C++11
  • Slows down testing because we have to test a configuration that nobody should be using
  • Supporting really old versions of LLVM is a bad idea because LLVM changes a lot which leads to serious code bloat in KLEE, ideally we should only be supporting the latest stable and one or two releases before, not a release from four years ago.

@ccadar
Copy link
Contributor

ccadar commented Dec 17, 2015

I agree with your points, but I think you speak primarily from the perspective of maintaining KLEE. While I think support for 3.4 is quite mature now, there is still missing support for various intrinsics (we have several open issues I believe) which don't cause issues under 2.9. We have actually been primarily using 2.9 in our research group because we've run into fewer problems, although I think after the recent changes, we should consider a full switch to 3.4. But it's hard to say. One problem that we have is that our regression tests are really weak. We should really invest some time into setting some tests involving real applications -- for example, simply ensuring that we can use KLEE in interpreter mode would allow us to be more confident about switching to newer LLVMs.

@delcypher
Copy link
Contributor Author

I agree with your points, but I think you speak primarily from the perspective of maintaining KLEE.

Yes that is the perspective I am taking.

While I think support for 3.4 is quite mature now, there is still missing support for various intrinsics (we have several open issues I believe) which don't cause issues under 2.9. . We have actually been primarily using 2.9 in our research group because we've run into fewer problems

Those forks of KLEE (for research) forked from the master branch long ago and are probably not incorporating changes from master and so are not effected by the change to C++11. They probably can't easily incorporate changes from master anyway as the code has changed too much.

Although sticking with LLVM 2.9 is pragmatic in the short term (for research purposes), doing so is damaging to the project in the long term because the issues with newer LLVM versions don't get fixed by those using KLEE the most.

One problem that we have is that our regression tests are really weak. We should really invest some time into setting some tests involving real applications -- for example, simply ensuring that we can use KLEE in interpreter mode would allow us to be more confident about switching to newer LLVMs.

Sure. That's something we should definitely do but that is orthogonal to switching to C++11.

@ccadar
Copy link
Contributor

ccadar commented Dec 18, 2015

I'm not sure why you say it's orthogonal to switching to C++11, as this switch directly implies dropping support for 2.9, which is what we are discussing. If I knew that all the code that runs under 2.9 still runs under 3.4, I would be happy to do the switch now.

Otherwise, we should do the switch, but given that we started recommending 3.4 only last month, I think we should wait a few months to see what kind of issues people report, if any.

@delcypher
Copy link
Contributor Author

I'm not sure why you say it's orthogonal to switching to C++11, as this switch directly implies dropping support for 2.9, which is what we are discussing.

It is orthogonal in the sense that switching to C++11 will not make KLEE's ability (assuming LLVM 3.4) to interpret real applications any worse or better. Having this testing (although it would be great to have) is not a prerequisite to building as C++11 instead of C++03.

@MartinNowack
Copy link
Contributor

I have to agree with @ccadar, currently, we can't be sure that the version of LLVM 3.4 is as good as the version provided with LLVM 2.9.
Let's either wait for a couple of months to get feedback from other users or better improve on #320, to streamline the process and make the transition happen earlier.

@delcypher delcypher mentioned this pull request May 23, 2017
@andreamattavelli
Copy link
Contributor

Superseded by #652

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants