Skip to content

Android/ARM: opt-level = 3 produces "LLVM ERROR: Constant Island pass failed to converge" on GNU/Linux #32986

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

Closed
alopatindev opened this issue Apr 15, 2016 · 3 comments
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.

Comments

@alopatindev
Copy link
Contributor

alopatindev commented Apr 15, 2016

Building servo (7bd2381) for Android (./mach build --verbose --release --android) fails when compiling servo/.cargo/registry/src/github.1485827954.workers.dev-88ac128001ac3a9a/cssparser-0.5.5/src/lib.rs

Environment: GNU/Linux, android-ndk-11c

$ ./mach rustc --version --verbose
rustc 1.9.0-nightly (241a9d0dd 2016-04-05)
binary: rustc
commit-hash: 241a9d0ddf99fd40d273c615e9b1e8ce6052d94a
commit-date: 2016-04-05
host: x86_64-unknown-linux-gnu
release: 1.9.0-nightly

Building output:

...
LLVM ERROR: Constant Island pass failed to converge!
Build failed, waiting for other jobs to finish...
error: Could not compile `cssparser`.
Caused by:
  Process didn't exit successfully: `rustc /home/sbar/git/servo/.cargo/registry/src/github.1485827954.workers.dev-88ac128001ac3a9a/cssparser-0.5.5/src/lib.rs --crate-name cssparser --crate-type lib -C opt-level=3 -C codegen-units=4 --cfg feature="serde" --cfg feature="heap_size" --cfg feature="heapsize" --cfg feature="heapsize_plugin" --cfg feature="serde_macros" --cfg feature="serde-serialization" -C metadata=a00db9153a066bec -C extra-filename=-a00db9153a066bec --out-dir /home/sbar/git/servo/target/arm-linux-androideabi/release/deps --emit=dep-info,link --target arm-linux-androideabi -C ar=arm-linux-androideabi-ar -C linker=/home/sbar/git/servo/components/servo/./fake-ld.sh -L dependency=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps -L dependency=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps --extern heapsize_plugin=/home/sbar/git/servo/target/release/deps/libheapsize_plugin-00846447151e4ac3.so --extern serde_macros=/home/sbar/git/servo/target/release/deps/libserde_macros-c550fbd19e352e36.so --extern serde=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps/libserde-3a777b14c091f0d1.rlib --extern heapsize=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps/libheapsize-6b0058e51ea0ec07.rlib --extern matches=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps/libmatches-030a774745cc4f96.rlib --extern encoding=/home/sbar/git/servo/target/arm-linux-androideabi/release/deps/libencoding-8b01435d6d00d080.rlib --cap-lints allow -C link-args=-fuse-ld=gold -C target-feature=+neon` (exit code: 1)

This issue doesn't reproduce with opt-level = 2

Also this issue doesn't reproduce when building for x86_64 (./mach build --verbose --release) with opt-level = 3

@alopatindev alopatindev changed the title Android/ARM: opt-level = 3 produces "LLVM ERROR: Constant Island pass failed to converge" Android/ARM: opt-level = 3 produces "LLVM ERROR: Constant Island pass failed to converge" on GNU/Linux Apr 15, 2016
@alexcrichton
Copy link
Member

I believe this was initially reported as servo/servo#10517 and @eddyb started diagnosis to conclude that the fix is upstream.

We should be able to just backport this to our current LLVM branch, although it'd be best if we could throw a test case along with it.

@alexcrichton alexcrichton added the A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. label Apr 15, 2016
@sanxiyn
Copy link
Member

sanxiyn commented May 3, 2016

LLVM backport merged in #33226.

@alexcrichton
Copy link
Member

It seems the backport was merged and I believe this was fixed, so closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.
Projects
None yet
Development

No branches or pull requests

3 participants