@@ -68,10 +68,10 @@ void SYCL::constructLLVMForeachCommand(Compilation &C, const JobAction &JA,
68
68
// The llvm-foreach command looks like this:
69
69
// llvm-foreach --in-file-list=a.list --in-replace='{}' -- echo '{}'
70
70
ArgStringList ForeachArgs;
71
- std::string OutputFileName (Output. getFilename ( ));
71
+ std::string OutputFileName (T-> getToolChain (). getInputFilename (Output ));
72
72
ForeachArgs.push_back (C.getArgs ().MakeArgString (" --out-ext=" + Ext));
73
73
for (auto &I : InputFiles) {
74
- std::string Filename (I. getFilename ( ));
74
+ std::string Filename (T-> getToolChain (). getInputFilename (I ));
75
75
ForeachArgs.push_back (
76
76
C.getArgs ().MakeArgString (" --in-file-list=" + Filename));
77
77
ForeachArgs.push_back (
@@ -162,14 +162,14 @@ const char *SYCL::Linker::constructLLVMLinkCommand(
162
162
// an actual object/archive. Take that list and pass those to the linker
163
163
// instead of the original object.
164
164
if (JA.isDeviceOffloading (Action::OFK_SYCL)) {
165
- auto isSYCLDeviceLib = [&C](const InputInfo &II) {
165
+ auto isSYCLDeviceLib = [&C, this ](const InputInfo &II) {
166
166
const ToolChain *HostTC = C.getSingleOffloadToolChain <Action::OFK_Host>();
167
167
StringRef LibPostfix = " .o" ;
168
168
if (HostTC->getTriple ().isWindowsMSVCEnvironment () &&
169
169
C.getDriver ().IsCLMode ())
170
170
LibPostfix = " .obj" ;
171
- StringRef InputFilename =
172
- llvm::sys::path::filename ( StringRef (II. getFilename ( )));
171
+ StringRef InputFilename = llvm::sys::path::filename (
172
+ StringRef (this -> getToolChain (). getInputFilename (II )));
173
173
StringRef LibSyclPrefix (" libsycl-" );
174
174
if (!InputFilename.startswith (LibSyclPrefix) ||
175
175
!InputFilename.endswith (LibPostfix) || (InputFilename.count (' -' ) < 2 ))
@@ -193,18 +193,19 @@ const char *SYCL::Linker::constructLLVMLinkCommand(
193
193
if (LinkSYCLDeviceLibs)
194
194
Opts.push_back (" -only-needed" );
195
195
for (const auto &II : InputFiles) {
196
+ std::string FileName = getToolChain ().getInputFilename (II);
196
197
if (II.getType () == types::TY_Tempfilelist) {
197
198
// Pass the unbundled list with '@' to be processed.
198
- std::string FileName (II.getFilename ());
199
199
Libs.push_back (C.getArgs ().MakeArgString (" @" + FileName));
200
200
} else if (II.getType () == types::TY_Archive && !LinkSYCLDeviceLibs) {
201
- Libs.push_back (II. getFilename ( ));
201
+ Libs.push_back (C. getArgs (). MakeArgString (FileName ));
202
202
} else
203
- Objs.push_back (II. getFilename ( ));
203
+ Objs.push_back (C. getArgs (). MakeArgString (FileName ));
204
204
}
205
205
} else
206
206
for (const auto &II : InputFiles)
207
- Objs.push_back (II.getFilename ());
207
+ Objs.push_back (
208
+ C.getArgs ().MakeArgString (getToolChain ().getInputFilename (II)));
208
209
209
210
// Get llvm-link path.
210
211
SmallString<128 > ExecPath (C.getDriver ().Dir );
@@ -227,7 +228,8 @@ const char *SYCL::Linker::constructLLVMLinkCommand(
227
228
};
228
229
229
230
// Add an intermediate output file.
230
- const char *OutputFileName = Output.getFilename ();
231
+ const char *OutputFileName =
232
+ C.getArgs ().MakeArgString (getToolChain ().getInputFilename (Output));
231
233
232
234
if (Libs.empty ())
233
235
AddLinkCommand (OutputFileName, Objs, Opts);
0 commit comments