From a4a6146f0837509ca563a3d54cfdb52f6d12c8d4 Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Wed, 18 Mar 2020 10:59:46 -0700 Subject: [PATCH 1/3] [Driver][SYCL][FPGA] Proper dependency output location when given /Fo When using /Fo the improper dependency file name was generated, causing the bundle step to not be able to locate the dependency file when compiling to object Signed-off-by: Michael D Toguchi --- clang/lib/Driver/ToolChains/Clang.cpp | 3 +++ clang/test/Driver/sycl-offload-intelfpga.cpp | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 32557c38684ab..3031e4fa067e6 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6793,6 +6793,9 @@ const char *Clang::getDependencyFileName(const ArgList &Args, if (Arg *OutputOpt = Args.getLastArg(options::OPT_o, options::OPT__SLASH_Fo)) { SmallString<128> OutputFilename(OutputOpt->getValue()); + if (llvm::sys::path::is_separator(OutputFilename.back())) + // If the argument is a directory, output to BaseName in that dir. + llvm::sys::path::append(OutputFilename, getBaseInputStem(Args, Inputs)); llvm::sys::path::replace_extension(OutputFilename, llvm::Twine('d')); return Args.MakeArgString(OutputFilename); } diff --git a/clang/test/Driver/sycl-offload-intelfpga.cpp b/clang/test/Driver/sycl-offload-intelfpga.cpp index 33fd08f64091e..7adc26b589067 100644 --- a/clang/test/Driver/sycl-offload-intelfpga.cpp +++ b/clang/test/Driver/sycl-offload-intelfpga.cpp @@ -252,6 +252,13 @@ // CHK-FPGA-REPORT-OPT2: aoc{{.*}} "-sycl" {{.*}} "-output-report-folder=dummy.prj" // CHK-FPGA-REPORT-OPT2-NOT: aoc{{.*}} "-sycl" {{.*}} "-output-report-folder=[[OUTDIR]]{{.*}}" +/// -fintelfpga output dep file using -Fo +// RUN: mkdir -p %t_dir +// RUN: %clang_cl -### -c -fsycl -fintelfpga -Fo%t_dir/ %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-FPGA-DEP-DIR %s +// CHK-FPGA-DEP-DIR: clang{{.*}} "-dependency-file" "[[DEPFILE:.+\.d]]" +// CHK-FPGA-DEP-DIR: clang-offload-bundler{{.*}} "-inputs={{.*}}.bc,{{.*}}.obj,[[DEPFILE]]" + /// -fintelfpga static lib (aoco) // RUN: echo "Dummy AOCO image" > %t.aoco // RUN: echo "void foo() {}" > %t.c From 5d330eb0cc6dd921ebcfab46ae936fa2b1b0e396 Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Mon, 23 Mar 2020 14:38:43 -0700 Subject: [PATCH 2/3] [NFC] Address review comments (rename var) Signed-off-by: Michael D Toguchi --- clang/lib/Driver/ToolChains/Clang.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 3031e4fa067e6..028971f5b2821 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6792,12 +6792,12 @@ const char *Clang::getDependencyFileName(const ArgList &Args, if (Arg *OutputOpt = Args.getLastArg(options::OPT_o, options::OPT__SLASH_Fo)) { - SmallString<128> OutputFilename(OutputOpt->getValue()); - if (llvm::sys::path::is_separator(OutputFilename.back())) + SmallString<128> OutputArgument(OutputOpt->getValue()); + if (llvm::sys::path::is_separator(OutputArgument.back())) // If the argument is a directory, output to BaseName in that dir. - llvm::sys::path::append(OutputFilename, getBaseInputStem(Args, Inputs)); - llvm::sys::path::replace_extension(OutputFilename, llvm::Twine('d')); - return Args.MakeArgString(OutputFilename); + llvm::sys::path::append(OutputArgument, getBaseInputStem(Args, Inputs)); + llvm::sys::path::replace_extension(OutputArgument, llvm::Twine('d')); + return Args.MakeArgString(OutputArgument); } return Args.MakeArgString(Twine(getBaseInputStem(Args, Inputs)) + ".d"); From d5a7bb744b01eae6392b08b1173372092100bc9b Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Wed, 25 Mar 2020 09:33:00 -0700 Subject: [PATCH 3/3] [NFC] Test update based on review Signed-off-by: Michael D Toguchi --- clang/test/Driver/sycl-offload-intelfpga.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/test/Driver/sycl-offload-intelfpga.cpp b/clang/test/Driver/sycl-offload-intelfpga.cpp index 7adc26b589067..1414457dd24f9 100644 --- a/clang/test/Driver/sycl-offload-intelfpga.cpp +++ b/clang/test/Driver/sycl-offload-intelfpga.cpp @@ -255,9 +255,9 @@ /// -fintelfpga output dep file using -Fo // RUN: mkdir -p %t_dir // RUN: %clang_cl -### -c -fsycl -fintelfpga -Fo%t_dir/ %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHK-FPGA-DEP-DIR %s -// CHK-FPGA-DEP-DIR: clang{{.*}} "-dependency-file" "[[DEPFILE:.+\.d]]" -// CHK-FPGA-DEP-DIR: clang-offload-bundler{{.*}} "-inputs={{.*}}.bc,{{.*}}.obj,[[DEPFILE]]" +// RUN: | FileCheck -DDEPDIR=%t_dir/ -check-prefix=CHK-FPGA-DEP-DIR %s +// CHK-FPGA-DEP-DIR: clang{{.*}} "-dependency-file" "[[DEPDIR]][[DEPFILE:.+\.d]]" +// CHK-FPGA-DEP-DIR: clang-offload-bundler{{.*}} "-inputs={{.*}}.bc,{{.*}}.obj,[[DEPDIR]][[DEPFILE]]" /// -fintelfpga static lib (aoco) // RUN: echo "Dummy AOCO image" > %t.aoco