[clang] [MS][clang] Add support for vector deleting destructors (PR #126240)
Mariya Podchishchaeva via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 26 09:47:31 PDT 2025
Fznamznon wrote:
I reduced main code to
```
#include "unicode/filteredbrk.h"
#include <stdio.h>
using namespace icu;
int main(int argc, const char** argv) {
UErrorCode status = U_ZERO_ERROR;
//BreakIterator* bi = BreakIterator::createWordInstance(root, status); // Any iterator will do, make sure filteredbrk.cpp is involved
FilteredBreakIteratorBuilder* fbiBuilder = FilteredBreakIteratorBuilder::createInstance(status);
icu::UnicodeString* St = new icu::UnicodeString("abacabadabacab", 15);
delete St;
printf("OKAY\n");
return 0;
}
```
In order to avoid UniSet creation.
That still does not give a clear understanding of what is going on because the reproducer is massive and entangled. For some reason pointer to vtable is corrupted when the destructor of UnicodeString is called.
@zmodem any chance you could help to reduce it further? I already spent reasonable amount of time doing this without a good output.
This does seem like a problem that may have been introduced by the lld. The fact that it all passes in x64 mode, or without alias emission, or without -start-lib -end-lib options. But I am still not sure. I would appreciate any thoughts on this. @rnk , any chance you might be aware of some linkage-related specific affecting vector deleting destructors when building 32-bit applications?
https://github.com/llvm/llvm-project/pull/126240
More information about the cfe-commits
mailing list