[libomptarget] Initialize reference parameter IsNew within Device::getOrAllocTgtPtr
authorRon Lieberman <ron.lieberman@amd.com>
Fri, 24 Apr 2020 20:33:37 +0000 (15:33 -0500)
committerRon Lieberman <ron.lieberman@amd.com>
Fri, 24 Apr 2020 20:33:37 +0000 (15:33 -0500)
The two locals IsNew and Pointer_IsNew were uninitialized at declaration, and then passed by
reference to Device.getOrAllocTgtPtr which in turn did not assign on all
paths within the function. This resulted in occasional runtime failures in one application.
Device::getOrAllocTgtPtr will now initialize IsNew to false on entry to function.

Differential Revision: https://reviews.llvm.org/D78744

openmp/libomptarget/src/device.cpp

index 765dd54..b613cd2 100644 (file)
@@ -157,6 +157,7 @@ void *DeviceTy::getOrAllocTgtPtr(void *HstPtrBegin, void *HstPtrBase,
     bool UpdateRefCount, bool HasCloseModifier) {
   void *rc = NULL;
   IsHostPtr = false;
+  IsNew = false;
   DataMapMtx.lock();
   LookupResult lr = lookupMapping(HstPtrBegin, Size);