| ... | @@ -65,15 +65,6 @@ pub fn __mulodi4(a: i64, b: i64, overflow: *c_int) callconv(.C) i64 { | ... | @@ -65,15 +65,6 @@ pub fn __mulodi4(a: i64, b: i64, overflow: *c_int) callconv(.C) i64 { |
| 65 | } | 65 | } |
| 66 | | 66 | |
| 67 | pub fn __muloti4(a: i128, b: i128, overflow: *c_int) callconv(.C) i128 { | 67 | pub fn __muloti4(a: i128, b: i128, overflow: *c_int) callconv(.C) i128 { |
| 68 | switch (builtin.zig_backend) { | | |
| 69 | .stage1, .stage2_llvm => { | | |
| 70 | // Workaround for https://github.com/llvm/llvm-project/issues/56403 | | |
| 71 | // When we call the genericSmall implementation instead, LLVM optimizer | | |
| 72 | // optimizes __muloti4 to a call to itself. | | |
| 73 | return muloXi4_genericFast(i128, a, b, overflow); | | |
| 74 | }, | | |
| 75 | else => {}, | | |
| 76 | } | | |
| 77 | if (2 * @bitSizeOf(i128) <= @bitSizeOf(usize)) { | 68 | if (2 * @bitSizeOf(i128) <= @bitSizeOf(usize)) { |
| 78 | return muloXi4_genericFast(i128, a, b, overflow); | 69 | return muloXi4_genericFast(i128, a, b, overflow); |
| 79 | } else { | 70 | } else { |