Skip to content

Commit 2b6f4f4

Browse files
authored
[Driver][SYCL][FPGA] Proper dependency output location when given /Fo<dir> (#1346)
When using /Fo<dir> 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 <[email protected]>
1 parent 64b771a commit 2b6f4f4

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6801,9 +6801,12 @@ const char *Clang::getDependencyFileName(const ArgList &Args,
68016801

68026802
if (Arg *OutputOpt =
68036803
Args.getLastArg(options::OPT_o, options::OPT__SLASH_Fo)) {
6804-
SmallString<128> OutputFilename(OutputOpt->getValue());
6805-
llvm::sys::path::replace_extension(OutputFilename, llvm::Twine('d'));
6806-
return Args.MakeArgString(OutputFilename);
6804+
SmallString<128> OutputArgument(OutputOpt->getValue());
6805+
if (llvm::sys::path::is_separator(OutputArgument.back()))
6806+
// If the argument is a directory, output to BaseName in that dir.
6807+
llvm::sys::path::append(OutputArgument, getBaseInputStem(Args, Inputs));
6808+
llvm::sys::path::replace_extension(OutputArgument, llvm::Twine('d'));
6809+
return Args.MakeArgString(OutputArgument);
68076810
}
68086811

68096812
return Args.MakeArgString(Twine(getBaseInputStem(Args, Inputs)) + ".d");

clang/test/Driver/sycl-offload-intelfpga.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,13 @@
277277
// RUN: | FileCheck -check-prefix=CHK-FPGA-REPORT-NAME %s
278278
// CHK-FPGA-REPORT-NAME: aoc{{.*}} "-sycl"{{.*}} "-output-report-folder=dummy2.prj"
279279

280+
/// -fintelfpga output dep file using -Fo<dir>
281+
// RUN: mkdir -p %t_dir
282+
// RUN: %clang_cl -### -c -fsycl -fintelfpga -Fo%t_dir/ %s 2>&1 \
283+
// RUN: | FileCheck -DDEPDIR=%t_dir/ -check-prefix=CHK-FPGA-DEP-DIR %s
284+
// CHK-FPGA-DEP-DIR: clang{{.*}} "-dependency-file" "[[DEPDIR]][[DEPFILE:.+\.d]]"
285+
// CHK-FPGA-DEP-DIR: clang-offload-bundler{{.*}} "-inputs={{.*}}.bc,{{.*}}.obj,[[DEPDIR]][[DEPFILE]]"
286+
280287
/// -fintelfpga static lib (aoco)
281288
// RUN: echo "Dummy AOCO image" > %t.aoco
282289
// RUN: echo "void foo() {}" > %t.c

0 commit comments

Comments
 (0)