Skip to content

Commit d9ba32d

Browse files
authored
[SYCL] Fix memory leak. (#17632)
According to https://github.com/llvm/llvm-project/blob/main/llvm/unittests/Demangle/OutputBufferTest.cpp, `OutputBuffer` has to be manually freed.
1 parent 397d10d commit d9ba32d

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

llvm/lib/SYCLLowerIR/ESIMD/ESIMDVerifier.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,19 @@ static const char *LegalSYCLFunctionsInStatelessMode[] = {
8989

9090
namespace {
9191

92+
class BuffDeleter {
93+
public:
94+
BuffDeleter(char *Buffer) : Buff(Buffer) {};
95+
~BuffDeleter() { std::free(Buff); };
96+
97+
BuffDeleter() = delete;
98+
BuffDeleter(const BuffDeleter &) = delete;
99+
BuffDeleter(BuffDeleter &&) = delete;
100+
101+
private:
102+
char *Buff;
103+
};
104+
92105
class ESIMDVerifierImpl {
93106
const Module &M;
94107
bool MayNeedForceStatelessMemModeAPI;
@@ -149,6 +162,7 @@ class ESIMDVerifierImpl {
149162
continue;
150163

151164
id::OutputBuffer NameBuf;
165+
BuffDeleter NameBufDeleter(NameBuf.getBuffer());
152166
NameNode->print(NameBuf);
153167
StringRef Name(NameBuf.getBuffer(), NameBuf.getCurrentPosition());
154168

0 commit comments

Comments
 (0)