"the second argument of '-fpatchable-function-entry' must be smaller than the first argument">;
def warn_drv_unable_to_find_directory_expected : Warning<
- "unable to find %0 directory, expected to be in '%1'">,
- InGroup<InvalidOrNonExistentDirectory>, DefaultIgnore;
+ "unable to find %0 directory, expected to be in '%1' found via %2">,
+ InGroup<InvalidOrNonExistentDirectory>;
def warn_drv_ps_force_pic : Warning<
"option '%0' was ignored by the %1 toolchain, using '-fPIC'">,
InGroup<OptionIgnored>;
-def warn_drv_ps_sdk_dir : Warning<
- "environment variable '%0' is set, but points to invalid or nonexistent directory '%1'">,
- InGroup<InvalidOrNonExistentDirectory>;
-
def err_drv_defsym_invalid_format : Error<"defsym must be of the form: sym=value: %0">;
def err_drv_defsym_invalid_symval : Error<"value is not an integer: %0">;
def warn_drv_msvc_not_found : Warning<
D.Diag(clang::diag::err_drv_unsupported_opt_for_target)
<< "-static" << Platform;
- // Determine where to find the PS4/PS5 libraries. We use the EnvVar
- // if it exists; otherwise use the driver's installation path, which
- // should be <SDK_DIR>/host_tools/bin.
-
- SmallString<512> SDKDir;
- if (const char *EnvValue = getenv(EnvVar)) {
- if (!llvm::sys::fs::exists(EnvValue))
- D.Diag(clang::diag::warn_drv_ps_sdk_dir) << EnvVar << EnvValue;
- SDKDir = EnvValue;
- } else {
- SDKDir = D.Dir;
- llvm::sys::path::append(SDKDir, "/../../");
- }
-
- // By default, the driver won't report a warning if it can't find the
- // SDK include or lib directories. This behavior could be changed if
- // -Weverything or -Winvalid-or-nonexistent-directory options are passed.
+ // Determine where to find the PS4/PS5 libraries.
// If -isysroot was passed, use that as the SDK base path.
+ // If not, we use the EnvVar if it exists; otherwise use the driver's
+ // installation path, which should be <SDK_DIR>/host_tools/bin.
+ SmallString<80> Whence;
if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
SDKRootDir = A->getValue();
if (!llvm::sys::fs::exists(SDKRootDir))
D.Diag(clang::diag::warn_missing_sysroot) << SDKRootDir;
- } else
- SDKRootDir = std::string(SDKDir.str());
+ Whence = A->getSpelling();
+ } else if (const char *EnvValue = getenv(EnvVar)) {
+ SDKRootDir = EnvValue;
+ Whence = { "environment variable '", EnvVar, "'" };
+ } else {
+ SDKRootDir = D.Dir + "/../../";
+ Whence = "compiler's location";
+ }
SmallString<512> SDKIncludeDir(SDKRootDir);
llvm::sys::path::append(SDKIncludeDir, "target/include");
!Args.hasArg(options::OPT__sysroot_EQ) &&
!llvm::sys::fs::exists(SDKIncludeDir)) {
D.Diag(clang::diag::warn_drv_unable_to_find_directory_expected)
- << Twine(Platform, " system headers").str() << SDKIncludeDir;
+ << Twine(Platform, " system headers").str() << SDKIncludeDir << Whence;
}
SmallString<512> SDKLibDir(SDKRootDir);
!Args.hasArg(options::OPT_emit_ast) &&
!llvm::sys::fs::exists(SDKLibDir)) {
D.Diag(clang::diag::warn_drv_unable_to_find_directory_expected)
- << Twine(Platform, " system libraries").str() << SDKLibDir;
+ << Twine(Platform, " system libraries").str() << SDKLibDir << Whence;
return;
}
getFilePaths().push_back(std::string(SDKLibDir.str()));
-// KEEP-ALL-NOT: warning:
+// KEEP-ALL-NOT: warning: argument unused
// KEEP-ALL: "-mframe-pointer=all"
-// KEEP-NON-LEAF-NOT: warning:
+// KEEP-NON-LEAF-NOT: warning: argument unused
// KEEP-NON-LEAF: "-mframe-pointer=non-leaf"
-// KEEP-NONE-NOT: warning:
+// KEEP-NONE-NOT: warning: argument unused
// KEEP-NONE: "-mframe-pointer=none"
// On Linux x86, omit frame pointer when optimization is enabled.