[clang] [clang-repl] Add a interpreter-specific overload of operator new for C++ (PR #76218)
Vassil Vassilev via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 19 11:23:05 PST 2024
vgvassilev wrote:
@vitalybuka, thank you!
I am trying to add a fix but I get `unsupported option '-fsanitize=hwaddress' for target 'x86_64-apple-darwin21.6.0'`. If you have a compatible platform, do you mind testing:
```diff
diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp
index d6eb0684ba49..406a4871dff5 100644
--- a/clang/unittests/Interpreter/InterpreterTest.cpp
+++ b/clang/unittests/Interpreter/InterpreterTest.cpp
@@ -34,12 +34,6 @@ using namespace clang;
#define CLANG_INTERPRETER_NO_SUPPORT_EXEC
#endif
-#if LLVM_ADDRESS_SANITIZER_BUILD || LLVM_HWADDRESS_SANITIZER_BUILD
-#include <sanitizer/lsan_interface.h>
-#else
-extern "C" void __lsan_ignore_object(const void *p) {}
-#endif
-
int Global = 42;
// JIT reports symbol not found on Windows without the visibility attribute.
REPL_EXTERNAL_VISIBILITY int getGlobal() { return Global; }
@@ -317,8 +311,9 @@ TEST(IncrementalProcessing, InstantiateTemplate) {
auto fn =
cantFail(Interp->getSymbolAddress(MangledName)).toPtr<TemplateSpecFn>();
EXPECT_EQ(42, fn(NewA.getPtr()));
- // FIXME: release the memory.
- __lsan_ignore_object(NewA.getPtr());
+ // FIXME: Consider providing an option in clang::Value to take ownership of
+ // the memory created from the interpreter.
+ free(NewA.getPtr());
}
#ifdef CLANG_INTERPRETER_NO_SUPPORT_EXEC
```
I think that's going to work.
https://github.com/llvm/llvm-project/pull/76218
More information about the cfe-commits
mailing list