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

Add Swift function call ABI #64582

Closed
wants to merge 3 commits into from
Closed

Add Swift function call ABI #64582

wants to merge 3 commits into from

Conversation

nvzqz
Copy link
Contributor

@nvzqz nvzqz commented Sep 18, 2019

This teaches Rust the Swift calling convention known by LLVM (see llvm::CallingConv).


Some background: I'm working on swift-bindgen which will require calling Swift and being called by Swift without having to go through C.

@rust-highfive
Copy link
Collaborator

r? @zackmdavis

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Sep 18, 2019
@rust-highfive

This comment has been minimized.

@rust-highfive

This comment has been minimized.

@nvzqz nvzqz force-pushed the swiftcc branch 2 times, most recently from 17e29f5 to 0b86f54 Compare September 18, 2019 21:40
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-18T21:41:32.1689247Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-18T21:41:32.1708359Z ##[command]git config gc.auto 0
2019-09-18T21:41:32.1712735Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-18T21:41:32.1716052Z ##[command]git config --get-all http.proxy
2019-09-18T21:41:32.1719761Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64582/merge:refs/remotes/pull/64582/merge
---
2019-09-18T22:43:59.5271559Z .................................................................................................... 1500/9024
2019-09-18T22:44:05.6700770Z .................................................................................................... 1600/9024
2019-09-18T22:44:18.3561535Z .................................................................i...............i.................. 1700/9024
2019-09-18T22:44:25.5948723Z .................................................................................................... 1800/9024
2019-09-18T22:44:40.9217541Z ........................................................iiiii....................................... 1900/9024
2019-09-18T22:44:52.4401733Z .................................................................................................... 2100/9024
2019-09-18T22:44:54.9697740Z .................................................................................................... 2200/9024
2019-09-18T22:44:58.3018765Z .................................................................................................... 2300/9024
2019-09-18T22:45:06.7978213Z .................................................................................................... 2400/9024
---
2019-09-18T22:48:05.5764052Z ............................................i...............i....................................... 4700/9024
2019-09-18T22:48:16.1071092Z .................................................................................................... 4800/9024
2019-09-18T22:48:23.0456165Z .................................................................................................... 4900/9024
2019-09-18T22:48:32.6177334Z .................................................................................................... 5000/9024
2019-09-18T22:48:40.4565657Z ............................ii.ii................................................................... 5100/9024
2019-09-18T22:48:50.4164374Z .................................................................................................... 5300/9024
2019-09-18T22:49:00.7762217Z ............................................................................................i....... 5400/9024
2019-09-18T22:49:09.0708052Z .................................................................................................... 5500/9024
2019-09-18T22:49:13.9768170Z .................................................................................................... 5600/9024
2019-09-18T22:49:13.9768170Z .................................................................................................... 5600/9024
2019-09-18T22:49:24.5654756Z .......................................................................................ii...i..ii... 5700/9024
2019-09-18T22:49:49.6267983Z .................................................................................................... 5900/9024
2019-09-18T22:49:59.7367689Z .................................................................................................... 6000/9024
2019-09-18T22:49:59.7367689Z .................................................................................................... 6000/9024
2019-09-18T22:50:06.7425623Z .........................................................................................i..ii...... 6100/9024
2019-09-18T22:50:34.9822639Z .................................................................................................... 6300/9024
2019-09-18T22:50:39.3616451Z ................................................i................................................... 6400/9024
2019-09-18T22:50:41.5761080Z ...............................................F.................................................... 6500/9024
2019-09-18T22:50:44.0860650Z ....................i............................................................................... 6600/9024
---
2019-09-18T22:54:47.5704277Z 
2019-09-18T22:54:47.5705027Z ---- [ui] ui/codemap_tests/unicode.rs stdout ----
2019-09-18T22:54:47.5705312Z diff of stderr:
2019-09-18T22:54:47.5705481Z 
2019-09-18T22:54:47.5705929Z 4 LL | extern "路濫狼á́́" fn foo() {}
2019-09-18T22:54:47.5706164Z 5    |        ^^^^^^^^^ invalid ABI
2019-09-18T22:54:47.5706342Z 6    |
2019-09-18T22:54:47.5706890Z -    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-18T22:54:47.5707960Z +    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-18T22:54:47.5708426Z 9 error: aborting due to previous error
2019-09-18T22:54:47.5708633Z 10 
2019-09-18T22:54:47.5708816Z 
2019-09-18T22:54:47.5708969Z 
2019-09-18T22:54:47.5708969Z 
2019-09-18T22:54:47.5709144Z The actual stderr differed from the expected stderr.
2019-09-18T22:54:47.5710298Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode/unicode.stderr
2019-09-18T22:54:47.5710921Z To update references, rerun the tests and pass the `--bless` flag
2019-09-18T22:54:47.5711486Z To only update this specific test, also pass `--test-args codemap_tests/unicode.rs`
2019-09-18T22:54:47.5711999Z error: 1 errors occurred comparing output.
2019-09-18T22:54:47.5712231Z status: exit code: 1
2019-09-18T22:54:47.5712231Z status: exit code: 1
2019-09-18T22:54:47.5713745Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/codemap_tests/unicode.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode/auxiliary" "-A" "unused"
2019-09-18T22:54:47.5714512Z ------------------------------------------
2019-09-18T22:54:47.5714738Z 
2019-09-18T22:54:47.5715352Z ------------------------------------------
2019-09-18T22:54:47.5715608Z stderr:
2019-09-18T22:54:47.5715608Z stderr:
2019-09-18T22:54:47.5715996Z ------------------------------------------
2019-09-18T22:54:47.5716458Z error[E0703]: invalid ABI: found `路濫狼á́́`
2019-09-18T22:54:47.5717180Z    |
2019-09-18T22:54:47.5717180Z    |
2019-09-18T22:54:47.5717801Z LL | extern "路濫狼á́́" fn foo() {} //~ ERROR invalid ABI
2019-09-18T22:54:47.5718209Z    |        ^^^^^^^^^ invalid ABI
2019-09-18T22:54:47.5718398Z    |
2019-09-18T22:54:47.5719137Z    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-18T22:54:47.5719644Z error: aborting due to previous error
2019-09-18T22:54:47.5719810Z 
2019-09-18T22:54:47.5720451Z 
2019-09-18T22:54:47.5721036Z ------------------------------------------
---
2019-09-18T22:54:47.5722923Z 516 
2019-09-18T22:54:47.5723157Z 517 error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5723916Z -    --> $DIR/feature-gate-abi.rs:100:1
2019-09-18T22:54:47.5724333Z -     |
2019-09-18T22:54:47.5725280Z - LLL | extern "vectorcall" {}
2019-09-18T22:54:47.5726335Z -     |
2019-09-18T22:54:47.5726736Z -     = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5727084Z +   --> $DIR/feature-gate-abi.rs:100:1
2019-09-18T22:54:47.5727254Z +    |
2019-09-18T22:54:47.5727254Z +    |
2019-09-18T22:54:47.5727370Z + LL | extern "vectorcall" {}
2019-09-18T22:54:47.5727621Z +    |
2019-09-18T22:54:47.5727736Z +    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5727971Z 524 
2019-09-18T22:54:47.5728977Z 525 error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5728977Z 525 error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5731429Z -    --> $DIR/feature-gate-abi.rs:101:1
2019-09-18T22:54:47.5732163Z -     |
2019-09-18T22:54:47.5732650Z - LLL | extern "rust-call" {}
2019-09-18T22:54:47.5742245Z -     |
2019-09-18T22:54:47.5742245Z -     |
2019-09-18T22:54:47.5743456Z -     = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5744466Z -     = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5744671Z +   --> $DIR/feature-gate-abi.rs:101:1
2019-09-18T22:54:47.5744714Z +    |
2019-09-18T22:54:47.5744904Z + LL | extern "rust-call" {}
2019-09-18T22:54:47.5744980Z +    |
2019-09-18T22:54:47.5744980Z +    |
2019-09-18T22:54:47.5745244Z +    = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5745293Z +    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5745333Z 533 
2019-09-18T22:54:47.5745589Z 534 error[E0658]: msp430-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5745936Z -     |
2019-09-18T22:54:47.5745936Z -     |
2019-09-18T22:54:47.5746115Z - LLL | extern "msp430-interrupt" {}
2019-09-18T22:54:47.5746473Z -     |
2019-09-18T22:54:47.5746473Z -     |
2019-09-18T22:54:47.5746735Z -     = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5746974Z -     = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5747160Z +   --> $DIR/feature-gate-abi.rs:102:1
2019-09-18T22:54:47.5747197Z +    |
2019-09-18T22:54:47.5747393Z + LL | extern "msp430-interrupt" {}
2019-09-18T22:54:47.5747467Z +    |
2019-09-18T22:54:47.5747467Z +    |
2019-09-18T22:54:47.5747719Z +    = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5747768Z +    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5747813Z 542 
2019-09-18T22:54:47.5747870Z 543 error[E0658]: PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5748223Z -     |
2019-09-18T22:54:47.5748223Z -     |
2019-09-18T22:54:47.5748415Z - LLL | extern "ptx-kernel" {}
2019-09-18T22:54:47.5748934Z -     |
2019-09-18T22:54:47.5748934Z -     |
2019-09-18T22:54:47.5749270Z -     = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5749682Z -     = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5754613Z +   --> $DIR/feature-gate-abi.rs:103:1
2019-09-18T22:54:47.5754706Z +    |
2019-09-18T22:54:47.5754949Z + LL | extern "ptx-kernel" {}
2019-09-18T22:54:47.5755042Z +    |
2019-09-18T22:54:47.5755042Z +    |
2019-09-18T22:54:47.5755316Z +    = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5755365Z +    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5755438Z 551 
2019-09-18T22:54:47.5755672Z 552 error[E0658]: x86-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5756032Z -     |
2019-09-18T22:54:47.5756032Z -     |
2019-09-18T22:54:47.5756209Z - LLL | extern "x86-interrupt" {}
2019-09-18T22:54:47.5756548Z -     |
2019-09-18T22:54:47.5756548Z -     |
2019-09-18T22:54:47.5756810Z -     = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5757042Z -     = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5757247Z +   --> $DIR/feature-gate-abi.rs:104:1
2019-09-18T22:54:47.5757285Z +    |
2019-09-18T22:54:47.5757457Z + LL | extern "x86-interrupt" {}
2019-09-18T22:54:47.5757548Z +    |
2019-09-18T22:54:47.5757548Z +    |
2019-09-18T22:54:47.5757783Z +    = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5757856Z +    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5758145Z 561 error[E0658]: thiscall is experimental and subject to change
2019-09-18T22:54:47.5758422Z -    --> $DIR/feature-gate-abi.rs:105:1
2019-09-18T22:54:47.5758791Z -     |
2019-09-18T22:54:47.5758791Z -     |
2019-09-18T22:54:47.5758971Z - LLL | extern "thiscall" {}
2019-09-18T22:54:47.5759344Z -     |
2019-09-18T22:54:47.5759559Z -     = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5760582Z +   --> $DIR/feature-gate-abi.rs:105:1
2019-09-18T22:54:47.5760664Z +    |
2019-09-18T22:54:47.5760664Z +    |
2019-09-18T22:54:47.5760708Z + LL | extern "thiscall" {}
2019-09-18T22:54:47.5760793Z +    |
2019-09-18T22:54:47.5760862Z +    = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5760913Z 568 
2019-09-18T22:54:47.5760913Z 568 
2019-09-18T22:54:47.5761234Z 569 error[E0658]: amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5761746Z -     |
2019-09-18T22:54:47.5761746Z -     |
2019-09-18T22:54:47.5761981Z - LLL | extern "amdgpu-kernel" {}
2019-09-18T22:54:47.5762455Z -     |
2019-09-18T22:54:47.5762455Z -     |
2019-09-18T22:54:47.5762799Z -     = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5764107Z -     = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5764402Z +   --> $DIR/feature-gate-abi.rs:106:1
2019-09-18T22:54:47.5764609Z +    |
2019-09-18T22:54:47.5764836Z + LL | extern "amdgpu-kernel" {}
2019-09-18T22:54:47.5764923Z +    |
2019-09-18T22:54:47.5764923Z +    |
2019-09-18T22:54:47.5765240Z +    = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5765297Z +    = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5765341Z 577 
2019-09-18T22:54:47.5765414Z 578 error[E0658]: Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5766309Z -     |
2019-09-18T22:54:47.5766309Z -     |
2019-09-18T22:54:47.5766494Z - LLL | extern "Swift" {}
2019-09-18T22:54:47.5766818Z -     |
2019-09-18T22:54:47.5766818Z -     |
2019-09-18T22:54:47.5767175Z -     = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5767443Z +   --> $DIR/feature-gate-abi.rs:107:1
2019-09-18T22:54:47.5767481Z +    |
2019-09-18T22:54:47.5767515Z + LL | extern "Swift" {}
2019-09-18T22:54:47.5767600Z +    |
2019-09-18T22:54:47.5767600Z +    |
2019-09-18T22:54:47.5767639Z +    = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5767692Z 585 
2019-09-18T22:54:47.5767902Z 586 error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
2019-09-18T22:54:47.5768307Z 
2019-09-18T22:54:47.5768347Z 
2019-09-18T22:54:47.5768385Z The actual stderr differed from the expected stderr.
2019-09-18T22:54:47.5768385Z The actual stderr differed from the expected stderr.
2019-09-18T22:54:47.5768652Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gates/feature-gate-abi/feature-gate-abi.stderr
2019-09-18T22:54:47.5768885Z To update references, rerun the tests and pass the `--bless` flag
2019-09-18T22:54:47.5769123Z To only update this specific test, also pass `--test-args feature-gates/feature-gate-abi.rs`
2019-09-18T22:54:47.5769191Z error: 1 errors occurred comparing output.
2019-09-18T22:54:47.5769250Z status: exit code: 1
2019-09-18T22:54:47.5769250Z status: exit code: 1
2019-09-18T22:54:47.5770254Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/feature-gates/feature-gate-abi.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gates/feature-gate-abi" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gates/feature-gate-abi/auxiliary" "-A" "unused"
2019-09-18T22:54:47.5770806Z ------------------------------------------
2019-09-18T22:54:47.5770844Z 
2019-09-18T22:54:47.5771110Z ------------------------------------------
2019-09-18T22:54:47.5771159Z stderr:
2019-09-18T22:54:47.5771159Z stderr:
2019-09-18T22:54:47.5771387Z ------------------------------------------
2019-09-18T22:54:47.5771457Z error[E0658]: intrinsics are subject to change
2019-09-18T22:54:47.5771713Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:13:1
2019-09-18T22:54:47.5771766Z    |
2019-09-18T22:54:47.5773258Z LL | extern "rust-intrinsic" fn f1() {} //~ ERROR intrinsics are subject to change
2019-09-18T22:54:47.5773400Z    |
2019-09-18T22:54:47.5773449Z    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5773518Z 
2019-09-18T22:54:47.5773565Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5773565Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5773842Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:15:1
2019-09-18T22:54:47.5773911Z    |
2019-09-18T22:54:47.5774196Z LL | extern "platform-intrinsic" fn f2() {} //~ ERROR platform intrinsics are experimental
2019-09-18T22:54:47.5774325Z    |
2019-09-18T22:54:47.5774325Z    |
2019-09-18T22:54:47.5774653Z    = note: for more information, see ***/issues/27731
2019-09-18T22:54:47.5774716Z    = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5774817Z error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5775088Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:17:1
2019-09-18T22:54:47.5775157Z    |
2019-09-18T22:54:47.5775157Z    |
2019-09-18T22:54:47.5775218Z LL | extern "vectorcall" fn f3() {} //~ ERROR vectorcall is experimental and subject to change
2019-09-18T22:54:47.5775312Z    |
2019-09-18T22:54:47.5775382Z    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5775415Z 
2019-09-18T22:54:47.5776200Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5776200Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5776505Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:18:1
2019-09-18T22:54:47.5776548Z    |
2019-09-18T22:54:47.5776779Z LL | extern "rust-call" fn f4() {} //~ ERROR rust-call ABI is subject to change
2019-09-18T22:54:47.5776880Z    |
2019-09-18T22:54:47.5776880Z    |
2019-09-18T22:54:47.5777145Z    = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5777217Z    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5777247Z 
2019-09-18T22:54:47.5777665Z error[E0658]: msp430-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5778797Z    |
2019-09-18T22:54:47.5778797Z    |
2019-09-18T22:54:47.5779108Z LL | extern "msp430-interrupt" fn f5() {} //~ ERROR msp430-interrupt ABI is experimental
2019-09-18T22:54:47.5779225Z    |
2019-09-18T22:54:47.5779225Z    |
2019-09-18T22:54:47.5779539Z    = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5779604Z    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5779659Z 
2019-09-18T22:54:47.5779705Z error[E0658]: PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5780133Z    |
2019-09-18T22:54:47.5780133Z    |
2019-09-18T22:54:47.5780410Z LL | extern "ptx-kernel" fn f6() {} //~ ERROR PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5780660Z    |
2019-09-18T22:54:47.5780660Z    |
2019-09-18T22:54:47.5780999Z    = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5781059Z    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5781092Z 
2019-09-18T22:54:47.5781382Z error[E0658]: x86-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5781701Z    |
2019-09-18T22:54:47.5781701Z    |
2019-09-18T22:54:47.5781992Z LL | extern "x86-interrupt" fn f7() {} //~ ERROR x86-interrupt ABI is experimental
2019-09-18T22:54:47.5782088Z    |
2019-09-18T22:54:47.5782088Z    |
2019-09-18T22:54:47.5782399Z    = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5782463Z    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5782568Z error[E0658]: thiscall is experimental and subject to change
2019-09-18T22:54:47.5782876Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:22:1
2019-09-18T22:54:47.5782929Z    |
2019-09-18T22:54:47.5782929Z    |
2019-09-18T22:54:47.5783002Z LL | extern "thiscall" fn f8() {} //~ ERROR thiscall is experimental and subject to change
2019-09-18T22:54:47.5783100Z    |
2019-09-18T22:54:47.5783179Z    = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5783264Z 
2019-09-18T22:54:47.5783264Z 
2019-09-18T22:54:47.5783552Z error[E0658]: amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5784052Z    |
2019-09-18T22:54:47.5784052Z    |
2019-09-18T22:54:47.5784331Z LL | extern "amdgpu-kernel" fn f9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5784446Z    |
2019-09-18T22:54:47.5784446Z    |
2019-09-18T22:54:47.5784878Z    = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5784945Z    = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5785155Z 
2019-09-18T22:54:47.5785196Z error[E0658]: Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5785901Z    |
2019-09-18T22:54:47.5785901Z    |
2019-09-18T22:54:47.5786384Z LL | extern "Swift" fn f10() {} //~ ERROR Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5786502Z    |
2019-09-18T22:54:47.5786502Z    |
2019-09-18T22:54:47.5786546Z    = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5786614Z error[E0658]: intrinsics are subject to change
2019-09-18T22:54:47.5786899Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:28:5
2019-09-18T22:54:47.5786944Z    |
2019-09-18T22:54:47.5786944Z    |
2019-09-18T22:54:47.5787790Z LL |     extern "rust-intrinsic" fn m1(); //~ ERROR intrinsics are subject to change
2019-09-18T22:54:47.5787975Z    |
2019-09-18T22:54:47.5788019Z    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5788051Z 
2019-09-18T22:54:47.5788111Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5788111Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5788396Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:30:5
2019-09-18T22:54:47.5788443Z    |
2019-09-18T22:54:47.5788708Z LL |     extern "platform-intrinsic" fn m2(); //~ ERROR platform intrinsics are experimental
2019-09-18T22:54:47.5788798Z    |
2019-09-18T22:54:47.5788798Z    |
2019-09-18T22:54:47.5789124Z    = note: for more information, see ***/issues/27731
2019-09-18T22:54:47.5789365Z    = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5789606Z error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5790507Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:32:5
2019-09-18T22:54:47.5790566Z    |
2019-09-18T22:54:47.5790566Z    |
2019-09-18T22:54:47.5790618Z LL |     extern "vectorcall" fn m3(); //~ ERROR vectorcall is experimental and subject to change
2019-09-18T22:54:47.5790741Z    |
2019-09-18T22:54:47.5790802Z    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5790855Z 
2019-09-18T22:54:47.5791110Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5791110Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5791373Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:33:5
2019-09-18T22:54:47.5791443Z    |
2019-09-18T22:54:47.5791713Z LL |     extern "rust-call" fn m4(); //~ ERROR rust-call ABI is subject to change
2019-09-18T22:54:47.5791809Z    |
2019-09-18T22:54:47.5791809Z    |
2019-09-18T22:54:47.5792144Z    = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5792216Z    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5792250Z 
2019-09-18T22:54:47.5792551Z error[E0658]: msp430-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5792861Z    |
2019-09-18T22:54:47.5792861Z    |
2019-09-18T22:54:47.5793169Z LL |     extern "msp430-interrupt" fn m5(); //~ ERROR msp430-interrupt ABI is experimental
2019-09-18T22:54:47.5793270Z    |
2019-09-18T22:54:47.5793270Z    |
2019-09-18T22:54:47.5793889Z    = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5793938Z    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5793966Z 
2019-09-18T22:54:47.5794022Z error[E0658]: PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5794285Z    |
2019-09-18T22:54:47.5794285Z    |
2019-09-18T22:54:47.5794547Z LL |     extern "ptx-kernel" fn m6(); //~ ERROR PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5794627Z    |
2019-09-18T22:54:47.5794627Z    |
2019-09-18T22:54:47.5795171Z    = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5795227Z    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5795392Z 
2019-09-18T22:54:47.5795858Z error[E0658]: x86-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5796109Z    |
2019-09-18T22:54:47.5796109Z    |
2019-09-18T22:54:47.5796325Z LL |     extern "x86-interrupt" fn m7(); //~ ERROR x86-interrupt ABI is experimental
2019-09-18T22:54:47.5796421Z    |
2019-09-18T22:54:47.5796421Z    |
2019-09-18T22:54:47.5796683Z    = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5796734Z    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5796812Z error[E0658]: thiscall is experimental and subject to change
2019-09-18T22:54:47.5797073Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:37:5
2019-09-18T22:54:47.5797116Z    |
2019-09-18T22:54:47.5797116Z    |
2019-09-18T22:54:47.5797167Z LL |     extern "thiscall" fn m8(); //~ ERROR thiscall is experimental and subject to change
2019-09-18T22:54:47.5797265Z    |
2019-09-18T22:54:47.5797306Z    = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5797334Z 
2019-09-18T22:54:47.5797334Z 
2019-09-18T22:54:47.5797583Z error[E0658]: amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5797847Z    |
2019-09-18T22:54:47.5797847Z    |
2019-09-18T22:54:47.5798112Z LL |     extern "amdgpu-kernel" fn m9(); //~ ERROR amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5798300Z    |
2019-09-18T22:54:47.5798300Z    |
2019-09-18T22:54:47.5798613Z    = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5798664Z    = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5798692Z 
2019-09-18T22:54:47.5798759Z error[E0658]: Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5799039Z    |
2019-09-18T22:54:47.5799039Z    |
2019-09-18T22:54:47.5799099Z LL |     extern "Swift" fn m10(); //~ ERROR Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5799176Z    |
2019-09-18T22:54:47.5799176Z    |
2019-09-18T22:54:47.5799233Z    = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5799299Z error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5799530Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:41:5
2019-09-18T22:54:47.5799708Z    |
2019-09-18T22:54:47.5799708Z    |
2019-09-18T22:54:47.5799750Z LL |     extern "vectorcall" fn dm3() {} //~ ERROR vectorcall is experimental and subject to change
2019-09-18T22:54:47.5799847Z    |
2019-09-18T22:54:47.5799895Z    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5799923Z 
2019-09-18T22:54:47.5800866Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5800866Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5801200Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:42:5
2019-09-18T22:54:47.5801250Z    |
2019-09-18T22:54:47.5801522Z LL |     extern "rust-call" fn dm4() {} //~ ERROR rust-call ABI is subject to change
2019-09-18T22:54:47.5801639Z    |
2019-09-18T22:54:47.5801639Z    |
2019-09-18T22:54:47.5802246Z    = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5802346Z    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5802398Z 
2019-09-18T22:54:47.5802722Z error[E0658]: msp430-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5803055Z    |
2019-09-18T22:54:47.5803055Z    |
2019-09-18T22:54:47.5804676Z LL |     extern "msp430-interrupt" fn dm5() {} //~ ERROR msp430-interrupt ABI is experimental
2019-09-18T22:54:47.5804879Z    |
2019-09-18T22:54:47.5804879Z    |
2019-09-18T22:54:47.5805272Z    = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5805343Z    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5805371Z 
2019-09-18T22:54:47.5805407Z error[E0658]: PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5805692Z    |
2019-09-18T22:54:47.5805692Z    |
2019-09-18T22:54:47.5805936Z LL |     extern "ptx-kernel" fn dm6() {} //~ ERROR PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5806033Z    |
2019-09-18T22:54:47.5806033Z    |
2019-09-18T22:54:47.5806271Z    = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5806320Z    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5806375Z 
2019-09-18T22:54:47.5806607Z error[E0658]: x86-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5806891Z    |
2019-09-18T22:54:47.5806891Z    |
2019-09-18T22:54:47.5807125Z LL |     extern "x86-interrupt" fn dm7() {} //~ ERROR x86-interrupt ABI is experimental
2019-09-18T22:54:47.5807228Z    |
2019-09-18T22:54:47.5807228Z    |
2019-09-18T22:54:47.5807478Z    = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5807527Z    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5807786Z error[E0658]: thiscall is experimental and subject to change
2019-09-18T22:54:47.5808054Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:46:5
2019-09-18T22:54:47.5808095Z    |
2019-09-18T22:54:47.5808095Z    |
2019-09-18T22:54:47.5808164Z LL |     extern "thiscall" fn dm8() {} //~ ERROR thiscall is experimental and subject to change
2019-09-18T22:54:47.5808243Z    |
2019-09-18T22:54:47.5808302Z    = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5808330Z 
2019-09-18T22:54:47.5808330Z 
2019-09-18T22:54:47.5808553Z error[E0658]: amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5808835Z    |
2019-09-18T22:54:47.5808835Z    |
2019-09-18T22:54:47.5810316Z LL |     extern "amdgpu-kernel" fn dm9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5810616Z    |
2019-09-18T22:54:47.5810616Z    |
2019-09-18T22:54:47.5811102Z    = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5811186Z    = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5811223Z 
2019-09-18T22:54:47.5811280Z error[E0658]: Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5811633Z    |
2019-09-18T22:54:47.5811633Z    |
2019-09-18T22:54:47.5811684Z LL |     extern "Swift" fn dm10() {} //~ ERROR Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5812576Z    |
2019-09-18T22:54:47.5812576Z    |
2019-09-18T22:54:47.5812638Z    = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5812715Z error[E0658]: intrinsics are subject to change
2019-09-18T22:54:47.5813147Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:55:5
2019-09-18T22:54:47.5813198Z    |
2019-09-18T22:54:47.5813198Z    |
2019-09-18T22:54:47.5813476Z LL |     extern "rust-intrinsic" fn m1() {} //~ ERROR intrinsics are subject to change
2019-09-18T22:54:47.5813740Z    |
2019-09-18T22:54:47.5813921Z    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5813980Z 
2019-09-18T22:54:47.5814019Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5814019Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5814265Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:57:5
2019-09-18T22:54:47.5814303Z    |
2019-09-18T22:54:47.5814718Z LL |     extern "platform-intrinsic" fn m2() {} //~ ERROR platform intrinsics are experimental
2019-09-18T22:54:47.5814798Z    |
2019-09-18T22:54:47.5814798Z    |
2019-09-18T22:54:47.5815086Z    = note: for more information, see ***/issues/27731
2019-09-18T22:54:47.5815146Z    = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5815229Z error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5815451Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:59:5
2019-09-18T22:54:47.5815490Z    |
2019-09-18T22:54:47.5815490Z    |
2019-09-18T22:54:47.5815557Z LL |     extern "vectorcall" fn m3() {} //~ ERROR vectorcall is experimental and subject to change
2019-09-18T22:54:47.5815631Z    |
2019-09-18T22:54:47.5815687Z    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5815713Z 
2019-09-18T22:54:47.5815909Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5815909Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5816117Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:60:5
2019-09-18T22:54:47.5816175Z    |
2019-09-18T22:54:47.5816390Z LL |     extern "rust-call" fn m4() {} //~ ERROR rust-call ABI is subject to change
2019-09-18T22:54:47.5816597Z    |
2019-09-18T22:54:47.5816597Z    |
2019-09-18T22:54:47.5818411Z    = note: for more information, see ***/issues/29625
2019-09-18T22:54:47.5818472Z    = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
2019-09-18T22:54:47.5818521Z 
2019-09-18T22:54:47.5818799Z error[E0658]: msp430-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5819071Z    |
2019-09-18T22:54:47.5819071Z    |
2019-09-18T22:54:47.5819294Z LL |     extern "msp430-interrupt" fn m5() {} //~ ERROR msp430-interrupt ABI is experimental
2019-09-18T22:54:47.5819391Z    |
2019-09-18T22:54:47.5819391Z    |
2019-09-18T22:54:47.5819788Z    = note: for more information, see ***/issues/38487
2019-09-18T22:54:47.5819839Z    = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5819893Z 
2019-09-18T22:54:47.5819931Z error[E0658]: PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5820634Z    |
2019-09-18T22:54:47.5820634Z    |
2019-09-18T22:54:47.5820942Z LL |     extern "ptx-kernel" fn m6() {} //~ ERROR PTX ABIs are experimental and subject to change
2019-09-18T22:54:47.5821054Z    |
2019-09-18T22:54:47.5821054Z    |
2019-09-18T22:54:47.5821378Z    = note: for more information, see ***/issues/38788
2019-09-18T22:54:47.5821439Z    = help: add `#![feature(abi_ptx)]` to the crate attributes to enable
2019-09-18T22:54:47.5821471Z 
2019-09-18T22:54:47.5821758Z error[E0658]: x86-interrupt ABI is experimental and subject to change
2019-09-18T22:54:47.5822068Z    |
2019-09-18T22:54:47.5822068Z    |
2019-09-18T22:54:47.5822360Z LL |     extern "x86-interrupt" fn m7() {} //~ ERROR x86-interrupt ABI is experimental
2019-09-18T22:54:47.5822469Z    |
2019-09-18T22:54:47.5822469Z    |
2019-09-18T22:54:47.5822779Z    = note: for more information, see ***/issues/40180
2019-09-18T22:54:47.5822838Z    = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
2019-09-18T22:54:47.5822936Z error[E0658]: thiscall is experimental and subject to change
2019-09-18T22:54:47.5823367Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:64:5
2019-09-18T22:54:47.5823434Z    |
2019-09-18T22:54:47.5823434Z    |
2019-09-18T22:54:47.5823487Z LL |     extern "thiscall" fn m8() {} //~ ERROR thiscall is experimental and subject to change
2019-09-18T22:54:47.5823787Z    |
2019-09-18T22:54:47.5823995Z    = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
2019-09-18T22:54:47.5824043Z 
2019-09-18T22:54:47.5824043Z 
2019-09-18T22:54:47.5824303Z error[E0658]: amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5824591Z    |
2019-09-18T22:54:47.5824591Z    |
2019-09-18T22:54:47.5824834Z LL |     extern "amdgpu-kernel" fn m9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
2019-09-18T22:54:47.5824914Z    |
2019-09-18T22:54:47.5824914Z    |
2019-09-18T22:54:47.5825191Z    = note: for more information, see ***/issues/51575
2019-09-18T22:54:47.5825241Z    = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
2019-09-18T22:54:47.5825267Z 
2019-09-18T22:54:47.5825323Z error[E0658]: Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5825592Z    |
2019-09-18T22:54:47.5825592Z    |
2019-09-18T22:54:47.5825652Z LL |     extern "Swift" fn m10() {} //~ ERROR Swift ABI is experimental and subject to change
2019-09-18T22:54:47.5825727Z    |
2019-09-18T22:54:47.5825727Z    |
2019-09-18T22:54:47.5825892Z    = help: add `#![feature(abi_swift)]` to the crate attributes to enable
2019-09-18T22:54:47.5825953Z error[E0658]: intrinsics are subject to change
2019-09-18T22:54:47.5826202Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:71:5
2019-09-18T22:54:47.5826263Z    |
2019-09-18T22:54:47.5826263Z    |
2019-09-18T22:54:47.5826498Z LL |     extern "rust-intrinsic" fn im1() {} //~ ERROR intrinsics are subject to change
2019-09-18T22:54:47.5826602Z    |
2019-09-18T22:54:47.5826641Z    = help: add `#![feature(intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5826667Z 
2019-09-18T22:54:47.5826721Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5826721Z error[E0658]: platform intrinsics are experimental and possibly buggy
2019-09-18T22:54:47.5828017Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:73:5
2019-09-18T22:54:47.5828083Z    |
2019-09-18T22:54:47.5828371Z LL |     extern "platform-intrinsic" fn im2() {} //~ ERROR platform intrinsics are experimental
2019-09-18T22:54:47.5828493Z    |
2019-09-18T22:54:47.5828493Z    |
2019-09-18T22:54:47.5828794Z    = note: for more information, see ***/issues/27731
2019-09-18T22:54:47.5828844Z    = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
2019-09-18T22:54:47.5828918Z error[E0658]: vectorcall is experimental and subject to change
2019-09-18T22:54:47.5829170Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:75:5
2019-09-18T22:54:47.5829211Z    |
2019-09-18T22:54:47.5829211Z    |
2019-09-18T22:54:47.5829252Z LL |     extern "vectorcall" fn im3() {} //~ ERROR vectorcall is experimental and subject to change
2019-09-18T22:54:47.5829345Z    |
2019-09-18T22:54:47.5829383Z    = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
2019-09-18T22:54:47.5829410Z 
2019-09-18T22:54:47.5829630Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5829630Z error[E0658]: rust-call ABI is subject to change
2019-09-18T22:54:47.5831288Z   --> /checkout/src/test/ui/feature-gates/feature-gate-abi.rs:76:5
2019-09-18T22:54:47.5831364Z    |
2019-09-18T22:54:47.5831688Z LL |     extern "rust-call" fn im4() {} //~ ERROR rust-call ABI is subject to change
2019-09-18T22:54:47.5831788Z    |
2019-09-18T22:54:47.5831788Z    |
2019-09-18T22:54:47.5832303Z    = note: for more information, see ***/issues/29625
---
2019-09-18T22:54:47.5888403Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:536:22
2019-09-18T22:54:47.5888452Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-09-18T22:54:47.5888494Z 
2019-09-18T22:54:47.5888515Z 
2019-09-18T22:54:47.5889695Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-09-18T22:54:47.5890355Z 
2019-09-18T22:54:47.5890385Z 
2019-09-18T22:54:47.5890496Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-09-18T22:54:47.5890565Z Build completed unsuccessfully in 1:05:59
2019-09-18T22:54:47.5890565Z Build completed unsuccessfully in 1:05:59
2019-09-18T22:54:47.5890612Z == clock drift check ==
2019-09-18T22:54:47.5890657Z   local time: Wed Sep 18 22:54:47 UTC 2019
2019-09-18T22:54:47.6707372Z   network time: Wed, 18 Sep 2019 22:54:47 GMT
2019-09-18T22:54:47.6707512Z == end clock drift check ==
2019-09-18T22:54:48.7781660Z ##[error]Bash exited with code '1'.
2019-09-18T22:54:48.7824835Z ##[section]Starting: Checkout
2019-09-18T22:54:48.7826668Z ==============================================================================
2019-09-18T22:54:48.7826744Z Task         : Get sources
2019-09-18T22:54:48.7826792Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@Centril
Copy link
Contributor

Centril commented Sep 18, 2019

cc @rust-lang/lang


I would be OK with landing this in an experimental fashion but this is definitely RFC territory. I think we need to seriously consider whether making support for the Swift ABI something Rust the language should support (i.e. this would require that cranelift also supports it if that is to become a supported backend).

@withoutboats
Copy link
Contributor

I'm inclined to think this needs an RFC, mainly in that we need to decide if we really want to commit to having support for this. I wouldn't want to add this even experimentally without a commitment that we intend to ultimately support this.

I think this is more in the domain of T-compiler than T-lang though.

@Centril Centril added needs-rfc This change is large or controversial enough that it should have an RFC accepted before doing it. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team, which will review and decide on the PR/issue. labels Sep 18, 2019
@Centril
Copy link
Contributor

Centril commented Sep 18, 2019

I wouldn't want to add this even experimentally without a commitment that we intend to ultimately support this.

Fair. Added labels accordingly.

I think this is more in the domain of T-compiler than T-lang though.

If we add this it will be a commitment that all Rust compilers/backends should support the Swift ABI (and possibly with changes to the Swift ABI) and it would end up in the reference with the relevant text. It's not something that I would be OK with on a "only this compiler supports it"-basis. So this is primarily a language team matter.

However, I am also very happy for the compiler team to also review any RFC as the added technical expertise and judgement re. rustc specifically is valuable.

@withoutboats
Copy link
Contributor

The difficulty for other rustc backends like cranelift is clearly an issue on which the compiler team has much more expertise

@Centril
Copy link
Contributor

Centril commented Sep 18, 2019

Well, for cranelift specifically, I would consult the cranelift devs; I don't believe any of those are on the compiler team. But this doesn't have to be one team vs. the other -- both perspectives are useful.

@nvzqz
Copy link
Contributor Author

nvzqz commented Sep 19, 2019

I'll definitely write up an RFC for this and move the community discussion to there. I was planning to do so anyway, but the work in me writing this code in the short term felt like less work for me than writing prose.

Regarding other Rust compilers, I wasn't sure what the stance was regarding non-"official" compiler implementations (namely based on cranelift).

I imagine that cross-language compatibility is a non-goal for Rust and so it's often deferred as a community effort. However, I think it's a space worth exploring and so far the community has done that with projects like wasm-bindgen and the now-deprecated curryrs.

Rust is in a unique position in its ability to expose multiple calling conventions. In this case with Swift, LLVM has already done most of the legwork for Rust and so it's rather trivial to support this in rustc.

@Centril regarding concerns with Swift's ABI changing, its ABI is stable as of 5.0. This includes the function call convention. Swift's standard library now ships with Apple's operating systems and is dynamically linked to rather than each program packaging their own copy themselves.

@Azoy
Copy link

Azoy commented Sep 19, 2019

@nvzqz I was just passing by and saw this and wanted to add that Swift ABI is only declared stable on Darwin systems. This means that Linux and Windows ABI for Swift are not "stable".

@Centril
Copy link
Contributor

Centril commented Sep 19, 2019

Regarding other Rust compilers, I wasn't sure what the stance was regarding non-"official" compiler implementations (namely based on cranelift).

Personally, I'd very much like to see cranelift become an officially supported backend for Rust. We'll also need to consider what impact this has on Miri.

Rust is in a unique position in its ability to expose multiple calling conventions. In this case with Swift, LLVM has already done most of the legwork for Rust and so it's rather trivial to support this in rustc.

True, but I suspect it would be non-trivial for Cranelift, Miri, and other compilers. It would probably also be a lot of complexity to add to a language specification.

@Centril regarding concerns with Swift's ABI changing, its ABI is stable as of 5.0. This includes the function call convention.

What happens in Swift 6.0 and what would it mean for us?
(Questions to answer in any RFC ^^)

@joshtriplett
Copy link
Member

joshtriplett commented Sep 20, 2019

I see no reason why we have to tie "support for the Swift ABI" to "guaranteed support for the Swift ABI on all targets and compiler backends". This should be like extern "fastcall" or extern "win64".

I don't think it's obligatory for the cranelift backend to support every possible calling convention that the LLVM backend does, even on the same target.

I would propose that we accept support for this in nightly, discuss questions of how to support it in various backends in parallel, and gate stabilization on the resolution of such discussions.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-21T09:12:14.6919158Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-21T09:12:14.7110826Z ##[command]git config gc.auto 0
2019-09-21T09:12:14.7185403Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-21T09:12:14.7249730Z ##[command]git config --get-all http.proxy
2019-09-21T09:12:14.7421093Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64582/merge:refs/remotes/pull/64582/merge
---
2019-09-21T10:15:45.0267080Z .................................................................................................... 1500/9029
2019-09-21T10:15:51.0622017Z .................................................................................................... 1600/9029
2019-09-21T10:16:03.9656906Z .....................................................................i...............i.............. 1700/9029
2019-09-21T10:16:10.9618060Z .................................................................................................... 1800/9029
2019-09-21T10:16:26.8384908Z ............................................................iiiii................................... 1900/9029
2019-09-21T10:16:39.1523314Z .................................................................................................... 2100/9029
2019-09-21T10:16:41.7428185Z .................................................................................................... 2200/9029
2019-09-21T10:16:45.0847162Z .................................................................................................... 2300/9029
2019-09-21T10:16:54.0074390Z .................................................................................................... 2400/9029
---
2019-09-21T10:19:57.2440908Z ................................................i...............i................................... 4700/9029
2019-09-21T10:20:07.0534308Z .................................................................................................... 4800/9029
2019-09-21T10:20:15.2767170Z .................................................................................................... 4900/9029
2019-09-21T10:20:25.1487273Z .................................................................................................... 5000/9029
2019-09-21T10:20:33.2894910Z ................................ii.ii............................................................... 5100/9029
2019-09-21T10:20:43.1014920Z .................................................................................................... 5300/9029
2019-09-21T10:20:53.9858015Z ................................................................................................i... 5400/9029
2019-09-21T10:21:02.8943880Z .................................................................................................... 5500/9029
2019-09-21T10:21:07.8952839Z .................................................................................................... 5600/9029
2019-09-21T10:21:07.8952839Z .................................................................................................... 5600/9029
2019-09-21T10:21:19.0394169Z ...........................................................................................ii...i..i 5700/9029
2019-09-21T10:21:34.0961825Z i...........i....................................................................................... 5800/9029
2019-09-21T10:21:55.3817260Z .................................................................................................... 6000/9029
2019-09-21T10:21:55.3817260Z .................................................................................................... 6000/9029
2019-09-21T10:22:03.8386368Z .............................................................................................i..ii.. 6100/9029
2019-09-21T10:22:33.6494645Z .................................................................................................... 6300/9029
2019-09-21T10:22:38.4095361Z ....................................................i............................................... 6400/9029
2019-09-21T10:22:40.7428341Z ...................................................F................................................ 6500/9029
2019-09-21T10:22:43.3438646Z ........................i........................................................................... 6600/9029
---
2019-09-21T10:27:02.7843636Z 
2019-09-21T10:27:02.7844674Z ---- [ui] ui/codemap_tests/unicode.rs stdout ----
2019-09-21T10:27:02.7844821Z diff of stderr:
2019-09-21T10:27:02.7844858Z 
2019-09-21T10:27:02.7845175Z 4 LL | extern "路濫狼á́́" fn foo() {}
2019-09-21T10:27:02.7845235Z 5    |        ^^^^^^^^^ invalid ABI
2019-09-21T10:27:02.7845304Z 6    |
2019-09-21T10:27:02.7845791Z -    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7846274Z +    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7846439Z 9 error: aborting due to previous error
2019-09-21T10:27:02.7846507Z 10 
2019-09-21T10:27:02.7846540Z 
2019-09-21T10:27:02.7846570Z 
2019-09-21T10:27:02.7846570Z 
2019-09-21T10:27:02.7846622Z The actual stderr differed from the expected stderr.
2019-09-21T10:27:02.7846974Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode/unicode.stderr
2019-09-21T10:27:02.7847253Z To update references, rerun the tests and pass the `--bless` flag
2019-09-21T10:27:02.7848071Z To only update this specific test, also pass `--test-args codemap_tests/unicode.rs`
2019-09-21T10:27:02.7848312Z error: 1 errors occurred comparing output.
2019-09-21T10:27:02.7848387Z status: exit code: 1
2019-09-21T10:27:02.7848387Z status: exit code: 1
2019-09-21T10:27:02.7849217Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/codemap_tests/unicode.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/codemap_tests/unicode/auxiliary" "-A" "unused"
2019-09-21T10:27:02.7849599Z ------------------------------------------
2019-09-21T10:27:02.7849636Z 
2019-09-21T10:27:02.7849876Z ------------------------------------------
2019-09-21T10:27:02.7849948Z stderr:
2019-09-21T10:27:02.7849948Z stderr:
2019-09-21T10:27:02.7850196Z ------------------------------------------
2019-09-21T10:27:02.7850455Z error[E0703]: invalid ABI: found `路濫狼á́́`
2019-09-21T10:27:02.7850794Z    |
2019-09-21T10:27:02.7850794Z    |
2019-09-21T10:27:02.7851073Z LL | extern "路濫狼á́́" fn foo() {} //~ ERROR invalid ABI
2019-09-21T10:27:02.7851175Z    |        ^^^^^^^^^ invalid ABI
2019-09-21T10:27:02.7851480Z    |
2019-09-21T10:27:02.7851992Z    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7852125Z error: aborting due to previous error
2019-09-21T10:27:02.7852158Z 
2019-09-21T10:27:02.7852188Z 
2019-09-21T10:27:02.7852449Z ------------------------------------------
2019-09-21T10:27:02.7852449Z ------------------------------------------
2019-09-21T10:27:02.7852485Z 
2019-09-21T10:27:02.7852514Z 
2019-09-21T10:27:02.7852756Z ---- [ui] ui/parser/issue-8537.rs stdout ----
2019-09-21T10:27:02.7852961Z diff of stderr:
2019-09-21T10:27:02.7853001Z 
2019-09-21T10:27:02.7853266Z 4 LL |   "invalid-ab_isize"
2019-09-21T10:27:02.7853322Z 5    |   ^^^^^^^^^^^^^^^^^^ invalid ABI
2019-09-21T10:27:02.7853392Z 6    |
2019-09-21T10:27:02.7853835Z -    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7854318Z +    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7854462Z 9 error: aborting due to previous error
2019-09-21T10:27:02.7854529Z 10 
2019-09-21T10:27:02.7854564Z 
2019-09-21T10:27:02.7854594Z 
2019-09-21T10:27:02.7854594Z 
2019-09-21T10:27:02.7854646Z The actual stderr differed from the expected stderr.
2019-09-21T10:27:02.7854999Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/parser/issue-8537/issue-8537.stderr
2019-09-21T10:27:02.7855279Z To update references, rerun the tests and pass the `--bless` flag
2019-09-21T10:27:02.7855569Z To only update this specific test, also pass `--test-args parser/issue-8537.rs`
2019-09-21T10:27:02.7855686Z error: 1 errors occurred comparing output.
2019-09-21T10:27:02.7855736Z status: exit code: 1
2019-09-21T10:27:02.7855736Z status: exit code: 1
2019-09-21T10:27:02.7856552Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/parser/issue-8537.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/parser/issue-8537" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/parser/issue-8537/auxiliary" "-A" "unused"
2019-09-21T10:27:02.7856920Z ------------------------------------------
2019-09-21T10:27:02.7856958Z 
2019-09-21T10:27:02.7857198Z ------------------------------------------
2019-09-21T10:27:02.7857248Z stderr:
2019-09-21T10:27:02.7857248Z stderr:
2019-09-21T10:27:02.7857919Z ------------------------------------------
2019-09-21T10:27:02.7858241Z error[E0703]: invalid ABI: found `invalid-ab_isize`
2019-09-21T10:27:02.7858499Z   --> /checkout/src/test/ui/parser/issue-8537.rs:2:3
2019-09-21T10:27:02.7858574Z    |
2019-09-21T10:27:02.7858850Z LL |   "invalid-ab_isize" //~ ERROR invalid ABI
2019-09-21T10:27:02.7858912Z    |   ^^^^^^^^^^^^^^^^^^ invalid ABI
2019-09-21T10:27:02.7858963Z    |
2019-09-21T10:27:02.7859810Z    = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, Swift, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
2019-09-21T10:27:02.7859978Z error: aborting due to previous error
2019-09-21T10:27:02.7860014Z 
2019-09-21T10:27:02.7860046Z 
2019-09-21T10:27:02.7860387Z ------------------------------------------
2019-09-21T10:27:02.7860387Z ------------------------------------------
2019-09-21T10:27:02.7860427Z 
2019-09-21T10:27:02.7860477Z 
2019-09-21T10:27:02.7860744Z ---- [ui] ui/reify-intrinsic.rs stdout ----
2019-09-21T10:27:02.7860981Z diff of stderr:
2019-09-21T10:27:02.7861015Z 
2019-09-21T10:27:02.7861101Z 8    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-09-21T10:27:02.7861162Z 9    |
2019-09-21T10:27:02.7861519Z 10    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-09-21T10:27:02.7861878Z -               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}`
2019-09-21T10:27:02.7862207Z +               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-09-21T10:27:02.7862377Z 12 
2019-09-21T10:27:02.7862850Z - error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-09-21T10:27:02.7863265Z + error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-09-21T10:27:02.7863554Z 14   --> $DIR/reify-intrinsic.rs:11:13
2019-09-21T10:27:02.7863629Z 15    |
2019-09-21T10:27:02.7863945Z 16 LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-09-21T10:27:02.7864021Z 
2019-09-21T10:27:02.7864096Z The actual stderr differed from the expected stderr.
2019-09-21T10:27:02.7864438Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-09-21T10:27:02.7864438Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-09-21T10:27:02.7864731Z To update references, rerun the tests and pass the `--bless` flag
2019-09-21T10:27:02.7865064Z To only update this specific test, also pass `--test-args reify-intrinsic.rs`
2019-09-21T10:27:02.7865161Z error: 1 errors occurred comparing output.
2019-09-21T10:27:02.7865234Z status: exit code: 1
2019-09-21T10:27:02.7865234Z status: exit code: 1
2019-09-21T10:27:02.7866037Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/reify-intrinsic.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/auxiliary" "-A" "unused"
2019-09-21T10:27:02.7866436Z ------------------------------------------
2019-09-21T10:27:02.7866476Z 
2019-09-21T10:27:02.7866755Z ------------------------------------------
2019-09-21T10:27:02.7866830Z stderr:
2019-09-21T10:27:02.7866830Z stderr:
2019-09-21T10:27:02.7867092Z ------------------------------------------
2019-09-21T10:27:02.7867152Z error[E0308]: cannot coerce intrinsics to function pointers
2019-09-21T10:27:02.7867750Z   --> /checkout/src/test/ui/reify-intrinsic.rs:6:64
2019-09-21T10:27:02.7867824Z    |
2019-09-21T10:27:02.7868172Z LL |     let _: unsafe extern "rust-intrinsic" fn(isize) -> usize = std::mem::transmute;
2019-09-21T10:27:02.7868343Z    |                                                                |
2019-09-21T10:27:02.7868407Z    |                                                                cannot coerce intrinsics to function pointers
2019-09-21T10:27:02.7868502Z    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-09-21T10:27:02.7868562Z    |
2019-09-21T10:27:02.7868562Z    |
2019-09-21T10:27:02.7868877Z    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-09-21T10:27:02.7869185Z               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-09-21T10:27:02.7869228Z 
2019-09-21T10:27:02.7869600Z error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-09-21T10:27:02.7870170Z    |
2019-09-21T10:27:02.7870170Z    |
2019-09-21T10:27:02.7870458Z LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-09-21T10:27:02.7870582Z 
2019-09-21T10:27:02.7870631Z error: aborting due to 2 previous errors
2019-09-21T10:27:02.7870682Z 
2019-09-21T10:27:02.7870733Z Some errors have detailed explanations: E0308, E0606.
---
2019-09-21T10:27:02.7890265Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:536:22
2019-09-21T10:27:02.7890400Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-09-21T10:27:02.7917094Z 
2019-09-21T10:27:02.7919002Z 
2019-09-21T10:27:02.7923168Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-09-21T10:27:02.7925045Z 
2019-09-21T10:27:02.7925426Z 
2019-09-21T10:27:02.7925857Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-09-21T10:27:02.7926267Z Build completed unsuccessfully in 1:07:40
2019-09-21T10:27:02.7926267Z Build completed unsuccessfully in 1:07:40
2019-09-21T10:27:02.7981978Z == clock drift check ==
2019-09-21T10:27:02.8014825Z   local time: Sat Sep 21 10:27:02 UTC 2019
2019-09-21T10:27:02.9506965Z   network time: Sat, 21 Sep 2019 10:27:02 GMT
2019-09-21T10:27:02.9514792Z == end clock drift check ==
2019-09-21T10:27:04.1051814Z ##[error]Bash exited with code '1'.
2019-09-21T10:27:04.1120985Z ##[section]Starting: Checkout
2019-09-21T10:27:04.1123190Z ==============================================================================
2019-09-21T10:27:04.1123244Z Task         : Get sources
2019-09-21T10:27:04.1123288Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@Centril
Copy link
Contributor

Centril commented Sep 21, 2019

I see no reason why we have to tie "support for the Swift ABI" to "guaranteed support for the Swift ABI on all targets and compiler backends". This should be like extern "fastcall" or extern "win64".

I disagree with the comparison to win64. I think this is like extern "C" since Swift is a programming language, not a platform.

I don't think it's obligatory for the cranelift backend to support every possible calling convention that the LLVM backend does, even on the same target.

It seems to me important that the cranelift backend should have rough parity with the LLVM backend if it is actually going to be used, e.g. by default in debug mode in the future, and not have a multitude of portability concerns.

@bjorn3
Copy link
Member

bjorn3 commented Sep 22, 2019

@Centril

Quoting https://github.com/apple/swift/blob/07750f5e1d24368d751fb7bfe322026e663774f2/docs/ABI/RegisterUsage.md:

From Swift 5, the calling convention register allocation for 64-bit architectures is largely based on existing standards, with the addition of the context and error return registers discussed in the ABI stability manifesto:

It seems it is just an extension of the SysV abi with two extra registers having a special purpose. It shouldn't be too hard too implement in Cranelift.

cc @sunfishcode (I think you know more about the details of Cranelift abi legalization and abi's in general than me.)

@bjorn3
Copy link
Member

bjorn3 commented Sep 22, 2019

Does the Swift abi needs its own classify_arg in https://github.com/rust-lang/rust/tree/master/src/librustc_target/abi/call?

@joelpalmer joelpalmer added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 30, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-10-03T13:47:00.7871066Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-10-03T13:47:00.8050909Z ##[command]git config gc.auto 0
2019-10-03T13:47:00.8128008Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-10-03T13:47:00.8193653Z ##[command]git config --get-all http.proxy
2019-10-03T13:47:00.8327881Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64582/merge:refs/remotes/pull/64582/merge
---
2019-10-03T14:47:48.9150847Z .................................................................................................... 1500/9095
2019-10-03T14:47:55.7736201Z .................................................................................................... 1600/9095
2019-10-03T14:48:05.2518903Z .................................................................................................... 1700/9095
2019-10-03T14:48:14.0193081Z ...i...............i................................................................................ 1800/9095
2019-10-03T14:48:21.0200991Z ..............................................................................................iiiii. 1900/9095
2019-10-03T14:48:43.5370938Z .................................................................................................... 2100/9095
2019-10-03T14:48:45.9416026Z .................................................................................................... 2200/9095
2019-10-03T14:48:48.5183855Z .................................................................................................... 2300/9095
2019-10-03T14:48:55.0018694Z .................................................................................................... 2400/9095
---
2019-10-03T14:51:53.4429343Z ..................................................................................i..............i.. 4700/9095
2019-10-03T14:52:01.6909842Z .................................................................................................... 4800/9095
2019-10-03T14:52:11.9987050Z .................................................................................................... 4900/9095
2019-10-03T14:52:17.9714464Z .................................................................................................... 5000/9095
2019-10-03T14:52:29.4722023Z .........................................................................ii.ii...................... 5100/9095
2019-10-03T14:52:39.2887376Z .................................................................................................... 5300/9095
2019-10-03T14:52:48.9851716Z .................................................................................................... 5400/9095
2019-10-03T14:52:56.3064144Z .......................................i............................................................ 5500/9095
2019-10-03T14:53:02.8095210Z .................................................................................................... 5600/9095
2019-10-03T14:53:02.8095210Z .................................................................................................... 5600/9095
2019-10-03T14:53:13.8924010Z .................................................................................................... 5700/9095
2019-10-03T14:53:24.7673739Z ....................................ii...i..ii...........i.......................................... 5800/9095
2019-10-03T14:53:47.0572494Z .................................................................................................... 6000/9095
2019-10-03T14:53:54.5233894Z .................................................................................................... 6100/9095
2019-10-03T14:53:54.5233894Z .................................................................................................... 6100/9095
2019-10-03T14:54:07.5782015Z .........................................i..ii...................................................... 6200/9095
2019-10-03T14:54:29.0396347Z .................................................................................................... 6400/9095
2019-10-03T14:54:31.1871830Z .i.................................................................................................. 6500/9095
2019-10-03T14:54:33.4387366Z .........................................................................i.......................... 6600/9095
2019-10-03T14:54:36.4172389Z .................................................................................................... 6700/9095
---
2019-10-03T14:58:44.1389355Z diff of stderr:
2019-10-03T14:58:44.1389707Z 
2019-10-03T14:58:44.1389941Z 8    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-10-03T14:58:44.1390137Z 9    |
2019-10-03T14:58:44.1390625Z 10    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-10-03T14:58:44.1391113Z -               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}`
2019-10-03T14:58:44.1391905Z +               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-10-03T14:58:44.1392082Z 12 
2019-10-03T14:58:44.1392546Z - error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T14:58:44.1393450Z + error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T14:58:44.1394291Z 14   --> $DIR/reify-intrinsic.rs:11:13
2019-10-03T14:58:44.1394475Z 15    |
2019-10-03T14:58:44.1394895Z 16 LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-10-03T14:58:44.1395371Z 
2019-10-03T14:58:44.1395514Z The actual stderr differed from the expected stderr.
2019-10-03T14:58:44.1395925Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-10-03T14:58:44.1395925Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-10-03T14:58:44.1396671Z To update references, rerun the tests and pass the `--bless` flag
2019-10-03T14:58:44.1397215Z To only update this specific test, also pass `--test-args reify-intrinsic.rs`
2019-10-03T14:58:44.1398162Z error: 1 errors occurred comparing output.
2019-10-03T14:58:44.1398319Z status: exit code: 1
2019-10-03T14:58:44.1398319Z status: exit code: 1
2019-10-03T14:58:44.1400176Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/reify-intrinsic.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/auxiliary" "-A" "unused"
2019-10-03T14:58:44.1400946Z ------------------------------------------
2019-10-03T14:58:44.1401128Z 
2019-10-03T14:58:44.1401639Z ------------------------------------------
2019-10-03T14:58:44.1401818Z stderr:
2019-10-03T14:58:44.1401818Z stderr:
2019-10-03T14:58:44.1402120Z ------------------------------------------
2019-10-03T14:58:44.1402299Z error[E0308]: cannot coerce intrinsics to function pointers
2019-10-03T14:58:44.1402649Z   --> /checkout/src/test/ui/reify-intrinsic.rs:6:64
2019-10-03T14:58:44.1402811Z    |
2019-10-03T14:58:44.1403607Z LL |     let _: unsafe extern "rust-intrinsic" fn(isize) -> usize = std::mem::transmute;
2019-10-03T14:58:44.1403961Z    |                                                                |
2019-10-03T14:58:44.1404116Z    |                                                                cannot coerce intrinsics to function pointers
2019-10-03T14:58:44.1404253Z    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-10-03T14:58:44.1404397Z    |
2019-10-03T14:58:44.1404397Z    |
2019-10-03T14:58:44.1404731Z    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-10-03T14:58:44.1405305Z               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-10-03T14:58:44.1405486Z 
2019-10-03T14:58:44.1405973Z error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T14:58:44.1406563Z    |
2019-10-03T14:58:44.1406563Z    |
2019-10-03T14:58:44.1406899Z LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-10-03T14:58:44.1407377Z 
2019-10-03T14:58:44.1407860Z error: aborting due to 2 previous errors
2019-10-03T14:58:44.1408084Z 
2019-10-03T14:58:44.1408248Z Some errors have detailed explanations: E0308, E0606.
---
2019-10-03T14:58:44.1430630Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:537:22
2019-10-03T14:58:44.1430731Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-10-03T14:58:44.1445787Z 
2019-10-03T14:58:44.1445881Z 
2019-10-03T14:58:44.1447617Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-10-03T14:58:44.1448610Z 
2019-10-03T14:58:44.1448642Z 
2019-10-03T14:58:44.1458296Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-10-03T14:58:44.1458385Z Build completed unsuccessfully in 1:04:34
2019-10-03T14:58:44.1458385Z Build completed unsuccessfully in 1:04:34
2019-10-03T14:58:44.1525742Z == clock drift check ==
2019-10-03T14:58:44.1536624Z   local time: Thu Oct  3 14:58:44 UTC 2019
2019-10-03T14:58:44.2256948Z   network time: Thu, 03 Oct 2019 14:58:44 GMT
2019-10-03T14:58:44.2257012Z == end clock drift check ==
2019-10-03T14:58:45.2304970Z ##[error]Bash exited with code '1'.
2019-10-03T14:58:45.2344007Z ##[section]Starting: Checkout
2019-10-03T14:58:45.2345501Z ==============================================================================
2019-10-03T14:58:45.2345563Z Task         : Get sources
2019-10-03T14:58:45.2345601Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-10-03T15:57:47.3757571Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-10-03T15:57:48.3559760Z ##[command]git config gc.auto 0
2019-10-03T15:57:48.3565359Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-10-03T15:57:48.3570368Z ##[command]git config --get-all http.proxy
2019-10-03T15:57:48.3574150Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64582/merge:refs/remotes/pull/64582/merge
---
2019-10-03T16:56:50.6760356Z .................................................................................................... 1500/9095
2019-10-03T16:56:57.2808378Z .................................................................................................... 1600/9095
2019-10-03T16:57:06.4970242Z .................................................................................................... 1700/9095
2019-10-03T16:57:15.2361356Z ...i...............i................................................................................ 1800/9095
2019-10-03T16:57:22.1828059Z ..............................................................................................iiiii. 1900/9095
2019-10-03T16:57:44.1234505Z .................................................................................................... 2100/9095
2019-10-03T16:57:46.5140339Z .................................................................................................... 2200/9095
2019-10-03T16:57:49.0877971Z .................................................................................................... 2300/9095
2019-10-03T16:57:55.3455746Z .................................................................................................... 2400/9095
---
2019-10-03T17:00:51.1216948Z .................................................................................i...............i.. 4700/9095
2019-10-03T17:00:59.6198236Z .................................................................................................... 4800/9095
2019-10-03T17:01:09.9232605Z .................................................................................................... 4900/9095
2019-10-03T17:01:16.0175869Z .................................................................................................... 5000/9095
2019-10-03T17:01:27.2948412Z .........................................................................ii.ii...................... 5100/9095
2019-10-03T17:01:36.9692297Z .................................................................................................... 5300/9095
2019-10-03T17:01:46.6271425Z .................................................................................................... 5400/9095
2019-10-03T17:01:53.8456462Z .......................................i............................................................ 5500/9095
2019-10-03T17:02:00.3433535Z .................................................................................................... 5600/9095
2019-10-03T17:02:00.3433535Z .................................................................................................... 5600/9095
2019-10-03T17:02:11.5181035Z .................................................................................................... 5700/9095
2019-10-03T17:02:22.3817048Z ....................................ii...i..ii...........i.......................................... 5800/9095
2019-10-03T17:02:44.4333382Z .................................................................................................... 6000/9095
2019-10-03T17:02:53.7558703Z .................................................................................................... 6100/9095
2019-10-03T17:02:53.7558703Z .................................................................................................... 6100/9095
2019-10-03T17:03:08.2643435Z .........................................i..ii...................................................... 6200/9095
2019-10-03T17:03:29.5660383Z .................................................................................................... 6400/9095
2019-10-03T17:03:31.8017693Z .i.................................................................................................. 6500/9095
2019-10-03T17:03:34.1199053Z .........................................................................i.......................... 6600/9095
2019-10-03T17:03:37.1623323Z .................................................................................................... 6700/9095
---
2019-10-03T17:07:44.8723893Z diff of stderr:
2019-10-03T17:07:44.8723922Z 
2019-10-03T17:07:44.8723968Z 8    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-10-03T17:07:44.8724013Z 9    |
2019-10-03T17:07:44.8724260Z 10    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-10-03T17:07:44.8724508Z -               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}`
2019-10-03T17:07:44.8724747Z +               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-10-03T17:07:44.8724789Z 12 
2019-10-03T17:07:44.8725074Z - error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T17:07:44.8726567Z + error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T17:07:44.8726814Z 14   --> $DIR/reify-intrinsic.rs:11:13
2019-10-03T17:07:44.8726862Z 15    |
2019-10-03T17:07:44.8727142Z 16 LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-10-03T17:07:44.8727207Z 
2019-10-03T17:07:44.8727265Z The actual stderr differed from the expected stderr.
2019-10-03T17:07:44.8727579Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-10-03T17:07:44.8727579Z Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/reify-intrinsic.stderr
2019-10-03T17:07:44.8727825Z To update references, rerun the tests and pass the `--bless` flag
2019-10-03T17:07:44.8728121Z To only update this specific test, also pass `--test-args reify-intrinsic.rs`
2019-10-03T17:07:44.8728227Z error: 1 errors occurred comparing output.
2019-10-03T17:07:44.8728276Z status: exit code: 1
2019-10-03T17:07:44.8728276Z status: exit code: 1
2019-10-03T17:07:44.8729272Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/reify-intrinsic.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/reify-intrinsic/auxiliary" "-A" "unused"
2019-10-03T17:07:44.8729718Z ------------------------------------------
2019-10-03T17:07:44.8729745Z 
2019-10-03T17:07:44.8729916Z ------------------------------------------
2019-10-03T17:07:44.8729952Z stderr:
2019-10-03T17:07:44.8729952Z stderr:
2019-10-03T17:07:44.8730135Z ------------------------------------------
2019-10-03T17:07:44.8730176Z error[E0308]: cannot coerce intrinsics to function pointers
2019-10-03T17:07:44.8730363Z   --> /checkout/src/test/ui/reify-intrinsic.rs:6:64
2019-10-03T17:07:44.8730418Z    |
2019-10-03T17:07:44.8730615Z LL |     let _: unsafe extern "rust-intrinsic" fn(isize) -> usize = std::mem::transmute;
2019-10-03T17:07:44.8730721Z    |                                                                |
2019-10-03T17:07:44.8730765Z    |                                                                cannot coerce intrinsics to function pointers
2019-10-03T17:07:44.8730949Z    |                                                                help: use parentheses to call this function: `std::mem::transmute(...)`
2019-10-03T17:07:44.8731008Z    |
2019-10-03T17:07:44.8731008Z    |
2019-10-03T17:07:44.8731293Z    = note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
2019-10-03T17:07:44.8731543Z               found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`
2019-10-03T17:07:44.8731574Z 
2019-10-03T17:07:44.8731829Z error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
2019-10-03T17:07:44.8732074Z    |
2019-10-03T17:07:44.8732074Z    |
2019-10-03T17:07:44.8732276Z LL |     let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
2019-10-03T17:07:44.8732371Z 
2019-10-03T17:07:44.8732405Z error: aborting due to 2 previous errors
2019-10-03T17:07:44.8732428Z 
2019-10-03T17:07:44.8732479Z Some errors have detailed explanations: E0308, E0606.
---
2019-10-03T17:07:44.8761921Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:537:22
2019-10-03T17:07:44.8762010Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-10-03T17:07:44.8778278Z 
2019-10-03T17:07:44.8778376Z 
2019-10-03T17:07:44.8780424Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-10-03T17:07:44.8780905Z 
2019-10-03T17:07:44.8780930Z 
2019-10-03T17:07:44.8787542Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-10-03T17:07:44.8787955Z Build completed unsuccessfully in 1:02:57
2019-10-03T17:07:44.8787955Z Build completed unsuccessfully in 1:02:57
2019-10-03T17:07:44.8839477Z == clock drift check ==
2019-10-03T17:07:44.8852995Z   local time: Thu Oct  3 17:07:44 UTC 2019
2019-10-03T17:07:45.0496626Z   network time: Thu, 03 Oct 2019 17:07:45 GMT
2019-10-03T17:07:45.0502762Z == end clock drift check ==
2019-10-03T17:07:46.2018817Z ##[error]Bash exited with code '1'.
2019-10-03T17:07:46.2065418Z ##[section]Starting: Checkout
2019-10-03T17:07:46.2067265Z ==============================================================================
2019-10-03T17:07:46.2067325Z Task         : Get sources
2019-10-03T17:07:46.2067395Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@nvzqz
Copy link
Contributor Author

nvzqz commented Oct 4, 2019

I'll get around to writing an RFC this week.


Anyone have an idea as to why this keeps coming up at reify-intrinsic.rs:11:13?

- found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}`
+ found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}`

- error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
+ error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::mem::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid

@mominul
Copy link
Contributor

mominul commented Oct 5, 2019

This issue is #65036 and the fix is #65043

@bors
Copy link
Contributor

bors commented Oct 7, 2019

☔ The latest upstream changes (presumably #64906) made this pull request unmergeable. Please resolve the merge conflicts.

@zackmdavis zackmdavis removed their assignment Oct 7, 2019
@hdhoang
Copy link
Contributor

hdhoang commented Oct 17, 2019

ping from triage @nvzqz, any updates on this? thanks!

@@ -519,6 +519,9 @@ declare_features! (
/// Allows the use of or-patterns (e.g., `0 | 1`).
(active, or_patterns, "1.38.0", Some(54883), None),

/// Allows using the `Swift` ABI.
(active, abi_swift, "1.38.0", Some(0), None),
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unsure as to what Rust version I would put here?

@nvzqz
Copy link
Contributor Author

nvzqz commented Oct 17, 2019

@hdhoang thanks for the reminder! I'll actually write the RFC for this soon. 😄

@nvzqz nvzqz changed the title [WIP] Add Swift function call ABI Add Swift function call ABI Oct 18, 2019
@Dylan-DPC-zz Dylan-DPC-zz added S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 21, 2019
@Dylan-DPC-zz
Copy link

this is blocked because it requires an rfc

@Dylan-DPC-zz
Copy link

r? @zackmdavis

@Mark-Simulacrum
Copy link
Member

Closing -- we can reopen when/if the RFC lands.

@Mark-Simulacrum Mark-Simulacrum added S-blocked-closed and removed S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. labels Oct 24, 2019
@edwinsmith
Copy link

Curious if an RFC was ever submitted, and/or if the plan included adding the swift_context and swift_error parameter attributes.

@UebelAndre
Copy link

Hey @nvzqz, just a follow up, did you get around to writing the RFC?

@nvzqz
Copy link
Contributor Author

nvzqz commented Jul 18, 2020

@UebelAndre no this has been punted to my backlog since I've had to prioritize other things. I can't guarantee I'll get around to writing the RFC soon, but I do plan to get around to this within a few months.

@UebelAndre
Copy link

@nvzqz Sounds good, thanks for the heads up and I look forward to the RFC 😄

@jyn514 jyn514 added S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. and removed S-blocked-closed labels Mar 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-rfc This change is large or controversial enough that it should have an RFC accepted before doing it. S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.