ziglang / zig

General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
https://ziglang.org
MIT License
33.98k stars 2.48k forks source link

llvm crash when substracting cpu features to x86_64_v3 and using soft float #15524

Open davidgm94 opened 1 year ago

davidgm94 commented 1 year ago

Zig Version

0.11.0-dev.2930+3fb93fc8f

Steps to Reproduce and Observed Behavior

  1. Grab a zig debug build + LLVM debug build
  2. Create an empty file repro.zig
  3. zig build-exe repro.zig -mcpu x86_64_v3-avx-avx2-mmx+soft_float-sse-sse2-x87

Stack trace:

#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007ffff7c8d953 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007ffff7c3eea8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7c2853d in __GI_abort () at abort.c:79
#4  0x000000000b85c0e0 in llvm::llvm_unreachable_internal (msg=0x4035bb5 "Should not custom lower this!", file=0x4031da5 "/home/david/dev/llvm-project-16/llvm/lib/Target/X86/X86ISelLowering.cpp", line=33155)
    at /home/david/dev/llvm-project-16/llvm/lib/Support/ErrorHandling.cpp:212
#5  0x000000001090a5ea in llvm::X86TargetLowering::LowerOperation (this=0x18631a70, Op=..., DAG=...) at /home/david/dev/llvm-project-16/llvm/lib/Target/X86/X86ISelLowering.cpp:33155
#6  0x000000000ea811e7 in llvm::TargetLowering::LowerOperationWrapper (this=0x18631a70, N=0x18aa1df0, Results=..., DAG=...) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:10275
#7  0x000000000ec898ec in llvm::DAGTypeLegalizer::CustomLowerNode (this=0x7ffffffe59d0, N=0x18aa1df0, VT=..., LegalizeResult=false) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:935
#8  0x000000000ecee52b in llvm::DAGTypeLegalizer::SplitVectorOperand (this=0x7ffffffe59d0, N=0x18aa1df0, OpNo=0) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:2784
#9  0x000000000ec85e54 in llvm::DAGTypeLegalizer::run (this=0x7ffffffe59d0) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:346
#10 0x000000000ec8ac95 in llvm::SelectionDAG::LegalizeTypes (this=0x17e0b510) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:1064
#11 0x000000000ec1b24d in llvm::SelectionDAGISel::CodeGenAndEmitDAG (this=0x17bf36c0) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:805
#12 0x000000000ec1ab59 in llvm::SelectionDAGISel::SelectBasicBlock (this=0x17bf36c0, Begin=..., End=..., HadTailCall=@0x7ffffffe6e6f: false)
    at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:699
#13 0x000000000ec1a588 in llvm::SelectionDAGISel::SelectAllBasicBlocks (this=0x17bf36c0, Fn=...) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1633
#14 0x000000000ec17a22 in llvm::SelectionDAGISel::runOnMachineFunction (this=0x17bf36c0, mf=...) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:480
#15 0x0000000010c90b47 in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction (this=0x17bf36c0, MF=...) at /home/david/dev/llvm-project-16/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:191
#16 0x000000000c4011cc in llvm::MachineFunctionPass::runOnFunction (this=0x17bf36c0, F=...) at /home/david/dev/llvm-project-16/llvm/lib/CodeGen/MachineFunctionPass.cpp:91
#17 0x000000000bdb28e7 in llvm::FPPassManager::runOnFunction (this=0x181609b0, F=...) at /home/david/dev/llvm-project-16/llvm/lib/IR/LegacyPassManager.cpp:1430
#18 0x000000000bdb7e6f in llvm::FPPassManager::runOnModule (this=0x181609b0, M=...) at /home/david/dev/llvm-project-16/llvm/lib/IR/LegacyPassManager.cpp:1476
#19 0x000000000bdb3287 in (anonymous namespace)::MPPassManager::runOnModule (this=0x181b15e0, M=...) at /home/david/dev/llvm-project-16/llvm/lib/IR/LegacyPassManager.cpp:1545
#20 0x000000000bdb2d9a in llvm::legacy::PassManagerImpl::run (this=0x17c81450, M=...) at /home/david/dev/llvm-project-16/llvm/lib/IR/LegacyPassManager.cpp:535
#21 0x000000000bdb8171 in llvm::legacy::PassManager::run (this=0x7ffffffe8880, M=...) at /home/david/dev/llvm-project-16/llvm/lib/IR/LegacyPassManager.cpp:1672
#22 0x000000000b771dc4 in ZigLLVMTargetMachineEmitToFile (targ_machine_ref=0x17bc6bc0, module_ref=0x17bc67a0, error_message=0x7ffffffea408, is_debug=false, is_small=true, time_report=false, tsan=false, lto=false, 
    asm_filename=0x0, bin_filename=0x1815694a "/home/david/.cache/zig/o/f67ed87c28ed986098d386f9e44524cc/libcompiler_rt.a.o", llvm_ir_filename=0x0, bitcode_filename=0x0) at /home/david/dev/zig/src/zig_llvm.cpp:391
