Skip to content

Commit 55b358d

Browse files
committed
Use RAII deleter instead.
1 parent ed82252 commit 55b358d

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

llvm/lib/SYCLLowerIR/ESIMD/ESIMDVerifier.cpp

Lines changed: 14 additions & 3 deletions
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

@@ -160,7 +174,6 @@ class ESIMDVerifierImpl {
160174
Name.starts_with(
161175
"sycl::_V1::ext::intel::experimental::esimd::") ||
162176
Name.starts_with("sycl::_V1::ext::oneapi::this_work_item::")) {
163-
std::free(NameBuf.getBuffer());
164177
continue;
165178
}
166179

@@ -178,11 +191,9 @@ class ESIMDVerifierImpl {
178191
// reported at compilation time.
179192
(MayNeedForceStatelessMemModeAPI &&
180193
any_of(LegalSYCLFunctionsInStatelessMode, checkLegalFunc))) {
181-
std::free(NameBuf.getBuffer());
182194
continue;
183195
}
184196

185-
std::free(NameBuf.getBuffer());
186197
// If not, report an error.
187198
std::string ErrorMsg = std::string("function '") +
188199
demangle(MangledName.str()) +

0 commit comments

Comments
 (0)