{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rust/issues/37609","repository_url":"https://api.github.com/repos/rust-lang/rust","labels_url":"https://api.github.com/repos/rust-lang/rust/issues/37609/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/37609/comments","events_url":"https://api.github.com/repos/rust-lang/rust/issues/37609/events","html_url":"https://github.com/rust-lang/rust/issues/37609","id":187531139,"number":37609,"title":"Upgrade to LLVM 4.0","user":{"login":"shepmaster","id":174509,"avatar_url":"https://avatars.githubusercontent.com/u/174509?v=3","gravatar_id":"","url":"https://api.github.com/users/shepmaster","html_url":"https://github.com/shepmaster","followers_url":"https://api.github.com/users/shepmaster/followers","following_url":"https://api.github.com/users/shepmaster/following{/other_user}","gists_url":"https://api.github.com/users/shepmaster/gists{/gist_id}","starred_url":"https://api.github.com/users/shepmaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shepmaster/subscriptions","organizations_url":"https://api.github.com/users/shepmaster/orgs","repos_url":"https://api.github.com/users/shepmaster/repos","events_url":"https://api.github.com/users/shepmaster/events{/privacy}","received_events_url":"https://api.github.com/users/shepmaster/received_events","type":"User","site_admin":false},"labels":[{"id":108333,"url":"https://api.github.com/repos/rust-lang/rust/labels/A-llvm","name":"A-llvm","color":"d7e102","default":false},{"id":234876,"url":"https://api.github.com/repos/rust-lang/rust/labels/E-hard","name":"E-hard","color":"02e10c","default":false},{"id":234902,"url":"https://api.github.com/repos/rust-lang/rust/labels/I-enhancement","name":"I-enhancement","color":"e10c02","default":false},{"id":211668100,"url":"https://api.github.com/repos/rust-lang/rust/labels/T-compiler","name":"T-compiler","color":"bfd4f2","default":false},{"id":211668098,"url":"https://api.github.com/repos/rust-lang/rust/labels/T-tools","name":"T-tools","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":18,"created_at":"2016-11-05T23:35:48Z","updated_at":"2016-12-11T20:30:28Z","closed_at":null,"body":"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. \r\n\r\nThis 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:\r\n\r\n- [x] DIDescriptorFlags became a real C++ enum and not a bitset (#37857)\r\n- [x] An EH personality is required for every function that can unwind (#37862)\r\n- [ ] Many strings / `TwineRef`s became `char *` buffers\r\n- [x] `AlwaysInliner` pass changed header and constructor name (#37861)\r\n- [ ] Error reporting objects changed API\r\n- [ ] `createBasicType` changed API\r\n- [x] Bitcode/ReaderWriter.h has been renamed / API changed (#38156)\r\n- [ ] [`powidf2` / `powisf2` calling convention changed](https://github.com/rust-lang/rust/issues/37609#issuecomment-261109814)\r\n- [x] `llvm::AttrBuilder` changed API (#37831)\r\n- [x] `DIBuilder::createNameSpace` changed API (#38000)\r\n- [x] `LLVMRustPrintPasses` prefers `StringRef` over `char *` (#38027)\r\n- [x] `OptimizationDiagnostic` string type changes (#37982)\r\n- [x] `llvm::StringRef` is not guaranteed to be null terminated (#38048)\r\n- [ ] `getPassName` changed return types (#38195)\r\n- [ ] Archive support changed error handling types (#38196)\r\n\r\nFor those that would like to follow along at home, you can check our [avr-support-4.0 branch](https://github.com/avr-rust/rust/commits/avr-support-4.0); commits tagged with `[4.0]` are relevant to LLVM 4.0. Many of these are quick hacks and lose functionality or backwards compatibility.\r\n\r\ncc @alexcrichton @brson "},"comment":{"url":"https://api.github.com/repos/rust-lang/rust/issues/comments/266305588","html_url":"https://github.com/rust-lang/rust/issues/37609#issuecomment-266305588","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/37609","id":266305588,"user":{"login":"dylanmckay","id":7722159,"avatar_url":"https://avatars.githubusercontent.com/u/7722159?v=3","gravatar_id":"","url":"https://api.github.com/users/dylanmckay","html_url":"https://github.com/dylanmckay","followers_url":"https://api.github.com/users/dylanmckay/followers","following_url":"https://api.github.com/users/dylanmckay/following{/other_user}","gists_url":"https://api.github.com/users/dylanmckay/gists{/gist_id}","starred_url":"https://api.github.com/users/dylanmckay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylanmckay/subscriptions","organizations_url":"https://api.github.com/users/dylanmckay/orgs","repos_url":"https://api.github.com/users/dylanmckay/repos","events_url":"https://api.github.com/users/dylanmckay/events{/privacy}","received_events_url":"https://api.github.com/users/dylanmckay/received_events","type":"User","site_admin":false},"created_at":"2016-12-11T20:30:28Z","updated_at":"2016-12-11T20:30:28Z","body":"I think the next step after all those patches land is to allow LLVM 4.0 in the configure/rustbuild scripts and then actually update the submodule."}}
{"actor":{"display_login":"dylanmckay"}}