[HIP] use GetProgramPath for executable discovery
This change replaces the manual building of executable paths using llvm::sys::path::append with GetProgramPath. This enables adding other paths in case executables reside in different directories and makes the code easier to read. Differential Revision: https://reviews.llvm.org/D72903
This commit is contained in:
		
							parent
							
								
									a731c6ba94
								
							
						
					
					
						commit
						24d7a0935b
					
				| 
						 | 
				
			
			@ -105,9 +105,8 @@ const char *AMDGCN::Linker::constructLLVMLinkCommand(
 | 
			
		|||
  CmdArgs.push_back("-o");
 | 
			
		||||
  auto OutputFileName = getOutputFileName(C, OutputFilePrefix, "-linked", "bc");
 | 
			
		||||
  CmdArgs.push_back(OutputFileName);
 | 
			
		||||
  SmallString<128> ExecPath(C.getDriver().Dir);
 | 
			
		||||
  llvm::sys::path::append(ExecPath, "llvm-link");
 | 
			
		||||
  const char *Exec = Args.MakeArgString(ExecPath);
 | 
			
		||||
  const char *Exec =
 | 
			
		||||
      Args.MakeArgString(getToolChain().GetProgramPath("llvm-link"));
 | 
			
		||||
  C.addCommand(std::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
 | 
			
		||||
  return OutputFileName;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -133,9 +132,8 @@ const char *AMDGCN::Linker::constructOptCommand(
 | 
			
		|||
  auto OutputFileName =
 | 
			
		||||
      getOutputFileName(C, OutputFilePrefix, "-optimized", "bc");
 | 
			
		||||
  OptArgs.push_back(OutputFileName);
 | 
			
		||||
  SmallString<128> OptPath(C.getDriver().Dir);
 | 
			
		||||
  llvm::sys::path::append(OptPath, "opt");
 | 
			
		||||
  const char *OptExec = Args.MakeArgString(OptPath);
 | 
			
		||||
  const char *OptExec =
 | 
			
		||||
      Args.MakeArgString(getToolChain().GetProgramPath("opt"));
 | 
			
		||||
  C.addCommand(std::make_unique<Command>(JA, *this, OptExec, OptArgs, Inputs));
 | 
			
		||||
  return OutputFileName;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -180,9 +178,7 @@ const char *AMDGCN::Linker::constructLlcCommand(
 | 
			
		|||
  auto LlcOutputFile =
 | 
			
		||||
      getOutputFileName(C, OutputFilePrefix, "", OutputIsAsm ? "s" : "o");
 | 
			
		||||
  LlcArgs.push_back(LlcOutputFile);
 | 
			
		||||
  SmallString<128> LlcPath(C.getDriver().Dir);
 | 
			
		||||
  llvm::sys::path::append(LlcPath, "llc");
 | 
			
		||||
  const char *Llc = Args.MakeArgString(LlcPath);
 | 
			
		||||
  const char *Llc = Args.MakeArgString(getToolChain().GetProgramPath("llc"));
 | 
			
		||||
  C.addCommand(std::make_unique<Command>(JA, *this, Llc, LlcArgs, Inputs));
 | 
			
		||||
  return LlcOutputFile;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -196,9 +192,7 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
 | 
			
		|||
  // The output from ld.lld is an HSA code object file.
 | 
			
		||||
  ArgStringList LldArgs{
 | 
			
		||||
      "-flavor", "gnu", "-shared", "-o", Output.getFilename(), InputFileName};
 | 
			
		||||
  SmallString<128> LldPath(C.getDriver().Dir);
 | 
			
		||||
  llvm::sys::path::append(LldPath, "lld");
 | 
			
		||||
  const char *Lld = Args.MakeArgString(LldPath);
 | 
			
		||||
  const char *Lld = Args.MakeArgString(getToolChain().GetProgramPath("lld"));
 | 
			
		||||
  C.addCommand(std::make_unique<Command>(JA, *this, Lld, LldArgs, Inputs));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -230,9 +224,8 @@ void AMDGCN::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
 | 
			
		|||
      Args.MakeArgString(std::string("-outputs=").append(OutputFileName));
 | 
			
		||||
  BundlerArgs.push_back(BundlerOutputArg);
 | 
			
		||||
 | 
			
		||||
  SmallString<128> BundlerPath(C.getDriver().Dir);
 | 
			
		||||
  llvm::sys::path::append(BundlerPath, "clang-offload-bundler");
 | 
			
		||||
  const char *Bundler = Args.MakeArgString(BundlerPath);
 | 
			
		||||
  const char *Bundler = Args.MakeArgString(
 | 
			
		||||
      T.getToolChain().GetProgramPath("clang-offload-bundler"));
 | 
			
		||||
  C.addCommand(std::make_unique<Command>(JA, T, Bundler, BundlerArgs, Inputs));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue