Index: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp +++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp @@ -464,8 +464,12 @@ CmdArgs.push_back( Args.MakeArgString("-plugin-opt=cs-profile-path=default_%m.profraw")); } else if (ProfileUseArg) { + SmallString<128> Path( + ProfileUseArg->getNumValues() == 0 ? "" : ProfileUseArg->getValue()); + if (Path.empty() || llvm::sys::fs::is_directory(Path)) + llvm::sys::path::append(Path, "default.profdata"); CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=cs-profile-path=") + - ProfileUseArg->getValue())); + Path)); } // Need this flag to turn on new pass manager via Gold plugin. Index: cfe/trunk/test/Driver/cspgo-lto.c =================================================================== --- cfe/trunk/test/Driver/cspgo-lto.c +++ cfe/trunk/test/Driver/cspgo-lto.c @@ -0,0 +1,6 @@ +// RUN: touch %t.o +// +// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto=thin \ +// RUN: -fprofile-use 2>&1 | FileCheck %s + +// CHECK: -plugin-opt=cs-profile-path=default.profdata