mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
compiler: don't use self-hosted backends on big-endian hosts
https://github.com/ziglang/zig/issues/25961
This commit is contained in:
parent
959a3612c2
commit
4b99e3718b
@ -1,3 +1,4 @@
|
|||||||
|
const builtin = @import("builtin");
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const assert = std.debug.assert;
|
const assert = std.debug.assert;
|
||||||
|
|
||||||
@ -255,6 +256,7 @@ pub fn hasNewLinkerSupport(ofmt: std.Target.ObjectFormat, backend: std.builtin.C
|
|||||||
/// debug mode. A given target should only return true here if it is passing greater
|
/// debug mode. A given target should only return true here if it is passing greater
|
||||||
/// than or equal to the number of behavior tests as the respective LLVM backend.
|
/// than or equal to the number of behavior tests as the respective LLVM backend.
|
||||||
pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool {
|
pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool {
|
||||||
|
if (comptime builtin.cpu.arch.endian() == .big) return false; // https://github.com/ziglang/zig/issues/25961
|
||||||
if (target.cpu.arch.isSpirV()) return true;
|
if (target.cpu.arch.isSpirV()) return true;
|
||||||
if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) {
|
if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) {
|
||||||
if (target.os.tag == .illumos) {
|
if (target.os.tag == .illumos) {
|
||||||
|
|||||||
@ -39,6 +39,7 @@ pub fn addCase(self: *ErrorTrace, case: Case) void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn shouldTestNonLlvm(target: *const std.Target) bool {
|
fn shouldTestNonLlvm(target: *const std.Target) bool {
|
||||||
|
if (comptime builtin.cpu.arch.endian() == .big) return false; // https://github.com/ziglang/zig/issues/25961
|
||||||
return switch (target.cpu.arch) {
|
return switch (target.cpu.arch) {
|
||||||
.x86_64 => switch (target.ofmt) {
|
.x86_64 => switch (target.ofmt) {
|
||||||
.elf => !target.os.tag.isBSD() and target.os.tag != .illumos,
|
.elf => !target.os.tag.isBSD() and target.os.tag != .illumos,
|
||||||
|
|||||||
@ -44,13 +44,16 @@ fn addCaseTarget(
|
|||||||
target: *const std.Build.ResolvedTarget,
|
target: *const std.Build.ResolvedTarget,
|
||||||
triple: ?[]const u8,
|
triple: ?[]const u8,
|
||||||
) void {
|
) void {
|
||||||
const both_backends = switch (target.result.cpu.arch) {
|
const both_backends = b: {
|
||||||
|
if (comptime builtin.cpu.arch.endian() == .big) break :b false; // https://github.com/ziglang/zig/issues/25961
|
||||||
|
break :b switch (target.result.cpu.arch) {
|
||||||
.x86_64 => switch (target.result.ofmt) {
|
.x86_64 => switch (target.result.ofmt) {
|
||||||
.elf => !target.result.os.tag.isBSD() and target.result.os.tag != .illumos,
|
.elf => !target.result.os.tag.isBSD() and target.result.os.tag != .illumos,
|
||||||
else => false,
|
else => false,
|
||||||
},
|
},
|
||||||
else => false,
|
else => false,
|
||||||
};
|
};
|
||||||
|
};
|
||||||
const both_pie = switch (target.result.os.tag) {
|
const both_pie = switch (target.result.os.tag) {
|
||||||
.fuchsia, .openbsd => false,
|
.fuchsia, .openbsd => false,
|
||||||
else => true,
|
else => true,
|
||||||
|
|||||||
@ -2500,6 +2500,7 @@ fn addOneModuleTest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn wouldUseLlvm(use_llvm: ?bool, query: std.Target.Query, optimize_mode: OptimizeMode) bool {
|
pub fn wouldUseLlvm(use_llvm: ?bool, query: std.Target.Query, optimize_mode: OptimizeMode) bool {
|
||||||
|
if (comptime builtin.cpu.arch.endian() == .big) return true; // https://github.com/ziglang/zig/issues/25961
|
||||||
if (use_llvm) |x| return x;
|
if (use_llvm) |x| return x;
|
||||||
if (query.ofmt == .c) return false;
|
if (query.ofmt == .c) return false;
|
||||||
switch (optimize_mode) {
|
switch (optimize_mode) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user