Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible memory corruption in GarbageCollect2Stack pass #4593

Closed
DimitryAndric opened this issue Mar 12, 2024 · 6 comments
Closed

Possible memory corruption in GarbageCollect2Stack pass #4593

DimitryAndric opened this issue Mar 12, 2024 · 6 comments

Comments

@DimitryAndric
Copy link

As part of an exp-run for the FreeBSD ports tree (see https://bugs.freebsd.org/276104) I am investigating a crash in the lang/ldc2 port. The port links against the LLVM 15.0.7 runtime, which is provided by another port, devel/llvm15. (I did not create the port, so I am unsure whether ldc supports linking against any later LLVM runtime.)

According to https://pkg-status.freebsd.org/gohan04/data/mainamd64PR276104-default-foo/2024-02-02_20h56m00s/logs/errors/ldc-1.35.0.log, the build is terminated by an assertion failure in malloc, apparently due to some memory corruption.

I lifted out the ldc command it is running, which is:

/wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2 -ldmd -c -linkonce-templates -wi -O -enable-inlining -Hkeep-all-bodies -release -of/wrkdirs/share/dim/ports/lang/ldc/work/ldc-1.35.0-src/obj/ldc-build-runtime.o /wrkdirs/share/dim/ports/lang/ldc/work/ldc-1.35.0-src/ldc-build-runtime.d

Running this through valgrind shows:

==29670== Memcheck, a memory error detector
==29670== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==29670== Using Valgrind-3.23.0.GIT and LibVEX; rerun with -h for copyright info
==29670== Command: /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2 -ldmd -c -linkonce-templates -wi -O -enable-inlining -Hkeep-all-bodies -release -of/wrkdirs/share/dim/ports/lang/ldc/work/ldc-1.35.0-src/obj/ldc-build-runtime.o /wrkdirs/share/dim/ports/lang/ldc/work/ldc-1.35.0-src/ldc-build-runtime.d
==29670== Parent PID: 29505
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x7B9595C: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B95A47: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x484CEEC: malloc (vg_replace_malloc.c:448)
==29670==    by 0x7B95A5A: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x48567A0: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x48567A9: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x48567CD: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x485680B: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x4856814: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x4856890: memset (vg_replace_strmem.c:1392)
==29670==    by 0x7B95A93: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x7B95A97: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x7B95B33: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B9598E: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B959A2: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B959B3: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x7B95AC4: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B95AED: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Use of uninitialised value of size 8
==29670==    at 0x7B95ABA: llvm::SmallPtrSetImplBase::Grow(unsigned int) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0x7B95A11: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Conditional jump or move depends on uninitialised value(s)
==29670==    at 0x7B9596D: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Uninitialised value was created by a stack allocation
==29670==    at 0xEDBE0D: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670== 
==29670== Invalid read of size 8
==29670==    at 0x7B9598E: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  Address 0x28923810 is not stack'd, malloc'd or (recently) free'd
==29670== 
==29670== warning: rfork() not implemented
==29670== 
==29670== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==29670==  Access not within mapped region at address 0x28923810
==29670==    at 0x7B9598E: llvm::SmallPtrSetImplBase::insert_imp_big(void const*) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xEDCA07: isSafeToStackAllocate(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Value*, llvm::DominatorTree&, llvm::SmallVector<llvm::CallInst*, 4u>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xEDBD33: GarbageCollect2Stack::run(llvm::Function&, std::__1::function<llvm::DominatorTree& ()>, std::__1::function<llvm::CallGraph* ()>) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xED4E5B: llvm::detail::PassModel<llvm::Function, GarbageCollect2StackPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D914BE: llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED4D31: llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0x7D8C584: llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (in /usr/local/llvm15/lib/libLLVM-15.so)
==29670==    by 0xED1400: runOptimizationPasses(llvm::Module*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF77AA9: writeModule(llvm::Module*, char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF76353: ldc::CodeGenerator::writeAndFreeLLModule(char const*) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xF7375E: codegenModules(Array<Module*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==    by 0xE287A1: mars_mainBody(Param&, Array<char const*>&, Array<char const*>&) (in /wrkdirs/share/dim/ports/lang/ldc/work/ldc2-1.35.0-freebsd-x86_64/bin/ldc2)
==29670==  If you believe this happened as a result of a stack
==29670==  overflow in your program's main thread (unlikely but
==29670==  possible), you can try to increase the size of the
==29670==  main thread stack using the --main-stacksize= flag.
==29670==  The main thread stack size used in this run was 16777216.
==29670== 
==29670== HEAP SUMMARY:
==29670==     in use at exit: 209,690,700 bytes in 710,666 blocks
==29670==   total heap usage: 2,126,825 allocs, 1,416,159 frees, 912,178,087 bytes allocated
==29670== 
==29670== LEAK SUMMARY:
==29670==    definitely lost: 5,676,405 bytes in 118,118 blocks
==29670==    indirectly lost: 1,987,998 bytes in 52,211 blocks
==29670==      possibly lost: 19,586,696 bytes in 14,558 blocks
==29670==    still reachable: 182,439,601 bytes in 525,779 blocks
==29670==                       of which reachable via heuristic:
==29670==                         multipleinheritance: 20,970,656 bytes in 22 blocks
==29670==         suppressed: 0 bytes in 0 blocks
==29670== Rerun with --leak-check=full to see details of leaked memory
==29670== 
==29670== For lists of detected and suppressed errors, rerun with: -s
==29670== ERROR SUMMARY: 2621497 errors from 19 contexts (suppressed: 0 from 0)

So for reason, it's crashing in the GarbageCollect2Stack pass, while it is inserting values into the SmallSet Visited, in the function isSafeToStackAllocate(). At this point I a little out of clues, so I would appreciate any assistance in figuring out what goes wrong.

Note, if I use the same ldc command line, but append --disable-gc2stack, the compile completes successfully, as far as I can see.

@DimitryAndric
Copy link
Author

ping @alonsobsd who is maintainer of the lang/ldc port.

@kinke
Copy link
Member

kinke commented Mar 12, 2024

Thx for the report. AFAICT, the relevant code (in master, but shouldn't have changed significantly since v1.35) looks as harmless as it gets wrt. inserting some pointers into a stack-allocated and default-initialized llvm::SmallSet<llvm::Use *, 16> Visited. We have been using v15.0.7 as primary LLVM version for a while (incl. extensive CI coverage), but I've never seen any issues when building the little ldc-build-runtime tool.

@kinke
Copy link
Member

kinke commented Mar 12, 2024

Oh and our current FreeBSD CI does use the LLVM v15.0.7 port too, and its clang as C++ host compiler: https://cirrus-ci.com/task/5161765764333568

@DimitryAndric
Copy link
Author

Yeah, the mystery here is that the devel/llvm15 port, when compiled by clang 17.0.6, does seem to work, whereas if the devel/llvm15 port is compiled by clang 18, it does not.... I just built a ldc2 binary with debug info on a FreeBSD 15-CURRENT machine with clang 17.0.6 and copied it over the the FreeBSD machine with a clang-18 compiled libLLVM15.so, and for some reason it is now allocating ~25 GiB of data in the "SmallPtrSet". :)

I'm thinking that some sort of optimization has messed up the assumptions under which such SmallPtrSets can be used, but I can't see the problem with other ports that use llvm15, so I'm still not sure whether the problem is in GarbageCollect2Stack, in llvm15, or in clang18...

@kinke
Copy link
Member

kinke commented Mar 12, 2024

Oh wild. I'd make sure that the same clang that was used to compile libLLVM is used as C++ host compiler for LDC too.

@DimitryAndric
Copy link
Author

Okay, this turned out to be my own fault. In llvm/llvm-project@6255157d24e2 I turned on trivial std::pair copy constructors for FreeBSD >= 14. Which was a bad idea, in hindsight, because the ABI changes. The idea at the time was to bump the libc++ version to be able to break the ABI, but we never got to that.

Long story short, because of the mismatch a libLLVMnn.so compiled against a "new ABI" libc++ tends to crash in interesting ways, when you use it from a precompiled ldc2 executable, that was originally compiled against the "old ABI" libc++.

In DimitryAndric/freebsd-src@4c0e8f6 I reverted that, rebuilt the FreeBSD world and ports, and now lang/ldc builds just fine, at least without any crashes! I haven't extensively tested the resulting ldmd2 and ldc2, but if they are able to build the D runtime, I assume they are OK.

@DimitryAndric DimitryAndric closed this as not planned Won't fix, can't repro, duplicate, stale Mar 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants