Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upUpgrade to LLVM 4.0 #37609
Comments
nagisa
referenced this issue
Nov 7, 2016
Closed
Allow configure script to accept LLVM version 4 #37639
This comment has been minimized.
This comment has been minimized.
|
Next time we do this upgrade we'll need emscripten to do it to. It would be good if we could pull in a working llvm wasm backend in the same upgrade, but that may not be ready before the end of the year. |
This comment has been minimized.
This comment has been minimized.
|
For the record, I am also working with a fork of LLVM that is tracking upstream (not AVR-LLVM but similar in spirit) and am starting to work on this now. I'm looking through the AVR-Rust commits and I'd love to coordinate --- feel free to ping me on IRC ( |
This comment has been minimized.
This comment has been minimized.
|
Note that there is a regression reported against llvm 4.0 regarding the powi intrinsic on armhf targets: https://llvm.org/bugs/show_bug.cgi?id=30543 I'm explicitly mentioning this here, because there were previously problems with it, see #37559 and related issues. Also cc rust-lang-nursery/compiler-builtins#116, an issue about the same problem in the compiler-rt rust port. |
This comment has been minimized.
This comment has been minimized.
|
To clarify what I think the @TimNN is referring to (correct me if I'm wrong)
So it seems that if the LLVM change is not reverted (expected powisf2 to be aapcs) then we need to update our definition. This is going to be a huge PITA for supporting multiple LLVM versions as well. We need to select the calling convention depending on the LLVM version as well... |
This comment has been minimized.
This comment has been minimized.
@rkruppe Any objections to doing that coordination here on GitHub, or on one of our forks? |
This comment has been minimized.
This comment has been minimized.
|
I don't have strong preferences for the communication channel. |
rkruppe
referenced this issue
Nov 17, 2016
Merged
[LLVM 4.0] Use llvm::Attribute APIs instead of "raw value" APIs #37831
This comment has been minimized.
This comment has been minimized.
|
#37831 should address what is listed as |
This comment has been minimized.
This comment has been minimized.
|
@shepmaster I would prefer to upstream LLVM 4.0 compatibility patches sooner rather than later. That includes my own work obviously, but I'm also looking at the commits I cherry-picked from AVR-Rust. In particular, avr-rust@3e1e4a4 looks like a reasonable simplification even independent of LLVM 4.0 compatibility, and avr-rust@c32f9c1 looks like a nice little self-contained fix. Could you create PRs for those? (If you don't have the time but are otherwise fine with upstreaming, I'd be happy to manage that, giving proper credit of course.) |
This comment has been minimized.
This comment has been minimized.
|
@rkruppe Absolutely! I wasn't really sure how much we could expect LLVM 4 to change as it goes towards stable / how much churn the Rust maintainers would want to put up with. I'll get those pulled out and submitted soon. I think I'm also starting to understand some of the silly error handling that the new LLVM does. |
This comment has been minimized.
This comment has been minimized.
|
@shepmaster Awesome, thanks in advance! |
This comment has been minimized.
This comment has been minimized.
|
BTW the PR reference for "llvm::AttrBuilder changed API" is wrong, it points at this issue instead of #37831 |
bors
added a commit
that referenced
this issue
Nov 19, 2016
sanxiyn
added
the
A-LLVM
label
Nov 22, 2016
brson
added
E-hard
T-compiler
T-tools
C-enhancement
labels
Nov 23, 2016
rkruppe
referenced this issue
Nov 24, 2016
Merged
[LLVM 4.0] OptimizationDiagnostic FFI forward compatibility #37982
bors
added a commit
that referenced
this issue
Nov 25, 2016
rkruppe
referenced this issue
Nov 25, 2016
Merged
[LLVM 4.0] Pass new argument ExportSymbol to DIBuilder::createNameSpace #38000
bors
added a commit
that referenced
this issue
Nov 25, 2016
This comment has been minimized.
This comment has been minimized.
Kixunil
commented
Nov 26, 2016
|
Does anyone have ETA? I'd like to know when I can use AVR. :) |
bors
added a commit
that referenced
this issue
Nov 27, 2016
rkruppe
referenced this issue
Nov 28, 2016
Merged
[LLVM 4.0] Don't assume llvm::StringRef is null terminated #38048
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Mar 10, 2017
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Mar 11, 2017
arielb1
pushed a commit
to arielb1/rust
that referenced
this issue
Mar 11, 2017
arielb1
pushed a commit
to arielb1/rust
that referenced
this issue
Mar 11, 2017
nikomatsakis
referenced this issue
Mar 16, 2017
Closed
rg crashes with `-C target-cpu=native` on Xeon E5-2670 #36677
bstrie
referenced this issue
Apr 1, 2017
Closed
Stop forcing `i1` booleans to `i8` for comparison when LLVM is fixed #40980
bors
added a commit
that referenced
this issue
Apr 8, 2017
nikomatsakis
referenced this issue
Apr 13, 2017
Closed
1.14.0 powerpc64le test failures: smoke_dtor, test_typed_arena_drop_small_count #39015
bors
added a commit
that referenced
this issue
Apr 14, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 17, 2017
bors
added a commit
that referenced
this issue
Apr 18, 2017
bors
added a commit
that referenced
this issue
Apr 18, 2017
bors
added a commit
that referenced
this issue
Apr 23, 2017
bors
added a commit
that referenced
this issue
Apr 24, 2017
bors
added a commit
that referenced
this issue
Apr 24, 2017
bors
closed this
in
#40123
Apr 25, 2017
This comment has been minimized.
This comment has been minimized.
dsvensson
commented
Apr 25, 2017
•
|
@shepmaster @dylanmckay So whats the next issue(s) to subscribe to in the race-to-AVR? :) |
This comment has been minimized.
This comment has been minimized.
|
As @shepmaster says on reddit, we can integrate the latest Rust master into the avr-rust compiler. After that, we can spend some time getting Once that is working, we could then start looking into upstreaming the AVR target to Rust. |
This comment has been minimized.
This comment has been minimized.
AVR-specific issues can be raised / tracked in https://github.com/avr-rust/rust For example, there are two that I'm aware of right now: |
This comment has been minimized.
This comment has been minimized.
BatmanAoD
commented
Apr 26, 2017
|
#39782 has been closed, so that can be checked off in the top post. |
shepmaster commentedNov 5, 2016
•
edited
The AVR-Rust post continues to track AVR-LLVM, which is tracking upstream LLVM. That means we are running into changes from the future LLVM 4.0. I figured we could open up this issue now to track the changes required to stay compatible.
This is the current list of upgrade hazards. Note that some of the text may be nonsensical as I don't truly grok all the internals of LLVM so some changes are wild stabs in the dark. It's also possible that some failed fix for earlier problems actually caused later problems:
AlwaysInlinerpass changed header and constructor name (#37861)createBasicTypechanged API (#38317)powidf2/powisf2calling convention changed (LLVM 31685)llvm::AttrBuilderchanged API (#37831)DIBuilder::createNameSpacechanged API (#38000)LLVMRustPrintPassesprefersStringRefoverchar *(#38027)OptimizationDiagnosticstring type changes (#37982)llvm::StringRefis not guaranteed to be null terminated (#38048)getPassNamechanged return types (#38195)for global variables (#38295)
DIBuilder::createGlobalVariableAPI changed again (#39528)llvm::DIBuilder::createCompileUnitnow takes anllvm::DIFile*instead of aFilenameandDirectory(#39747)repr(packed)tests (#40373)core::panicking::panic(#40508)A WIP PR that performs the upgrade! #40123
Some issues whose resolution is believed to be blocked on LLVM 4.0: