Closed Bug 1667736 Opened 4 years ago Closed 4 years ago

packed_simd does not compile on nightly Rust

Categories

(Firefox Build System :: General, defect)

defect

Tracking

(firefox-esr78 fixed, firefox84 fixed)

RESOLVED FIXED
84 Branch
Tracking Status
firefox-esr78 --- fixed
firefox84 --- fixed

People

(Reporter: hsivonen, Assigned: hsivonen)

References

Details

Attachments

(2 files)

Rust compiler changed in a way that makes packed_simd not compile. Need to adjust our copy of packed_simd accordingly. This may be related to LLVM removing MMX support.

 0:14.63 error[E0432]: unresolved import `crate::arch::x86_64::__m64`
 0:14.63   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/api/into_bits/arch_specific.rs:51:15
 0:14.63    |
 0:14.63 51 |               $($arch_ty),*
 0:14.63    |                 ^^^^^^^^ no `__m64` in `arch::x86_64`
 0:14.63 ...
 0:14.63 86 | / impl_arch!(
 0:14.63 87 | |     [x86["x86"]: __m64], [x86_64["x86_64"]: __m64],
 0:14.63 88 | |     [arm["arm"]: int8x8_t, uint8x8_t, poly8x8_t, int16x4_t, uint16x4_t,
 0:14.63 89 | |      poly16x4_t, int32x2_t, uint32x2_t, float32x2_t, int64x1_t,
 0:14.63 ...  |
 0:14.63 96 | |     test: test_v64
 0:14.63 97 | | );
 0:14.63    | |__- in this macro invocation
 0:14.63    |
 0:14.63    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.63 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.63   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:47:21
 0:14.63    |
 0:14.63 47 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.63    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.63    |                     |                    |
 0:14.63    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.64    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.64    | 
 0:14.64   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:41:1
 0:14.64    |
 0:14.64 41 | impl_mask_reductions!(m8x8);
 0:14.64    | ---------------------------- in this macro invocation
 0:14.64    |
 0:14.64    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.64 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.64   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:62:21
 0:14.64    |
 0:14.64 62 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.65    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.65    |                     |                    |
 0:14.65    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.65    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.65    | 
 0:14.65   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:41:1
 0:14.65    |
 0:14.65 41 | impl_mask_reductions!(m8x8);
 0:14.65    | ---------------------------- in this macro invocation
 0:14.65    |
 0:14.65    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.66 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.66   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:47:21
 0:14.66    |
 0:14.66 47 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.66    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.66    |                     |                    |
 0:14.66    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.66    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.66    | 
 0:14.66   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:47:1
 0:14.66    |
 0:14.66 47 | impl_mask_reductions!(m16x4);
 0:14.66    | ----------------------------- in this macro invocation
 0:14.66    |
 0:14.66    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.66 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.66   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:62:21
 0:14.66    |
 0:14.67 62 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.67    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.67    |                     |                    |
 0:14.67    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.67    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.67    | 
 0:14.67   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:47:1
 0:14.67    |
 0:14.67 47 | impl_mask_reductions!(m16x4);
 0:14.67    | ----------------------------- in this macro invocation
 0:14.67    |
 0:14.67    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.67 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.67   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:47:21
 0:14.68    |
 0:14.68 47 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.68    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.68    |                     |                    |
 0:14.68    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.68    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.68    | 
 0:14.68   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:52:1
 0:14.68    |
 0:14.68 52 | impl_mask_reductions!(m32x2);
 0:14.68    | ----------------------------- in this macro invocation
 0:14.68    |
 0:14.68    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:14.68 error[E0432]: unresolved import `crate::arch::x86_64::_mm_movemask_pi8`
 0:14.68   --> /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask/x86/sse.rs:62:21
 0:14.68    |
 0:14.69 62 |                 use crate::arch::x86_64::_mm_movemask_pi8;
 0:14.69    |                     ^^^^^^^^^^^^^^^^^^^^^----------------
 0:14.69    |                     |                    |
 0:14.70    |                     |                    help: a similar name exists in the module: `_mm_movemask_epi8`
 0:14.70    |                     no `_mm_movemask_pi8` in `arch::x86_64`
 0:14.70    | 
 0:14.70   ::: /opt/Projects/gecko/third_party/rust/packed_simd/src/codegen/reductions/mask.rs:52:1
 0:14.70    |
 0:14.70 52 | impl_mask_reductions!(m32x2);
 0:14.70    | ----------------------------- in this macro invocation
 0:14.70    |
 0:14.70    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 0:16.80 dom/cache
 0:17.16 dom/canvas
 0:19.83 dom/clients/api
 0:27.84 dom/clients/manager
 0:29.12 dom/commandhandler
 0:29.15 error: aborting due to 7 previous errors
 0:29.15 For more information about this error, try `rustc --explain E0432`.
 0:29.36 error: could not compile `packed_simd`
 0:29.37 To learn more, run the command again with --verbose.
 0:29.38 /opt/Projects/gecko/config/makefiles/rust.mk:302: recipe for target 'force-cargo-library-build' failed
 0:29.38 make[4]: *** [force-cargo-library-build] Error 101
 0:29.38 /opt/Projects/gecko/config/recurse.mk:72: recipe for target 'toolkit/library/rust/target' failed
 0:29.38 make[3]: *** [toolkit/library/rust/target] Error 2
 0:29.38 make[3]: *** Waiting for unfinished jobs....

The patch compiles locally on both 1.46 (current stable) and 1.48 (current nightly) but doesn't compile on 1.43, which we use in CI.

Depends on: 1644624
Depends on: 1671545
No longer depends on: 1644624
No longer depends on: 1671545
Blocks: 1672094

I'm not sure if you're aware, but packed_simd won't be updated on crates.io anymore (if you're waiting for the new version):

https://github.com/rust-lang/packed_simd#the-cratesio-version-can-no-longer-be-updated

(In reply to mceier from comment #5)

I'm not sure if you're aware, but packed_simd won't be updated on crates.io anymore (if you're waiting for the new version):

https://github.com/rust-lang/packed_simd#the-cratesio-version-can-no-longer-be-updated

Thanks. I'm aware. The corresponding change has landed in encoding_rs, and I intend to sort out that issue out on mozilla-central once the time comes to update encoding_rs in m-c.

Pushed by hsivonen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/632353012d05 Update packed_simd to compile on Rust 1.48. r=glandium
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 84 Branch

Could we get this on esr?

Flags: needinfo?(hsivonen)

(In reply to Mike Hommey [:glandium] from comment #9)

Could we get this on esr?

The patch didn't apply cleanly to the generated files, so I've posted a distinct patch for review.

Flags: needinfo?(hsivonen)

Comment on attachment 9220292 [details]
Bug 1667736 - Update packed_simd to compile on Rust 1.48, esr rebase.

ESR Uplift Approval Request

  • If this is not a sec:{high,crit} bug, please state case for ESR consideration: Allow ESR to be built with newer Rust.
  • User impact if declined: Impact is on distro maintainers; not end users.
  • Fix Landed on Version: 84
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): This changes compiler compatibility on parts of the crate that we don't use but still need to compile and the patch has been in multiple non-ESR releases.
  • String or UUID changes made by this patch: None
Attachment #9220292 - Flags: approval-mozilla-esr78?

Comment on attachment 9220292 [details]
Bug 1667736 - Update packed_simd to compile on Rust 1.48, esr rebase.

approved for 78.12esr, thanks

Attachment #9220292 - Flags: approval-mozilla-esr78? → approval-mozilla-esr78+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: