llvm: Disable FastISel on MIPS as a workaround for #21215.
Until llvm/llvm-project#106231 trickles down.
This commit is contained in:
@@ -1280,6 +1280,8 @@ pub const Object = struct {
|
||||
.tsan = options.sanitize_thread,
|
||||
.sancov = options.fuzz,
|
||||
.lto = options.lto,
|
||||
// https://github.com/ziglang/zig/issues/21215
|
||||
.allow_fast_isel = !comp.root_mod.resolved_target.result.cpu.arch.isMIPS(),
|
||||
.asm_filename = null,
|
||||
.bin_filename = options.bin_path,
|
||||
.llvm_ir_filename = options.post_ir_path,
|
||||
|
||||
@@ -91,6 +91,7 @@ pub const TargetMachine = opaque {
|
||||
tsan: bool,
|
||||
sancov: bool,
|
||||
lto: bool,
|
||||
allow_fast_isel: bool,
|
||||
asm_filename: ?[*:0]const u8,
|
||||
bin_filename: ?[*:0]const u8,
|
||||
llvm_ir_filename: ?[*:0]const u8,
|
||||
|
||||
@@ -258,7 +258,6 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
|
||||
options.bin_filename? options.bin_filename : options.asm_filename);
|
||||
|
||||
TargetMachine &target_machine = *reinterpret_cast<TargetMachine*>(targ_machine_ref);
|
||||
target_machine.setO0WantsFastISel(true);
|
||||
|
||||
Module &llvm_module = *unwrap(module_ref);
|
||||
|
||||
@@ -369,6 +368,12 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
|
||||
}
|
||||
}
|
||||
|
||||
if (options.allow_fast_isel) {
|
||||
target_machine.setO0WantsFastISel(true);
|
||||
} else {
|
||||
target_machine.setFastISel(false);
|
||||
}
|
||||
|
||||
// Optimization phase
|
||||
module_pm.run(llvm_module, module_am);
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ struct ZigLLVMEmitOptions {
|
||||
bool tsan;
|
||||
bool sancov;
|
||||
bool lto;
|
||||
bool allow_fast_isel;
|
||||
const char *asm_filename;
|
||||
const char *bin_filename;
|
||||
const char *llvm_ir_filename;
|
||||
|
||||
Reference in New Issue
Block a user