[clang] [clang-tools-extra] [libcxx] [clang] Enable sized deallocation by default in C++14 onwards (PR #83774)

Vassil Vassilev via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 19 10:53:21 PDT 2024


vgvassilev wrote:

> > > > > > > There is a Windows failure that I can't reproduce: https://buildkite.com/llvm-project/github-pull-requests/builds/46331 Can someone help me to figure out what is wrong?
> > > > > > 
> > > > > > 
> > > > > > I'm not certain what's going on yet, but it smells a bit like the interpreter needs to know about sized deallocations now being on by default (this may be exposing an existing bug rather than introducing a new one).
> > > > > > CC @vgvassilev
> > > > > 
> > > > > 
> > > > > I am shooting in the dark here, too. Can you forward declare the new operator delete here:
> > > > > https://github.com/llvm/llvm-project/blob/e2e3624fae669f85de1445bf7037ff29feb30905/clang/lib/Interpreter/Interpreter.cpp#L262
> > > > 
> > > > 
> > > > It's still failing. :-(
> > > 
> > > 
> > > I do not have a platform where I can debug this failure. For some reason codegen does not emit the symbol for the operator delete. In the context of #84758, @weliveindetail and @hahnjo were discussing maybe a related issue.
> > 
> > 
> > One failure is happening on:
> > ```
> >   Value V3;
> >   llvm::cantFail(Interp->ParseAndExecute(
> >       "struct S { int* p; S() { p = new int(42); } ~S() { delete p; }};"));
> >   llvm::cantFail(Interp->ParseAndExecute("S{}", &V3));
> > ```
> > 
> > 
> >     
> >       
> >     
> > 
> >       
> >     
> > 
> >     
> >   
> > in InterpreterTest.cpp. I'm investigating to see if I can spot what's going wrong because I can reproduce on Windows.
> 
> The failure happens when executing `llvm::cantFail(Interp->ParseAndExecute("S{}", &V3));` specifically. We parse the code fine, but execution is what fails. `issueInitLookups()` in `GenericLLVMIRPlatformSupport::getInitializers()` is where the failures start from, but we get to `Platform::lookupInitSymbols()` and we eventually call `failMaterialization()` in `RTDyldObjectLinkingLayer::onObjEmit()` when trying to materialize `$.incr_module_33.__inits.0`.
> 
> I'm out of my depth on this, so I may need someone else to help figure this out further.

Can you dump the produced `llvm::Module`s?

https://github.com/llvm/llvm-project/pull/83774


More information about the cfe-commits mailing list