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

AArch64 bare-metal targets: Build rust-std #68334

Merged
merged 1 commit into from
Apr 3, 2020
Merged

AArch64 bare-metal targets: Build rust-std #68334

merged 1 commit into from
Apr 3, 2020

Conversation

andre-richter
Copy link
Member

This PR complements #68253

@rust-highfive
Copy link
Collaborator

r? @pietroalbini

(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 Jan 18, 2020
@andre-richter andre-richter requested a review from japaric January 18, 2020 08:23
@Centril Centril added the relnotes Marks issues that should be documented in the release notes of the next release. label Jan 18, 2020
@Centril Centril added this to the 1.42 milestone Jan 18, 2020
@Centril Centril added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jan 18, 2020
@jonas-schievink jonas-schievink added the O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state label Jan 18, 2020
@japaric
Copy link
Member

japaric commented Jan 20, 2020

Looks good to me. Thanks!

@bors r+

@bors
Copy link
Contributor

bors commented Jan 20, 2020

📌 Commit 50f3b5d has been approved by japaric

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 20, 2020
@pietroalbini
Copy link
Member

r? @japaric

Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Jan 20, 2020
AArch64 bare-metal targets: Build rust-std

This PR complements rust-lang#68253
@JohnTitor
Copy link
Member

Seems failed in #68384 (comment)
@bors r-

@bors bors 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-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 20, 2020
@andre-richter
Copy link
Member Author

Are the CC_aarch64_unknown_none and CC_aarch64_unknown_none_softloat in the Dockerfile wrong?

@andre-richter
Copy link
Member Author

I removed the CC_ envs. Kindly review again.

@japaric
Copy link
Member

japaric commented Jan 21, 2020

Ah, sorry. I overlooked the contents of the CC variables. If the cc crate does not automatically pick a suitable gcc compiler for these targets (because it doesn't know about them) then you need to set e.g. CC_aarch64_unknown_none to a valid gcc toolchain like arm-none-eabi-gcc. However, I'm not sure the arm-none-eabi-gcc toolchain can generate machine code for AArch64 so you may need to install a different toolchain in the Docker image (arm64-something-gcc, maybe?).

Also, if the default settings of the gcc toolchain do not match the codegen options of rustc (e.g. arm-none-eabi-gcc generates ARMv4 by default but rustc codegen produces Thumb instructions that run on ARMv7-M) then you'll need to set CFLAGS_$TARGET_NAME to something like -march=armv8. Check what the cc crate does for aarch64-unknown-linux-gnu and use that as a reference to pick the values of CC_ and CFLAGS_.

You can test the part of the build that's failing, without bootstrapping the compiler, by running xargo build --target aarch64-unknown-none --features c -vv on the compiler-builtins crate that's on crates.io (you may also need to set the COMPILER_RT_ROOT env var to the path to the C source code of the compiler-rt project -- this is included in the rust-lang/rust repo). If you set the CC and CFLAGS vars correctly that xargo command should complete successfully.

@pietroalbini
Copy link
Member

Also, you can test the builder locally with:

src/ci/docker/run.sh dist-various-1

@andre-richter
Copy link
Member Author

andre-richter commented Jan 21, 2020

Thanks guys, that helped a lot to understand what is going on in the Docker container. Appreciate it.

So I tried with Linaro's aarch64 bare-metal gcc:

https://releases.linaro.org/archive/15.06/components/toolchain/binaries/4.8/aarch64-elf/

Compiling compiler-builtins using xargo and with RUST_COMPILER_RT_ROOT like @japaric mentioned works for aarch64-unknown-none. This is the target with hardware FP enabled.

However, problems arise with aarch64-unknown-none-softfloat, where we disable FP codegen.

Kicking off an equivalent build of compiler-builtins fails because it tries to compile floating point code:

CFLAGS_aarch64_unknown_none_softfloat="-mstrict-align -march=armv8-a+nofp+nosimd" CC_aarch64_unknown_none_softfloat=$PWD/gcc/bin/aarch64-elf-gcc RUST_COMPILER_RT_ROOT=/opt/repos/rust/src/llvm-project/compiler-rt xargo build --target aarch64-unknown-none-softfloat --features c -vv

// Some omitted

[compiler_builtins 0.1.24] running: "/opt/compiler-builtins/gcc/bin/aarch64-elf-gcc" "/opt/compiler-builtins/gcc/bin/aarch64-elf-gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-mstrict-align" "-march=armv8-a+nofp+nosimd" "-fno-builtin" "-fvisibility=hidden" "-ffreestanding" "-DVISIBILITY_HIDDEN" "-o" "/opt/compiler-builtins/target/aarch64-unknown-none-softfloat/debug/build/compiler_builtins-2375755c04f9af94/out/comparetf2.o" "-c" "/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c"
[compiler_builtins 0.1.24] cargo:warning=In file included from /opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:40:0:
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/fp_lib.h: In function 'toRep':
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/fp_lib.h:218:23: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning= static __inline rep_t toRep(fp_t x) {
[compiler_builtins 0.1.24] cargo:warning=                       ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/fp_lib.h:222:5: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   } rep = {.f = x};
[compiler_builtins 0.1.24] cargo:warning=     ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c: In function '__letf2':
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45:32: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning= COMPILER_RT_ABI enum LE_RESULT __letf2(fp_t a, fp_t b) {
[compiler_builtins 0.1.24] cargo:warning=                                ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:45:32: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:47:28: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const srep_t aInt = toRep(a);
[compiler_builtins 0.1.24] cargo:warning=                            ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:48:28: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const srep_t bInt = toRep(b);
[compiler_builtins 0.1.24] cargo:warning=                            ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c: In function '__getf2':
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:98:32: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning= COMPILER_RT_ABI enum GE_RESULT __getf2(fp_t a, fp_t b) {
[compiler_builtins 0.1.24] cargo:warning=                                ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:98:32: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:100:28: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const srep_t aInt = toRep(a);
[compiler_builtins 0.1.24] cargo:warning=                            ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:101:28: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const srep_t bInt = toRep(b);
[compiler_builtins 0.1.24] cargo:warning=                            ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c: In function '__unordtf2':
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:128:21: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning= COMPILER_RT_ABI int __unordtf2(fp_t a, fp_t b) {
[compiler_builtins 0.1.24] cargo:warning=                     ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:128:21: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:129:27: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const rep_t aAbs = toRep(a) & absMask;
[compiler_builtins 0.1.24] cargo:warning=                           ^
[compiler_builtins 0.1.24] cargo:warning=/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c:130:27: sorry, unimplemented: '-mgeneral-regs-only' and floating point code
[compiler_builtins 0.1.24] cargo:warning=   const rep_t bAbs = toRep(b) & absMask;
[compiler_builtins 0.1.24] cargo:warning=                           ^
[compiler_builtins 0.1.24] exit code: 1
[compiler_builtins 0.1.24] 
[compiler_builtins 0.1.24] 
[compiler_builtins 0.1.24] error occurred: Command "/opt/compiler-builtins/gcc/bin/aarch64-elf-gcc" "/opt/compiler-builtins/gcc/bin/aarch64-elf-gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-mstrict-align" "-march=armv8-a+nofp+nosimd" "-fno-builtin" "-fvisibility=hidden" "-ffreestanding" "-DVISIBILITY_HIDDEN" "-o" "/opt/compiler-builtins/target/aarch64-unknown-none-softfloat/debug/build/compiler_builtins-2375755c04f9af94/out/comparetf2.o" "-c" "/opt/rust/src/llvm-project/compiler-rt/lib/builtins/comparetf2.c" with args "aarch64-elf-gcc" did not execute successfully (status code exit code: 1).
[compiler_builtins 0.1.24] 
[compiler_builtins 0.1.24] 
error: failed to run custom build command for `compiler_builtins v0.1.24 (/opt/compiler-builtins)`

Any knobs we can turn here to prevent the FP code compilation?
Probably a patch to build.rs in compiler-builtins is needed?

@japaric
Copy link
Member

japaric commented Jan 23, 2020

Kicking off an equivalent build of compiler-builtins fails because it tries to compile floating point code:

Hmm, I don't see any errors there; just a warning. If C code's not compiling then you port it to Rust to fix the problem. If assembly code's failing to compile it could be that it should not be compiled in the first place because the target never uses the intrinsic; in that case you should modify compiler-builtins' build.rs to not build that assembly file / intrinsic for the soft float target. Or it could be the case that the assembly has some #ifdef pre-processor thing and the build.rs needs to define (see cc API docs) something to make it compile for the soft float target.

In any case, that needs to be fixed in compiler-builtins. Which means the soft float is blocked on a new crates.io release of that crate. On the other hand, the other aarch64 target can land now. IOW, you can modify this PR to land one target now and leave the other target for a follow up PR.

@andre-richter
Copy link
Member Author

andre-richter commented Jan 23, 2020

Unfortunately, I am lacking background on both compiler intrinsics knowledge and expectations with respect to what compilers like GCC are supposed to do with C code that "uses" floating point when the flags -march=armv8-a+nofp+nosimd are set. I need a little more guidance.

In the ARM Compiler 6.13 reference, I found this note:

There are no software floating-point libraries for targets in AArch64 state. At link time armlink links against AArch64 library code that can use floating-point and SIMD instructions and registers. This still applies if you compile the source with -march=+nofp+nosimd to prevent the compiler from using floating-point and SIMD instructions and registers.

To prevent the use of any floating-point instruction or register, either re-implement the library functions or create your own library that does not use floating-point instructions or registers.

This does not seem to be exactly what I observe with the Linaro bare-metal aarch64 GCC as shown in #68334 (comment). GCC bails out as soon as it hits FP code. For example, on definition of a long double or when an instruction for using a float register is about to be emitted.

My question is, what is the idiomatic "ARM-way" of solving this? Just not compiling any compiler-rt files emitting FP code? Soft-float library (doesn't seem to exist, at least for ARM's compiler)?
Also not sure if I got the "port to Rust if compilation fails". Because it would pull in its own soft-float library?

CC @parched, would appreciate an additional opinion.

@raw-bin
Copy link

raw-bin commented Jan 27, 2020

Hi Andre.

(Thanks for reaching out by the side!)

This one does come up occasionally.

The standard 64-bit Arm ARM - (the architecture reference manual) could give brave readers (it's a massive doc!) the impression that a processor implementation without hardware floating point support is permissible.

In reality, however, the Arm 64-bit PCS (Procedure Call Standard) mandates the use of a hardware floating point unit.

This is a universal expectation and any deviations are basically non-standard~broken.

In rare instances we have had partners make cases for going the non-hardware-fp way (for time-to-market or power-perf-area reasons) but no one implements such processors because of the cost of maintaining the corresponding non-standard toolchains and software.

Looking at the thread - and assuming I haven't misunderstood things - I would say that the idiomatic thing to do would be to not have a aarch64-unknown-none-softfloat compiler-builtins target.

Let me know if any further clarification is needed. Happy to try and help!

@andre-richter
Copy link
Member Author

Had a chat with @raw-bin offline. We are still struggling to understand if it can make sense to exclude all the compiler-rt files that would make an aarch64-gcc-elf with +nofp fail in order to arrive at a sane build of the library.

@japaric, the following files are the offending ones I identified. You know this topic a lot better. Please tell us what you think.

diff --git a/build.rs b/build.rs
index b520b62..56fe410 100644
--- a/build.rs
+++ b/build.rs
@@ -51,7 +51,7 @@ fn main() {
         //   time). This can probably be removed in the future
         if !target.contains("wasm32") && !target.contains("nvptx") && !target.starts_with("riscv") {
             #[cfg(feature = "c")]
-            c::compile(&llvm_target);
+            c::compile(&llvm_target, &target);
         }
     }
 
@@ -121,13 +121,24 @@ mod c {
     }
 
     /// Compile intrinsics from the compiler-rt C source code
-    pub fn compile(llvm_target: &[&str]) {
+    pub fn compile(llvm_target: &[&str], target: &String) {
         let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
         let target_env = env::var("CARGO_CFG_TARGET_ENV").unwrap();
         let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
         let target_vendor = env::var("CARGO_CFG_TARGET_VENDOR").unwrap();
+        let mut use_float = true;
         let cfg = &mut cc::Build::new();
 
+        // Evaluate if files containing floating point code should be considered.
+        if target_arch == "aarch64" {
+            let cflags_key = String::from("CFLAGS_") + &(target.to_owned().replace("-", "_"));
+            if let Ok(cflags_value) = env::var(cflags_key) {
+                if cflags_value.contains("+nofp") || cflags_value.contains("+nosimd") {
+                    use_float = false;
+                }
+            }
+        }
+
         cfg.warnings(false);
 
         if target_env == "msvc" {
@@ -166,34 +177,39 @@ mod c {
             ("__cmpdi2", "cmpdi2.c"),
             ("__ctzdi2", "ctzdi2.c"),
             ("__ctzsi2", "ctzsi2.c"),
-            ("__divdc3", "divdc3.c"),
-            ("__divsc3", "divsc3.c"),
-            ("__divxc3", "divxc3.c"),
-            ("__extendhfsf2", "extendhfsf2.c"),
             ("__int_util", "int_util.c"),
-            ("__muldc3", "muldc3.c"),
-            ("__mulsc3", "mulsc3.c"),
             ("__mulvdi3", "mulvdi3.c"),
             ("__mulvsi3", "mulvsi3.c"),
-            ("__mulxc3", "mulxc3.c"),
-            ("__negdf2", "negdf2.c"),
             ("__negdi2", "negdi2.c"),
-            ("__negsf2", "negsf2.c"),
             ("__negvdi2", "negvdi2.c"),
             ("__negvsi2", "negvsi2.c"),
             ("__paritydi2", "paritydi2.c"),
             ("__paritysi2", "paritysi2.c"),
             ("__popcountdi2", "popcountdi2.c"),
             ("__popcountsi2", "popcountsi2.c"),
-            ("__powixf2", "powixf2.c"),
             ("__subvdi3", "subvdi3.c"),
             ("__subvsi3", "subvsi3.c"),
-            ("__truncdfhf2", "truncdfhf2.c"),
-            ("__truncdfsf2", "truncdfsf2.c"),
-            ("__truncsfhf2", "truncsfhf2.c"),
             ("__ucmpdi2", "ucmpdi2.c"),
         ]);
 
+        if use_float {
+            sources.extend(&[
+                ("__divdc3", "divdc3.c"),
+                ("__divsc3", "divsc3.c"),
+                ("__divxc3", "divxc3.c"),
+                ("__extendhfsf2", "extendhfsf2.c"),
+                ("__muldc3", "muldc3.c"),
+                ("__mulsc3", "mulsc3.c"),
+                ("__mulxc3", "mulxc3.c"),
+                ("__negdf2", "negdf2.c"),
+                ("__negsf2", "negsf2.c"),
+                ("__powixf2", "powixf2.c"),
+                ("__truncdfhf2", "truncdfhf2.c"),
+                ("__truncdfsf2", "truncdfsf2.c"),
+                ("__truncsfhf2", "truncsfhf2.c"),
+            ]);
+        }
+
         // When compiling in rustbuild (the rust-lang/rust repo) this library
         // also needs to satisfy intrinsics that jemalloc or C in general may
         // need, so include a few more that aren't typically needed by
@@ -214,12 +230,15 @@ mod c {
                 ("__ffsti2", "ffsti2.c"),
                 ("__mulvti3", "mulvti3.c"),
                 ("__negti2", "negti2.c"),
-                ("__negvti2", "negvti2.c"),
                 ("__parityti2", "parityti2.c"),
                 ("__popcountti2", "popcountti2.c"),
                 ("__subvti3", "subvti3.c"),
                 ("__ucmpti2", "ucmpti2.c"),
             ]);
+
+            if use_float {
+                sources.extend(&[("__negvti2", "negvti2.c")]);
+            }
         }
 
         if target_vendor == "apple" {
@@ -372,7 +391,7 @@ mod c {
             ]);
         }
 
-        if target_arch == "aarch64" {
+        if target_arch == "aarch64" && use_float {
             sources.extend(&[
                 ("__comparetf2", "comparetf2.c"),
                 ("__extenddftf2", "extenddftf2.c"),

@andre-richter
Copy link
Member Author

I had looked at this part of the code briefly, but couldn’t see why it would early return for the -softfloat target but continue for the other one 🤔

@alexcrichton
Copy link
Member

Oh that I believe is due to this conditional which checks for the string -none-, not -none

@andre-richter
Copy link
Member Author

Aaaaah thanks for this pointer. Wouldn't have found that anytime soon.

Let me push a fix for that. After all, we want both targets to match for no_std.

Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Feb 29, 2020
…ark-Simulacrum

Fix no_std detection for target triples

The current check for wether a target is no_std or not is matching for the string `-none-` in a target triple. This doesn't work for triples that end in `-none`, like `aarch64-unknown-none`.

Fix this by matching for `-none` instead.

I checked for all the current target triples containing `none`, and this should not generate any false positives.

This fixes an issue encountered in rust-lang#68334
@andre-richter
Copy link
Member Author

All PRs are merged now that were needed.

A local run of src/ci/docker/run.sh dist-various-1 I just did was successful. I think we can give this another try now.

@andre-richter
Copy link
Member Author

Ping ☺️

@Dylan-DPC-zz
Copy link

@japaric this is ready to review

@Dylan-DPC-zz Dylan-DPC-zz added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Mar 10, 2020
@Centril Centril modified the milestones: 1.43, 1.44 Mar 10, 2020
@andre-richter
Copy link
Member Author

@rustbot modify labels: WG-embedded

@rustbot rustbot added the WG-embedded Working group: Embedded systems label Mar 25, 2020
@japaric
Copy link
Member

japaric commented Mar 31, 2020

@andre-richter sorry for missing the pings! Thanks again for pushing this to the finish line.

@bors r+

@bors
Copy link
Contributor

bors commented Mar 31, 2020

📌 Commit 176bf3c has been approved by japaric

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 31, 2020
bors added a commit to rust-lang-ci/rust that referenced this pull request Apr 3, 2020
Rollup of 5 pull requests

Successful merges:

 - rust-lang#68334 (AArch64 bare-metal targets: Build rust-std)
 - rust-lang#70224 (Clean up rustdoc js testers)
 - rust-lang#70532 (Miri engine: stronger type-based sanity check for assignments)
 - rust-lang#70698 (bootstrap: add `--json-output` for rust-analyzer)
 - rust-lang#70715 (Fix typo in operands section)

Failed merges:

r? @ghost
@bors
Copy link
Contributor

bors commented Apr 3, 2020

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

@bors bors removed the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Apr 3, 2020
@bors bors merged commit 73f0cf6 into rust-lang:master Apr 3, 2020
@bors bors added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Apr 3, 2020
ehuss added a commit to ehuss/rust-forge that referenced this pull request May 15, 2020
- aarch64-unknown-none: rust-lang/rust#68334
- aarch64-unknown-none-softfloat: rust-lang/rust#64589
- armv7-unknown-linux-gnueabi: rust-lang/rust#63107
- armv7-unknown-linux-musleabi: rust-lang/rust#63107
- aarch64-apple-tvos: rust-lang/rust#68191
- armv7a-none-eabihf: rust-lang/rust#68253
- i686-unknown-uefi: rust-lang/rust#64334
- thumbv7neon-unknown-linux-musleabihf: rust-lang/rust#66103
- x86_64-apple-ios-macabi: rust-lang/rust#63467
- x86_64-apple-tvos: rust-lang/rust#68191
- x86_64-linux-kernel: rust-lang/rust#64051
- x86_64-unknown-hermit-kernel: rust-lang/rust#66713
- x86_64-unknown-illumos: rust-lang/rust#71145

Moved to tier 2:
- aarch64-unknown-none: rust-lang/rust#68334
ehuss added a commit to ehuss/rust-forge that referenced this pull request May 15, 2020
The following targets are now built and distributed:

- aarch64-unknown-none: rust-lang/rust#68334
- mips64-unknown-linux-muslabi64: rust-lang/rust#65843
- mips64el-unknown-linux-muslabi64: rust-lang/rust#65843
- nvptx64-nvidia-cuda: rust-lang/rust#57937
- riscv32i-unknown-none-elf: rust-lang/rust#62784
- riscv64gc-unknown-linux-gnu: rust-lang/rust#68037
- thumbv8m.base-none-eabi: rust-lang/rust#59182
- thumbv8m.main-none-eabi : rust-lang/rust#56954
- thumbv8m.main-none-eabihf: rust-lang/rust#59182
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 8, 2020
Pkgsrc changes:
 * Remove a couple diffs which are now integrated upstream.
 * Adjust cargo checksums after upstream upgrades.
 * Belatedly bump the curl dependency
 * Unset DESTDIR during the build phase, to work around a mysterious
   build bug deep in the bowels of llvm.
 * Bump nearly all bootstraps to 1.43.1.

Upstream changes:

Version 1.44.0 (2020-06-04)
==========================

Language
--------
- [You can now use `async/.await` with `#[no_std]` enabled.][69033]
- [Added the `unused_braces` lint.][70081]

**Syntax-only changes**

- [Expansion-driven outline module parsing][69838]
```rust
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}
```

These are still rejected semantically, so you will likely receive an error but
these changes can be seen and parsed by macros and conditional compilation.

Compiler
--------
- [Rustc now respects the `-C codegen-units` flag in incremental mode.][70156]
  Additionally when in incremental mode rustc defaults to 256 codegen units.
- [Refactored `catch_unwind`, to have zero-cost unless unwinding is enabled and
  a panic is thrown.][67502]
- [Added tier 3\* support for the `aarch64-unknown-none` and
  `aarch64-unknown-none-softfloat` targets.][68334]
- [Added tier 3 support for `arm64-apple-tvos` and
  `x86_64-apple-tvos` targets.][68191]

Libraries
---------
- [Special cased `vec![]` to map directly to `Vec::new()`.][70632] This allows
  `vec![]` to be able to be used in `const` contexts.
- [`convert::Infallible` now implements `Hash`.][70281]
- [`OsString` now implements `DerefMut` and `IndexMut` returning
  a `&mut OsStr`.][70048]
- [Unicode 13 is now supported.][69929]
- [`String` now implements `From<&mut str>`.][69661]
- [`IoSlice` now implements `Copy`.][69403]
- [`Vec<T>` now implements `From<[T; N]>`.][68692] Where `N` is less than 32.
- [`proc_macro::LexError` now implements `fmt::Display` and `Error`.][68899]
- [`from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`,
  `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all
  integer types.][69373]

Stabilized APIs
---------------
- [`PathBuf::with_capacity`]
- [`PathBuf::capacity`]
- [`PathBuf::clear`]
- [`PathBuf::reserve`]
- [`PathBuf::reserve_exact`]
- [`PathBuf::shrink_to_fit`]
- [`f32::to_int_unchecked`]
- [`f64::to_int_unchecked`]
- [`Layout::align_to`]
- [`Layout::pad_to_align`]
- [`Layout::array`]
- [`Layout::extend`]

Cargo
-----
- [Added the `cargo tree` command which will print a tree graph of
  your dependencies.][cargo/8062] E.g.
  ```
    mdbook v0.3.2 (/Users/src/rust/mdbook)
  +-- ammonia v3.0.0
  |   +-- html5ever v0.24.0
  |   |   +-- log v0.4.8
  |   |   |   +-- cfg-if v0.1.9
  |   |   +-- mac v0.1.1
  |   |   +-- markup5ever v0.9.0
  |   |       +-- log v0.4.8 (*)
  |   |       +-- phf v0.7.24
  |   |       |   +-- phf_shared v0.7.24
  |   |       |       +-- siphasher v0.2.3
  |   |       |       +-- unicase v1.4.2
  |   |       |           [build-dependencies]
  |   |       |           +-- version_check v0.1.5
  ...
  ```
  You can also display dependencies on multiple versions of the same crate with
  `cargo tree -d` (short for `cargo tree --duplicates`).

Misc
----
- [Rustdoc now allows you to specify `--crate-version` to have rustdoc include
  the version in the sidebar.][69494]

Compatibility Notes
-------------------
- [Rustc now correctly generates static libraries on Windows GNU targets with
  the `.a` extension, rather than the previous `.lib`.][70937]
- [Removed the `-C no_integrated_as` flag from rustc.][70345]
- [The `file_name` property in JSON output of macro errors now points the actual
  source file rather than the previous format of `<NAME macros>`.][70969]
  **Note:** this may not point a file that actually exists on the user's system.
- [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
- [`mem::{zeroed, uninitialised}` will now panic when used with types that do
  not allow zero initialization such as `NonZeroU8`.][66059] This was
  previously a warning.
- [In 1.45.0 (the next release) converting a `f64` to `u32` using the `as`
  operator has been defined as a saturating operation.][71269] This was
  previously undefined behaviour, you can use the `{f64, f32}::to_int_unchecked`
  methods to continue using the current behaviour which may desirable in rare
  performance sensitive situations.

Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [dep_graph Avoid allocating a set on when the number reads are small.][69778]
- [Replace big JS dict with JSON parsing.][71250]

[69373]: rust-lang/rust#69373
[66059]: rust-lang/rust#66059
[68191]: rust-lang/rust#68191
[68899]: rust-lang/rust#68899
[71147]: rust-lang/rust#71147
[71250]: rust-lang/rust#71250
[70937]: rust-lang/rust#70937
[70969]: rust-lang/rust#70969
[70632]: rust-lang/rust#70632
[70281]: rust-lang/rust#70281
[70345]: rust-lang/rust#70345
[70048]: rust-lang/rust#70048
[70081]: rust-lang/rust#70081
[70156]: rust-lang/rust#70156
[71269]: rust-lang/rust#71269
[69838]: rust-lang/rust#69838
[69929]: rust-lang/rust#69929
[69661]: rust-lang/rust#69661
[69778]: rust-lang/rust#69778
[69494]: rust-lang/rust#69494
[69403]: rust-lang/rust#69403
[69033]: rust-lang/rust#69033
[68692]: rust-lang/rust#68692
[68334]: rust-lang/rust#68334
[67502]: rust-lang/rust#67502
[cargo/8062]: rust-lang/cargo#8062
[`PathBuf::with_capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.with_capacity
[`PathBuf::capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.capacity
[`PathBuf::clear`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.clear
[`PathBuf::reserve`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve
[`PathBuf::reserve_exact`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve_exact
[`PathBuf::shrink_to_fit`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.shrink_to_fit
[`f32::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_int_unchecked
[`f64::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_int_unchecked
[`Layout::align_to`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.align_to
[`Layout::pad_to_align`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.pad_to_align
[`Layout::array`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.array
[`Layout::extend`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.extend
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 9, 2020
Version 1.44.0 (2020-06-04)
==========================

Language
--------
- [You can now use `async/.await` with `#[no_std]` enabled.][69033]
- [Added the `unused_braces` lint.][70081]

**Syntax-only changes**

- [Expansion-driven outline module parsing][69838]
```rust
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}
```

These are still rejected semantically, so you will likely receive an error but
these changes can be seen and parsed by macros and conditional compilation.

Compiler
--------
- [Rustc now respects the `-C codegen-units` flag in incremental mode.][70156]
  Additionally when in incremental mode rustc defaults to 256 codegen units.
- [Refactored `catch_unwind` to have zero-cost, unless unwinding is enabled and
  a panic is thrown.][67502]
- [Added tier 3\* support for the `aarch64-unknown-none` and
  `aarch64-unknown-none-softfloat` targets.][68334]
- [Added tier 3 support for `arm64-apple-tvos` and
  `x86_64-apple-tvos` targets.][68191]


Libraries
---------
- [Special cased `vec![]` to map directly to `Vec::new()`.][70632] This allows
  `vec![]` to be able to be used in `const` contexts.
- [`convert::Infallible` now implements `Hash`.][70281]
- [`OsString` now implements `DerefMut` and `IndexMut` returning
  a `&mut OsStr`.][70048]
- [Unicode 13 is now supported.][69929]
- [`String` now implements `From<&mut str>`.][69661]
- [`IoSlice` now implements `Copy`.][69403]
- [`Vec<T>` now implements `From<[T; N]>`.][68692] Where `N` is at most 32.
- [`proc_macro::LexError` now implements `fmt::Display` and `Error`.][68899]
- [`from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`,
  `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all
  integer types.][69373]

Stabilized APIs
---------------
- [`PathBuf::with_capacity`]
- [`PathBuf::capacity`]
- [`PathBuf::clear`]
- [`PathBuf::reserve`]
- [`PathBuf::reserve_exact`]
- [`PathBuf::shrink_to_fit`]
- [`f32::to_int_unchecked`]
- [`f64::to_int_unchecked`]
- [`Layout::align_to`]
- [`Layout::pad_to_align`]
- [`Layout::array`]
- [`Layout::extend`]

Cargo
-----
- [Added the `cargo tree` command which will print a tree graph of
  your dependencies.][cargo/8062] E.g.
  ```
    mdbook v0.3.2 (/Users/src/rust/mdbook)
  ├── ammonia v3.0.0
  │   ├── html5ever v0.24.0
  │   │   ├── log v0.4.8
  │   │   │   └── cfg-if v0.1.9
  │   │   ├── mac v0.1.1
  │   │   └── markup5ever v0.9.0
  │   │       ├── log v0.4.8 (*)
  │   │       ├── phf v0.7.24
  │   │       │   └── phf_shared v0.7.24
  │   │       │       ├── siphasher v0.2.3
  │   │       │       └── unicase v1.4.2
  │   │       │           [build-dependencies]
  │   │       │           └── version_check v0.1.5
  ...
  ```
  You can also display dependencies on multiple versions of the same crate with
  `cargo tree -d` (short for `cargo tree --duplicates`).

Misc
----
- [Rustdoc now allows you to specify `--crate-version` to have rustdoc include
  the version in the sidebar.][69494]

Compatibility Notes
-------------------
- [Rustc now correctly generates static libraries on Windows GNU targets with
  the `.a` extension, rather than the previous `.lib`.][70937]
- [Removed the `-C no_integrated_as` flag from rustc.][70345]
- [The `file_name` property in JSON output of macro errors now points the actual
  source file rather than the previous format of `<NAME macros>`.][70969]
  **Note:** this may not point to a file that actually exists on the user's system.
- [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
- [`mem::{zeroed, uninitialised}` will now panic when used with types that do
  not allow zero initialization such as `NonZeroU8`.][66059] This was
  previously a warning.
- [In 1.45.0 (the next release) converting a `f64` to `u32` using the `as`
  operator has been defined as a saturating operation.][71269] This was previously
  undefined behaviour, but you can use the `{f64, f32}::to_int_unchecked` methods to
  continue using the current behaviour, which may be desirable in rare performance
  sensitive situations.

Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [dep_graph Avoid allocating a set on when the number reads are small.][69778]
- [Replace big JS dict with JSON parsing.][71250]

[69373]: rust-lang/rust#69373
[66059]: rust-lang/rust#66059
[68191]: rust-lang/rust#68191
[68899]: rust-lang/rust#68899
[71147]: rust-lang/rust#71147
[71250]: rust-lang/rust#71250
[70937]: rust-lang/rust#70937
[70969]: rust-lang/rust#70969
[70632]: rust-lang/rust#70632
[70281]: rust-lang/rust#70281
[70345]: rust-lang/rust#70345
[70048]: rust-lang/rust#70048
[70081]: rust-lang/rust#70081
[70156]: rust-lang/rust#70156
[71269]: rust-lang/rust#71269
[69838]: rust-lang/rust#69838
[69929]: rust-lang/rust#69929
[69661]: rust-lang/rust#69661
[69778]: rust-lang/rust#69778
[69494]: rust-lang/rust#69494
[69403]: rust-lang/rust#69403
[69033]: rust-lang/rust#69033
[68692]: rust-lang/rust#68692
[68334]: rust-lang/rust#68334
[67502]: rust-lang/rust#67502
[cargo/8062]: rust-lang/cargo#8062
[`PathBuf::with_capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.with_capacity
[`PathBuf::capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.capacity
[`PathBuf::clear`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.clear
[`PathBuf::reserve`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve
[`PathBuf::reserve_exact`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve_exact
[`PathBuf::shrink_to_fit`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.shrink_to_fit
[`f32::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_int_unchecked
[`f64::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_int_unchecked
[`Layout::align_to`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.align_to
[`Layout::pad_to_align`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.pad_to_align
[`Layout::array`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.array
[`Layout::extend`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.extend
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jul 6, 2020
Pkgsrc changes:
 * Remove the clutter caused by the cross-compile setup from Makefile
   (Now consigned to my own private cross.mk file.)
 * Remove a couple of patches which are now integrated upstream.
 * Minor adjustments to a couple of other patches.
 * Adjust cargo checksums after upstream upgrades.
 * Belatedly bump the curl dependency
 * If doing a "dist" build, unset DESTDIR during the build phase,
   to work around a mysterious build bug deep in the bowels of llvm,
   causing llvm tools to be installed to a directory unexpecetd by
   the rest of the rust build, ref.
   rust-lang/rust#73132
   A "dist" build is not expected to be followed by an "install".
 * Bump nearly all bootstraps to 1.43.1; NetBSD earmv7hf bootstrap
   bumped to 1.44.0, as that one now finally builds and works.

Upstream changes:

Version 1.44.0 (2020-06-04)
==========================

Language
--------
- [You can now use `async/.await` with `#[no_std]` enabled.][69033]
- [Added the `unused_braces` lint.][70081]

**Syntax-only changes**

- [Expansion-driven outline module parsing][69838]
```rust
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}
```

These are still rejected semantically, so you will likely receive an error but
these changes can be seen and parsed by macros and conditional compilation.

Compiler
--------
- [Rustc now respects the `-C codegen-units` flag in incremental mode.][70156]
  Additionally when in incremental mode rustc defaults to 256 codegen units.
- [Refactored `catch_unwind`, to have zero-cost unless unwinding is enabled and
  a panic is thrown.][67502]
- [Added tier 3\* support for the `aarch64-unknown-none` and
  `aarch64-unknown-none-softfloat` targets.][68334]
- [Added tier 3 support for `arm64-apple-tvos` and
  `x86_64-apple-tvos` targets.][68191]

Libraries
---------
- [Special cased `vec![]` to map directly to `Vec::new()`.][70632] This allows
  `vec![]` to be able to be used in `const` contexts.
- [`convert::Infallible` now implements `Hash`.][70281]
- [`OsString` now implements `DerefMut` and `IndexMut` returning
  a `&mut OsStr`.][70048]
- [Unicode 13 is now supported.][69929]
- [`String` now implements `From<&mut str>`.][69661]
- [`IoSlice` now implements `Copy`.][69403]
- [`Vec<T>` now implements `From<[T; N]>`.][68692] Where `N` is less than 32.
- [`proc_macro::LexError` now implements `fmt::Display` and `Error`.][68899]
- [`from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`,
  `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all
  integer types.][69373]

Stabilized APIs
---------------
- [`PathBuf::with_capacity`]
- [`PathBuf::capacity`]
- [`PathBuf::clear`]
- [`PathBuf::reserve`]
- [`PathBuf::reserve_exact`]
- [`PathBuf::shrink_to_fit`]
- [`f32::to_int_unchecked`]
- [`f64::to_int_unchecked`]
- [`Layout::align_to`]
- [`Layout::pad_to_align`]
- [`Layout::array`]
- [`Layout::extend`]

Cargo
-----
- [Added the `cargo tree` command which will print a tree graph of
  your dependencies.][cargo/8062] E.g.
  ```
    mdbook v0.3.2 (/Users/src/rust/mdbook)
  +-- ammonia v3.0.0
  |   +-- html5ever v0.24.0
  |   |   +-- log v0.4.8
  |   |   |   +-- cfg-if v0.1.9
  |   |   +-- mac v0.1.1
  |   |   +-- markup5ever v0.9.0
  |   |       +-- log v0.4.8 (*)
  |   |       +-- phf v0.7.24
  |   |       |   +-- phf_shared v0.7.24
  |   |       |       +-- siphasher v0.2.3
  |   |       |       +-- unicase v1.4.2
  |   |       |           [build-dependencies]
  |   |       |           +-- version_check v0.1.5
  ...
  ```
  You can also display dependencies on multiple versions of the same crate with
  `cargo tree -d` (short for `cargo tree --duplicates`).

Misc
----
- [Rustdoc now allows you to specify `--crate-version` to have rustdoc include
  the version in the sidebar.][69494]

Compatibility Notes
-------------------
- [Rustc now correctly generates static libraries on Windows GNU targets with
  the `.a` extension, rather than the previous `.lib`.][70937]
- [Removed the `-C no_integrated_as` flag from rustc.][70345]
- [The `file_name` property in JSON output of macro errors now points the actual
  source file rather than the previous format of `<NAME macros>`.][70969]
  **Note:** this may not point a file that actually exists on the user's system.
- [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
- [`mem::{zeroed, uninitialised}` will now panic when used with types that do
  not allow zero initialization such as `NonZeroU8`.][66059] This was
  previously a warning.
- [In 1.45.0 (the next release) converting a `f64` to `u32` using the `as`
  operator has been defined as a saturating operation.][71269] This was
  previously undefined behaviour, you can use the `{f64, f32}::to_int_unchecked`
  methods to continue using the current behaviour which may desirable in rare
  performance sensitive situations.

Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [dep_graph Avoid allocating a set on when the number reads are small.][69778]
- [Replace big JS dict with JSON parsing.][71250]

[69373]: rust-lang/rust#69373
[66059]: rust-lang/rust#66059
[68191]: rust-lang/rust#68191
[68899]: rust-lang/rust#68899
[71147]: rust-lang/rust#71147
[71250]: rust-lang/rust#71250
[70937]: rust-lang/rust#70937
[70969]: rust-lang/rust#70969
[70632]: rust-lang/rust#70632
[70281]: rust-lang/rust#70281
[70345]: rust-lang/rust#70345
[70048]: rust-lang/rust#70048
[70081]: rust-lang/rust#70081
[70156]: rust-lang/rust#70156
[71269]: rust-lang/rust#71269
[69838]: rust-lang/rust#69838
[69929]: rust-lang/rust#69929
[69661]: rust-lang/rust#69661
[69778]: rust-lang/rust#69778
[69494]: rust-lang/rust#69494
[69403]: rust-lang/rust#69403
[69033]: rust-lang/rust#69033
[68692]: rust-lang/rust#68692
[68334]: rust-lang/rust#68334
[67502]: rust-lang/rust#67502
[cargo/8062]: rust-lang/cargo#8062
[`PathBuf::with_capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.with_capacity
[`PathBuf::capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.capacity
[`PathBuf::clear`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.clear
[`PathBuf::reserve`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve
[`PathBuf::reserve_exact`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve_exact
[`PathBuf::shrink_to_fit`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.shrink_to_fit
[`f32::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_int_unchecked
[`f64::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_int_unchecked
[`Layout::align_to`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.align_to
[`Layout::pad_to_align`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.pad_to_align
[`Layout::array`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.array
[`Layout::extend`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.extend
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
O-Arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-embedded Working group: Embedded systems
Projects
None yet
Development

Successfully merging this pull request may close these issues.