@@ -202,27 +202,21 @@ struct RecordReplayTy {
202
202
203
203
AsyncInfoWrapperTy::AsyncInfoWrapperTy (GenericDeviceTy &Device,
204
204
__tgt_async_info *AsyncInfoPtr)
205
- : Err(Plugin::success()), Device(Device),
206
- AsyncInfoPtr(AsyncInfoPtr ? AsyncInfoPtr : &LocalAsyncInfo) {
207
- // Mark the success as checked. Otherwise, it would produce an error when
208
- // re-assigned another error value.
209
- (void )!Err;
210
- }
205
+ : Device(Device),
206
+ AsyncInfoPtr(AsyncInfoPtr ? AsyncInfoPtr : &LocalAsyncInfo) {}
211
207
212
- Error AsyncInfoWrapperTy::finalize () {
208
+ void AsyncInfoWrapperTy::finalize (Error &Err ) {
213
209
assert (AsyncInfoPtr && " AsyncInfoWrapperTy already finalized" );
214
210
215
- // If we used a local async info object we want synchronous behavior.
216
- // In that case, and assuming the current status code is OK, we will
217
- // synchronize explicitly when the object is deleted.
211
+ // If we used a local async info object we want synchronous behavior. In that
212
+ // case, and assuming the current status code is correct, we will synchronize
213
+ // explicitly when the object is deleted. Update the error with the result of
214
+ // the synchronize operation.
218
215
if (AsyncInfoPtr == &LocalAsyncInfo && LocalAsyncInfo.Queue && !Err)
219
216
Err = Device.synchronize (&LocalAsyncInfo);
220
217
221
218
// Invalidate the wrapper object.
222
219
AsyncInfoPtr = nullptr ;
223
-
224
- // Return the error associated to the async operations and the synchronize.
225
- return std::move (Err);
226
220
}
227
221
228
222
Error GenericKernelTy::init (GenericDeviceTy &GenericDevice,
@@ -931,28 +925,28 @@ Error GenericDeviceTy::dataSubmit(void *TgtPtr, const void *HstPtr,
931
925
int64_t Size, __tgt_async_info *AsyncInfo) {
932
926
AsyncInfoWrapperTy AsyncInfoWrapper (*this , AsyncInfo);
933
927
934
- auto & Err = AsyncInfoWrapper. getError ( );
935
- Err = dataSubmitImpl (TgtPtr, HstPtr, Size, AsyncInfoWrapper);
936
- return AsyncInfoWrapper. finalize () ;
928
+ auto Err = dataSubmitImpl (TgtPtr, HstPtr, Size, AsyncInfoWrapper );
929
+ AsyncInfoWrapper. finalize (Err );
930
+ return Err ;
937
931
}
938
932
939
933
Error GenericDeviceTy::dataRetrieve (void *HstPtr, const void *TgtPtr,
940
934
int64_t Size, __tgt_async_info *AsyncInfo) {
941
935
AsyncInfoWrapperTy AsyncInfoWrapper (*this , AsyncInfo);
942
936
943
- auto & Err = AsyncInfoWrapper. getError ( );
944
- Err = dataRetrieveImpl (HstPtr, TgtPtr, Size, AsyncInfoWrapper);
945
- return AsyncInfoWrapper. finalize () ;
937
+ auto Err = dataRetrieveImpl (HstPtr, TgtPtr, Size, AsyncInfoWrapper );
938
+ AsyncInfoWrapper. finalize (Err );
939
+ return Err ;
946
940
}
947
941
948
942
Error GenericDeviceTy::dataExchange (const void *SrcPtr, GenericDeviceTy &DstDev,
949
943
void *DstPtr, int64_t Size,
950
944
__tgt_async_info *AsyncInfo) {
951
945
AsyncInfoWrapperTy AsyncInfoWrapper (*this , AsyncInfo);
952
946
953
- auto & Err = AsyncInfoWrapper. getError ( );
954
- Err = dataExchangeImpl (SrcPtr, DstDev, DstPtr, Size, AsyncInfoWrapper);
955
- return AsyncInfoWrapper. finalize () ;
947
+ auto Err = dataExchangeImpl (SrcPtr, DstDev, DstPtr, Size, AsyncInfoWrapper );
948
+ AsyncInfoWrapper. finalize (Err );
949
+ return Err ;
956
950
}
957
951
958
952
Error GenericDeviceTy::launchKernel (void *EntryPtr, void **ArgPtrs,
@@ -970,16 +964,16 @@ Error GenericDeviceTy::launchKernel(void *EntryPtr, void **ArgPtrs,
970
964
KernelArgs.NumTeams [0 ], KernelArgs.ThreadLimit [0 ], KernelArgs.Tripcount ,
971
965
AsyncInfoWrapper);
972
966
973
- auto &Err = AsyncInfoWrapper.getError ();
974
- Err = GenericKernel.launch (*this , ArgPtrs, ArgOffsets, KernelArgs,
975
- AsyncInfoWrapper);
967
+ auto Err = GenericKernel.launch (*this , ArgPtrs, ArgOffsets, KernelArgs,
968
+ AsyncInfoWrapper);
976
969
977
970
if (RecordReplay.isRecordingOrReplaying () &&
978
971
RecordReplay.isSaveOutputEnabled ())
979
972
RecordReplay.saveKernelOutputInfo (GenericKernel.getName (),
980
973
AsyncInfoWrapper);
981
974
982
- return AsyncInfoWrapper.finalize ();
975
+ AsyncInfoWrapper.finalize (Err);
976
+ return Err;
983
977
}
984
978
985
979
Error GenericDeviceTy::initAsyncInfo (__tgt_async_info **AsyncInfoPtr) {
@@ -989,9 +983,9 @@ Error GenericDeviceTy::initAsyncInfo(__tgt_async_info **AsyncInfoPtr) {
989
983
990
984
AsyncInfoWrapperTy AsyncInfoWrapper (*this , *AsyncInfoPtr);
991
985
992
- auto & Err = AsyncInfoWrapper. getError ( );
993
- Err = initAsyncInfoImpl ( AsyncInfoWrapper);
994
- return AsyncInfoWrapper. finalize () ;
986
+ auto Err = initAsyncInfoImpl (AsyncInfoWrapper );
987
+ AsyncInfoWrapper. finalize (Err );
988
+ return Err ;
995
989
}
996
990
997
991
Error GenericDeviceTy::initDeviceInfo (__tgt_device_info *DeviceInfo) {
@@ -1017,17 +1011,17 @@ Error GenericDeviceTy::recordEvent(void *EventPtr,
1017
1011
__tgt_async_info *AsyncInfo) {
1018
1012
AsyncInfoWrapperTy AsyncInfoWrapper (*this , AsyncInfo);
1019
1013
1020
- auto & Err = AsyncInfoWrapper. getError ( );
1021
- Err = recordEventImpl (EventPtr, AsyncInfoWrapper);
1022
- return AsyncInfoWrapper. finalize () ;
1014
+ auto Err = recordEventImpl (EventPtr, AsyncInfoWrapper );
1015
+ AsyncInfoWrapper. finalize (Err );
1016
+ return Err ;
1023
1017
}
1024
1018
1025
1019
Error GenericDeviceTy::waitEvent (void *EventPtr, __tgt_async_info *AsyncInfo) {
1026
1020
AsyncInfoWrapperTy AsyncInfoWrapper (*this , AsyncInfo);
1027
1021
1028
- auto & Err = AsyncInfoWrapper. getError ( );
1029
- Err = waitEventImpl (EventPtr, AsyncInfoWrapper);
1030
- return AsyncInfoWrapper. finalize () ;
1022
+ auto Err = waitEventImpl (EventPtr, AsyncInfoWrapper );
1023
+ AsyncInfoWrapper. finalize (Err );
1024
+ return Err ;
1031
1025
}
1032
1026
1033
1027
Error GenericDeviceTy::syncEvent (void *EventPtr) {
0 commit comments