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

Drop support for LLVM9 #5121

Merged
merged 5 commits into from
Oct 19, 2020
Merged

Drop support for LLVM9 #5121

merged 5 commits into from
Oct 19, 2020

Conversation

steven-johnson
Copy link
Contributor

Since LLVM trunk just got bumped to v12, we can consider dropping LLVM9 support. This PR revises the checks for minimum versions to require v10, and removes all conditional code that is no longer required.

(Note, this will fail until some buildbot updates are done.)

@abadams
Copy link
Member

abadams commented Jul 15, 2020

There's a delay between llvm trunk going to 12 and llvm 11 being released. Our policy is the last two released llvm versions, which I think is currently 9 and 10.

@steven-johnson
Copy link
Contributor Author

Yeah, no rush to land this (hence the draft status), just wanted to have it ready to go while I was elbow-deep in related stuff

@steven-johnson steven-johnson marked this pull request as ready for review July 16, 2020 18:54
…0 committer Steven Johnson <srj@google.com> 1594925723 -0700

Drop support for LLVM9

Since LLVM trunk just got bumped to v12, we can consider dropping LLVM9 support. This PR revises the checks for minimum versions to require v10, and removes all conditional code that is no longer required.
@benoitsteiner
Copy link
Contributor

Can we keep the code needed to support older versions of LLVM for a bit longer ? We're still in the process of upgrading to LLVM 9 for a large part of our codebase, so we're going to need this for a while.
I'm ok with having no support from the maintainers if we end up finding a bug related to LLVM9. I would compile the code in another environment that we just upgraded to LLVM10 before filing bugs for example.

@abadams
Copy link
Member

abadams commented Jul 27, 2020

FWIW, this won't go in until the latest llvm release is actually 11, which hasn't happened yet: https://releases.llvm.org/

Trying to think about the cost of supporting old LLVM versions. I think it's:

  1. Buildbot capacity
  2. Code complexity (lots of ifdefs to read through)
  3. Making new features work with old llvms (it's not uncommon to write something new and discover it's broken for older llvms).

We could drop testing for llvm one release before deleting the code that uses it I suppose, and that would remove issues 1 and 3 (3 is the truly nasty one). The old llvm might just break slowly over time (but probably not). For the purposes of new code we can ignore the contents of the ifdef...

That would give us the schedule:

master: supported
latest release: supported
second-last release: supported
third-last release: untested
fourth-last release: actively deleted

I'm not sure that's reasonable. That's a lot of llvm versions. Then again I don't think it would cost us much to do.

@steven-johnson
Copy link
Contributor Author

Given the recent proposal to have Halide releases track LLVM releases, maybe we should start by doing a 'release' for both LLVM9 and LLVM10 (including long-lasting branches for each one, for eg bug fixes).

@abadams
Copy link
Member

abadams commented Jul 27, 2020

That makes sense to me. The no_asserts flag being ignored bug that Benoit opened would be the kind of thing we'd backport to old releases.

@steven-johnson
Copy link
Contributor Author

(...speaking of which, we should probably publicize that plan and see if there are issues that we didn't anticipate.)

@alexreinking
Copy link
Member

Given the recent proposal to have Halide releases track LLVM releases, maybe we should start by doing a 'release' for both LLVM9 and LLVM10 (including long-lasting branches for each one, for eg bug fixes).

Definitely in favor of that move. Once #5135 lands, this should be quite easy.

@alexreinking
Copy link
Member

alexreinking commented Oct 16, 2020

LLVM 11 is out. Should we move on this?

@steven-johnson
Copy link
Contributor Author

Let's see if there is a consensus, and/or a specific timeline we want to wait for

@steven-johnson
Copy link
Contributor Author

(But since we haven't been testing LLVM9 on the buildbots for a while we probably might as well)

@@ -16,7 +16,7 @@ find_package(Clang REQUIRED CONFIG HINTS "${LLVM_DIR}/../clang")
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

if (LLVM_PACKAGE_VERSION VERSION_LESS 9.0)
if (LLVM_PACKAGE_VERSION VERSION_LESS 10.0)
message(FATAL_ERROR "LLVM version must be 9.0 or newer")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update the error message?

@steven-johnson
Copy link
Contributor Author

tagging @benoitsteiner to comment as he was the last person with a concern

@steven-johnson
Copy link
Contributor Author

Monday morning ping to @benoitsteiner

@alexreinking alexreinking modified the milestones: v12.0.0, v11.0.0 Oct 19, 2020
@steven-johnson
Copy link
Contributor Author

No response. Landing.

@steven-johnson steven-johnson merged commit af57921 into master Oct 19, 2020
@steven-johnson steven-johnson deleted the srj-llvm9 branch October 19, 2020 20:22
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.

4 participants