#23 0x0000000009e0a93b in codegen.llvm.Object.flushModule (self=0x17baba60, comp=0x17bb1030, prog_node=0x7fffffff08e0) at /home/david/dev/zig/src/codegen/llvm.zig:865
#24 0x0000000009e28089 in link.Elf.flushModule (self=0x17bc4830, comp=0x17bb1030, prog_node=0x7fffffff08e0) at /home/david/dev/zig/src/link/Elf.zig:1027
#25 0x0000000009e067a1 in link.File.flushModule (base=0x17bc4830, comp=0x17bb1030, prog_node=0x7fffffff08e0) at link.zig:817
#26 0x0000000009b96916 in link.File.linkAsArchive (base=0x17bc4830, comp=0x17bb1030, prog_node=0x7fffffff08e0) at link.zig:989
#27 0x000000000990fd4e in link.File.flush (base=0x17bc4830, comp=0x17bb1030, prog_node=0x7fffffff08e0) at link.zig:794
#28 0x000000000990f786 in Compilation.flush (comp=0x17bb1030, prog_node=0x7fffffff08e0) at Compilation.zig:2151
#29 0x0000000009912ce1 in Compilation.update (comp=0x17bb1030, main_progress_node=0x7fffffff08e0) at Compilation.zig:2115
#30 0x0000000009a5b061 in Compilation.updateSubCompilation (parent_comp=0x17b40ce0, sub_comp=0x17bb1030, misc_task=compiler_rt, prog_node=0x7fffffff08e0) at Compilation.zig:5298
#31 0x0000000009a83ae6 in Compilation.buildOutputFromZig (comp=0x17b40ce0, src_basename=..., output_mode=Lib, out=0x17b41010, misc_task_tag=compiler_rt, prog_node=0x7fffffff08e0) at Compilation.zig:5394
#32 0x0000000009a88a5c in Compilation.buildCompilerRtOneShot (comp=0x17b40ce0, output_mode=Lib, out=0x17b41010, prog_node=0x7fffffff08e0) at Compilation.zig:3735
#33 0x0000000009915f9b in Compilation.performAllTheWork (comp=0x17b40ce0, main_progress_node=0x7fffffff08e0) at Compilation.zig:3076
#34 0x0000000009911fae in Compilation.update (comp=0x17b40ce0, main_progress_node=0x7fffffff08e0) at Compilation.zig:2020
#35 0x0000000009943745 in main.updateModule (comp=0x17b40ce0) at main.zig:3822
#36 0x00000000097affd2 in main.buildOutputType (gpa=..., arena=..., all_args=..., arg_mode=...) at main.zig:3257
#37 0x0000000009780b54 in main.mainArgs (gpa=..., arena=..., args=...) at main.zig:267
#38 0x00000000097800a6 in main.main () at main.zig:211

Expected Behavior

Not a crash

davidgm94 commented 1 year ago

I suspect it crashes with compiler rt

andrewrk commented 1 year ago

This looks like a bug that needs to be reported upstream.