Skip to content

Commit 45caccf

Browse files
authored
Merge pull request #285 from alexcrichton/use-optimized
Revert "Use the Rust implementation of udivsi3 on ARM"
2 parents 045de6e + 4bbc838 commit 45caccf

File tree

4 files changed

+9
-13
lines changed

4 files changed

+9
-13
lines changed

build.rs

+4-13
Original file line numberDiff line numberDiff line change
@@ -289,27 +289,16 @@ mod c {
289289
"arm/clzdi2.S",
290290
"arm/clzsi2.S",
291291
"arm/divmodsi4.S",
292+
"arm/divsi3.S",
292293
"arm/modsi3.S",
293294
"arm/switch16.S",
294295
"arm/switch32.S",
295296
"arm/switch8.S",
296297
"arm/switchu8.S",
297298
"arm/sync_synchronize.S",
298299
"arm/udivmodsi4.S",
300+
"arm/udivsi3.S",
299301
"arm/umodsi3.S",
300-
301-
// Exclude these two files for now even though we haven't
302-
// translated their implementation into Rust yet (#173).
303-
// They appear... buggy? The `udivsi3` implementation was
304-
// the one that seemed buggy, but the `divsi3` file
305-
// references a symbol from `udivsi3` so we compile them
306-
// both with the Rust versions.
307-
//
308-
// Note that if these are added back they should be removed
309-
// from thumbv6m below.
310-
//
311-
// "arm/divsi3.S",
312-
// "arm/udivsi3.S",
313302
],
314303
);
315304

@@ -427,12 +416,14 @@ mod c {
427416
"clzdi2",
428417
"clzsi2",
429418
"divmodsi4",
419+
"divsi3",
430420
"modsi3",
431421
"switch16",
432422
"switch32",
433423
"switch8",
434424
"switchu8",
435425
"udivmodsi4",
426+
"udivsi3",
436427
"umodsi3",
437428
],
438429
);

ci/run-docker.sh

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ run() {
2424
-v `pwd`:/checkout:ro \
2525
-v `rustc --print sysroot`:/rust:ro \
2626
-w /checkout \
27+
--init \
2728
$target \
2829
sh -c "HOME=/tmp PATH=\$PATH:/rust/bin ci/run.sh $target"
2930
}

src/int/sdiv.rs

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ impl Divmod for i32 {}
5757
impl Divmod for i64 {}
5858

5959
intrinsics! {
60+
#[use_c_shim_if(all(target_arch = "arm", not(target_os = "ios"), not(thumbv6m)))]
6061
#[arm_aeabi_alias = __aeabi_idiv]
6162
pub extern "C" fn __divsi3(a: i32, b: i32) -> i32 {
6263
a.div(b)

src/int/udiv.rs

+3
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ macro_rules! udivmod_inner {
152152
}
153153

154154
intrinsics! {
155+
#[use_c_shim_if(all(target_arch = "arm",
156+
not(target_os = "ios"),
157+
not(thumbv6m)))]
155158
#[arm_aeabi_alias = __aeabi_uidiv]
156159
/// Returns `n / d`
157160
pub extern "C" fn __udivsi3(n: u32, d: u32) -> u32 {

0 commit comments

Comments
 (0)