Cool! I will do that!
I tried to compile your branch on macOS and got this error:
sergey@Sergeys-MacBook-Pro jhass_crystal % CRYSTAL_ROOT=. CRYSTAL_HAS_WRAPPER=true LLVM_CONFIG=/usr/local/Cellar/llvm/10.0.0_3/bin/llvm-config make stats=1
Using /usr/local/Cellar/llvm/10.0.0_3/bin/llvm-config [version=10.0.0]
CRYSTAL_CONFIG_PATH="/Users/sergey/Projects/crystal/jhass_crystal/src" CRYSTAL_CONFIG_LIBRARY_PATH="/usr/local/Cellar/crystal/0.35.1/embedded/lib:/usr/lib:/usr/local/lib" CRYSTAL_CONFIG_BUILD_COMMIT="b0435958a" SOURCE_DATE_EPOCH="1591035414" ./bin/crystal build --stats -o .build/crystal src/compiler/crystal.cr -D without_openssl -D without_zlib
Parse: 00:00:00.000123824 ( 0.25MB)
Semantic (top level): 00:00:00.497835475 ( 108.45MB)
Semantic (new): 00:00:00.018879100 ( 108.45MB)
Semantic (type declarations): 00:00:00.052906647 ( 108.45MB)
Semantic (abstract def check): 00:00:00.013462519 ( 124.45MB)
Semantic (ivars initializers): 00:00:05.788797202 ( 864.38MB)
Semantic (cvars initializers): 00:00:00.006314962 ( 864.38MB)
Semantic (main): 00:00:10.893857530 (1088.38MB)
Semantic (cleanup): 00:00:00.179418112 (1088.38MB)
Semantic (recursive struct check): 00:00:00.002256392 (1088.38MB)
Codegen (crystal): 00:00:07.750236255 (1236.38MB)
Codegen (bc+obj): 00:00:13.961979044 (1236.38MB)
Undefined symbols for architecture x86_64:
"llvm::ARMInstPrinter::getRegisterName(unsigned int)", referenced from:
llvm::ARMAsmPrinter::printOperand(llvm::MachineInstr const*, int, llvm::raw_ostream&) in libLLVMARMCodeGen.a(ARMAsmPrinter.cpp.o)
llvm::ARMAsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) in libLLVMARMCodeGen.a(ARMAsmPrinter.cpp.o)
llvm::ARMAsmPrinter::PrintAsmMemoryOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) in libLLVMARMCodeGen.a(ARMAsmPrinter.cpp.o)
"llvm::ARMInstPrinter::ARMInstPrinter(llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&)", referenced from:
createARMMCInstPrinter(llvm::Triple const&, unsigned int, llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&) in libLLVMARMDesc.a(ARMMCTargetDesc.cpp.o)
"llvm::MetadataTracking::track(void*, llvm::Metadata&, llvm::PointerUnion<llvm::MetadataAsValue*, llvm::Metadata*>)", referenced from:
llvm::MetadataTracking::track(llvm::Metadata*&) in llvm_ext.o
"llvm::X86ATTInstPrinter::getRegisterName(unsigned int)", referenced from:
llvm::X86AsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) in libLLVMX86CodeGen.a(X86AsmPrinter.cpp.o)
printOperand(llvm::X86AsmPrinter&, llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&, char const*, unsigned int) in libLLVMX86CodeGen.a(X86AsmPrinter.cpp.o)
llvm::X86AsmPrinter::EmitInstruction(llvm::MachineInstr const*) in libLLVMX86CodeGen.a(X86MCInstLower.cpp.o)
getShuffleComment(llvm::MachineInstr const*, unsigned int, unsigned int, llvm::ArrayRef<int>) in libLLVMX86CodeGen.a(X86MCInstLower.cpp.o)
"llvm::AArch64InstPrinter::getRegisterName(unsigned int, unsigned int)", referenced from:
(anonymous namespace)::AArch64AsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) in libLLVMAArch64CodeGen.a(AArch64AsmPrinter.cpp.o)
(anonymous namespace)::AArch64AsmPrinter::PrintAsmMemoryOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&) in libLLVMAArch64CodeGen.a(AArch64AsmPrinter.cpp.o)
(anonymous namespace)::AArch64AsmPrinter::printOperand(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&) in libLLVMAArch64CodeGen.a(AArch64AsmPrinter.cpp.o)
(anonymous namespace)::AArch64AsmPrinter::printAsmMRegister(llvm::MachineOperand const&, char, llvm::raw_ostream&) in libLLVMAArch64CodeGen.a(AArch64AsmPrinter.cpp.o)
"llvm::AArch64InstPrinter::AArch64InstPrinter(llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&)", referenced from:
createAArch64MCInstPrinter(llvm::Triple const&, unsigned int, llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&) in libLLVMAArch64Desc.a(AArch64MCTargetDesc.cpp.o)
"llvm::WriteBitcodeToFile(llvm::Module const&, llvm::raw_ostream&, bool, llvm::ModuleSummaryIndex const*, bool, std::__1::array<unsigned int, 5ul>*)", referenced from:
_LLVMExtWriteBitcodeWithSummaryToFile in llvm_ext.o
"llvm::X86IntelInstPrinter::getRegisterName(unsigned int)", referenced from:
(anonymous namespace)::X86AsmParser::ParseOperand() in libLLVMX86AsmParser.a(X86AsmParser.cpp.o)
"llvm::AArch64AppleInstPrinter::AArch64AppleInstPrinter(llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&)", referenced from:
createAArch64MCInstPrinter(llvm::Triple const&, unsigned int, llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&) in libLLVMAArch64Desc.a(AArch64MCTargetDesc.cpp.o)
"llvm::DebugLoc::get(unsigned int, unsigned int, llvm::MDNode const*, llvm::MDNode const*, bool)", referenced from:
_LLVMExtSetCurrentDebugLocation in llvm_ext.o
"llvm::DIBuilder::createFile(llvm::StringRef, llvm::StringRef, llvm::Optional<llvm::DIFile::ChecksumInfo<llvm::StringRef> >, llvm::Optional<llvm::StringRef>)", referenced from:
_LLVMExtDIBuilderCreateFile in llvm_ext.o
_LLVMExtDIBuilderCreateCompileUnit in llvm_ext.o
"llvm::DIBuilder::createFunction(llvm::DIScope*, llvm::StringRef, llvm::StringRef, llvm::DIFile*, unsigned int, llvm::DISubroutineType*, unsigned int, llvm::DINode::DIFlags, llvm::DISubprogram::DISPFlags, llvm::MDTupleTypedArrayWrapper<llvm::DITemplateParameter>, llvm::DISubprogram*, llvm::MDTupleTypedArrayWrapper<llvm::DIType>)", referenced from:
_LLVMExtDIBuilderCreateFunction in llvm_ext.o
"llvm::DIBuilder::createBasicType(llvm::StringRef, unsigned long long, unsigned int, llvm::DINode::DIFlags)", referenced from:
_LLVMExtDIBuilderCreateBasicType in llvm_ext.o
"llvm::DIBuilder::createEnumerator(llvm::StringRef, long long, bool)", referenced from:
_LLVMExtDIBuilderCreateEnumerator in llvm_ext.o
"llvm::DIBuilder::createCompileUnit(unsigned int, llvm::DIFile*, llvm::StringRef, bool, llvm::StringRef, unsigned int, llvm::StringRef, llvm::DICompileUnit::DebugEmissionKind, unsigned long long, bool, bool, llvm::DICompileUnit::DebugNameTableKind, bool)", referenced from:
_LLVMExtDIBuilderCreateCompileUnit in llvm_ext.o
"llvm::DIBuilder::createEnumerationType(llvm::DIScope*, llvm::StringRef, llvm::DIFile*, unsigned int, unsigned long long, unsigned int, llvm::MDTupleTypedArrayWrapper<llvm::DINode>, llvm::DIType*, llvm::StringRef, bool)", referenced from:
_LLVMExtDIBuilderCreateEnumerationType in llvm_ext.o
"llvm::DIBuilder::DIBuilder(llvm::Module&, bool, llvm::DICompileUnit*)", referenced from:
_LLVMExtNewDIBuilder in llvm_ext.o
"llvm::CallBase::hasFnAttrOnCalledFunction(llvm::Attribute::AttrKind) const", referenced from:
bool llvm::CallBase::hasFnAttrImpl<llvm::Attribute::AttrKind>(llvm::Attribute::AttrKind) const in llvm_ext.o
"vtable for llvm::X86ATTInstPrinter", referenced from:
createX86MCInstPrinter(llvm::Triple const&, unsigned int, llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&) in libLLVMX86Desc.a(X86MCTargetDesc.cpp.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for llvm::X86IntelInstPrinter", referenced from:
createX86MCInstPrinter(llvm::Triple const&, unsigned int, llvm::MCAsmInfo const&, llvm::MCInstrInfo const&, llvm::MCRegisterInfo const&) in libLLVMX86Desc.a(X86MCTargetDesc.cpp.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: execution of command failed with code: 1: `cc "${@}" -o /Users/sergey/Projects/crystal/jhass_crystal/.build/crystal -rdynamic -L/usr/local/Cellar/crystal/0.35.1/embedded/lib -L/usr/lib -L/usr/local/lib /Users/sergey/Projects/crystal/jhass_crystal/src/llvm/ext/llvm_ext.o `"/usr/local/Cellar/llvm/10.0.0_3/bin/llvm-config" --libs --system-libs --ldflags 2> /dev/null` -lstdc++ -lpcre -lgc -lpthread /Users/sergey/Projects/crystal/jhass_crystal/src/ext/libcrystal.a -levent -liconv -ldl`
make: *** [.build/crystal] Error 1