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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits