diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp index fe2a18131c9b..b3991dad3a83 100644 --- a/clang/lib/Driver/Compilation.cpp +++ b/clang/lib/Driver/Compilation.cpp @@ -57,14 +57,16 @@ Compilation::getArgsForToolChain(const ToolChain *TC, StringRef BoundArch, *TranslatedArgs, DeviceOffloadKind, AllocatedArgs); if (!OpenMPArgs) { Entry = TC->TranslateArgs(*TranslatedArgs, BoundArch, DeviceOffloadKind); + if (!Entry) + Entry = TranslatedArgs; } else { Entry = TC->TranslateArgs(*OpenMPArgs, BoundArch, DeviceOffloadKind); - delete OpenMPArgs; + if (!Entry) + Entry = OpenMPArgs; + else + delete OpenMPArgs; } - if (!Entry) - Entry = TranslatedArgs; - // Add allocated arguments to the final DAL. for (auto ArgPtr : AllocatedArgs) { Entry->AddSynthesizedArg(ArgPtr);