From b7cca872546523c4ef83cb893545f8ed73c1b6dc Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Tue, 16 Mar 2021 12:47:02 -0700 Subject: [PATCH 1/2] [Driver][SYCL] Address issue when unbundling for non-FPGA archive When unbundling a fat static archive and not targeting FPGA, the driver would assert due to a mismatch of expected unbundled files within the generated toolchain. This was due to the generic nature in which we were searching for AOCO type archives. --- clang/lib/Driver/Driver.cpp | 3 ++- clang/test/Driver/sycl-offload-static-lib.cpp | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 27dc6ff7c3d19..ce1a5caecd3f2 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -6193,7 +6193,8 @@ InputInfo Driver::BuildJobsForActionNoCache( TI = types::TY_Tempfilelist; } else if (EffectiveTriple.getSubArch() != llvm::Triple::SPIRSubArch_fpga) { - if (UI.DependentOffloadKind == Action::OFK_SYCL) { + if (UI.DependentOffloadKind == Action::OFK_SYCL && + JA->getType() != types::TY_FPGA_AOCO) { // Do not add the current info for device with FPGA device. The // device side isn't used continue; diff --git a/clang/test/Driver/sycl-offload-static-lib.cpp b/clang/test/Driver/sycl-offload-static-lib.cpp index d33181bc0e973..8c12cb755007c 100644 --- a/clang/test/Driver/sycl-offload-static-lib.cpp +++ b/clang/test/Driver/sycl-offload-static-lib.cpp @@ -150,3 +150,15 @@ // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -foffload-static-lib= -c %s 2>&1 \ // RUN: | FileCheck %s -check-prefixes=FOFFLOAD_STATIC_LIB_NOVALUE // FOFFLOAD_STATIC_LIB_NOVALUE: warning: argument unused during compilation: '-foffload-static-lib=' + +/// Use of a static archive with various targets should compile and unbundle +// RUN: touch %t.a +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl %t.a -### 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_gen-unknown-unknown-sycldevice %t.a -### 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_fpga-unknown-unknown-sycldevice %t.a -### 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_x86_64-unknown-unknown-sycldevice %t.a -### 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// STATIC_ARCHIVE_NO_UNBUNDLE: clang-offload-bundler{{.*}} From d24350a7bdf14c2a047323764f44cd0981976016 Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Wed, 17 Mar 2021 07:46:49 -0700 Subject: [PATCH 2/2] [NFC] address review comments --- clang/test/Driver/sycl-offload-static-lib.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/clang/test/Driver/sycl-offload-static-lib.cpp b/clang/test/Driver/sycl-offload-static-lib.cpp index 8c12cb755007c..514828c941e6f 100644 --- a/clang/test/Driver/sycl-offload-static-lib.cpp +++ b/clang/test/Driver/sycl-offload-static-lib.cpp @@ -154,11 +154,11 @@ /// Use of a static archive with various targets should compile and unbundle // RUN: touch %t.a // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl %t.a -### 2>&1 \ -// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_UNBUNDLE // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_gen-unknown-unknown-sycldevice %t.a -### 2>&1 \ -// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_UNBUNDLE // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_fpga-unknown-unknown-sycldevice %t.a -### 2>&1 \ -// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_UNBUNDLE // RUN: %clangxx -target x86_64-unknown-linux-gnu -fsycl -fsycl-targets=spir64_x86_64-unknown-unknown-sycldevice %t.a -### 2>&1 \ -// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_NO_UNBUNDLE -// STATIC_ARCHIVE_NO_UNBUNDLE: clang-offload-bundler{{.*}} +// RUN: | FileCheck %s -check-prefixes=STATIC_ARCHIVE_UNBUNDLE +// STATIC_ARCHIVE_UNBUNDLE: clang-offload-bundler{{.*}}