[PATCH] D100024: [clang] Check AuxTarget exists when creating target in CompilerInstance.

Tommy Chiang via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 7 00:52:24 PDT 2021


oToToT created this revision.
oToToT added reviewers: sammccall, kadircet.
oToToT added a project: clang.
oToToT requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added subscribers: cfe-commits, sstefan1.

D97493 <https://reviews.llvm.org/D97493> separate target creation out to a single function `CompilerInstance::createTarget`. However, it would overwrite AuxTarget even if it has been set.
As @kadircet recommended in D98128 <https://reviews.llvm.org/D98128>, this patch check the existence of AuxTarget and not overwrite it when it has been set.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D100024

Files:
  clang/include/clang/Frontend/CompilerInstance.h
  clang/lib/Frontend/CompilerInstance.cpp


Index: clang/lib/Frontend/CompilerInstance.cpp
===================================================================
--- clang/lib/Frontend/CompilerInstance.cpp
+++ clang/lib/Frontend/CompilerInstance.cpp
@@ -104,8 +104,10 @@
   if (!hasTarget())
     return false;
 
-  // Create TargetInfo for the other side of CUDA/OpenMP/SYCL compilation.
-  if ((getLangOpts().CUDA || getLangOpts().OpenMPIsDevice ||
+  // Check whether AuxTarget exists, if not, then create TargetInfo for the
+  // other side of CUDA/OpenMP/SYCL compilation.
+  if (!hasAuxTarget() &&
+      (getLangOpts().CUDA || getLangOpts().OpenMPIsDevice ||
        getLangOpts().SYCLIsDevice) &&
       !getFrontendOpts().AuxTriple.empty()) {
     auto TO = std::make_shared<TargetOptions>();
Index: clang/include/clang/Frontend/CompilerInstance.h
===================================================================
--- clang/include/clang/Frontend/CompilerInstance.h
+++ clang/include/clang/Frontend/CompilerInstance.h
@@ -377,6 +377,8 @@
   /// @name AuxTarget Info
   /// {
 
+  bool hasAuxTarget() const { return AuxTarget != nullptr; }
+
   TargetInfo *getAuxTarget() const { return AuxTarget.get(); }
 
   /// Replace the current AuxTarget.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D100024.335739.patch
Type: text/x-patch
Size: 1209 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210407/58ff0b3c/attachment.bin>


More information about the cfe-commits mailing list