Skip to content

Commit

Permalink
Merged master:f93b42a629ae into amd-gfx:5a888c923f81
Browse files Browse the repository at this point in the history
Local branch amd-gfx 5a888c9 Merged master:f6615b2ddb3d into amd-gfx:0449ca698739
Remote branch master f93b42a [NFC][OpenMP] Remove outdated comments about potential issues
  • Loading branch information
Sw authored and Sw committed Aug 24, 2020
2 parents 5a888c9 + f93b42a commit febc153
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 9 deletions.
59 changes: 55 additions & 4 deletions clang/lib/Driver/ToolChains/OpenBSD.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
#include "Arch/Mips.h"
#include "Arch/Sparc.h"
#include "CommonArgs.h"
#include "clang/Config/config.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Support/Path.h"

using namespace clang::driver;
using namespace clang::driver::tools;
Expand Down Expand Up @@ -256,6 +258,45 @@ OpenBSD::OpenBSD(const Driver &D, const llvm::Triple &Triple,
getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
}

void OpenBSD::AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const {
const Driver &D = getDriver();

if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
return;

if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
SmallString<128> Dir(D.ResourceDir);
llvm::sys::path::append(Dir, "include");
addSystemInclude(DriverArgs, CC1Args, Dir.str());
}

if (DriverArgs.hasArg(options::OPT_nostdlibinc))
return;

// Check for configure-time C include directories.
StringRef CIncludeDirs(C_INCLUDE_DIRS);
if (CIncludeDirs != "") {
SmallVector<StringRef, 5> dirs;
CIncludeDirs.split(dirs, ":");
for (StringRef dir : dirs) {
StringRef Prefix =
llvm::sys::path::is_absolute(dir) ? StringRef(D.SysRoot) : "";
addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
}
return;
}

addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/include");
}

void OpenBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const {
addSystemInclude(DriverArgs, CC1Args,
getDriver().SysRoot + "/usr/include/c++/v1");
}

void OpenBSD::AddCXXStdlibLibArgs(const ArgList &Args,
ArgStringList &CmdArgs) const {
bool Profiling = Args.hasArg(options::OPT_pg);
Expand All @@ -264,12 +305,14 @@ void OpenBSD::AddCXXStdlibLibArgs(const ArgList &Args,
CmdArgs.push_back(Profiling ? "-lc++abi_p" : "-lc++abi");
}

Tool *OpenBSD::buildAssembler() const {
return new tools::openbsd::Assembler(*this);
std::string OpenBSD::getCompilerRT(const ArgList &Args,
StringRef Component,
FileType Type) const {
SmallString<128> Path(getDriver().SysRoot);
llvm::sys::path::append(Path, "/usr/lib/libcompiler_rt.a");
return std::string(Path.str());
}

Tool *OpenBSD::buildLinker() const { return new tools::openbsd::Linker(*this); }

void OpenBSD::addClangTargetOptions(const ArgList &DriverArgs,
ArgStringList &CC1Args,
Action::OffloadKind) const {
Expand All @@ -278,3 +321,11 @@ void OpenBSD::addClangTargetOptions(const ArgList &DriverArgs,
options::OPT_fno_use_init_array, false))
CC1Args.push_back("-fno-use-init-array");
}

Tool *OpenBSD::buildAssembler() const {
return new tools::openbsd::Assembler(*this);
}

Tool *OpenBSD::buildLinker() const { return new tools::openbsd::Linker(*this); }

bool OpenBSD::HasNativeLLVMSupport() const { return true; }
11 changes: 11 additions & 0 deletions clang/lib/Driver/ToolChains/OpenBSD.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ class LLVM_LIBRARY_VISIBILITY OpenBSD : public Generic_ELF {
OpenBSD(const Driver &D, const llvm::Triple &Triple,
const llvm::opt::ArgList &Args);

bool HasNativeLLVMSupport() const override;

bool IsMathErrnoDefault() const override { return false; }
bool IsObjCNonFragileABIDefault() const override { return true; }
bool isPIEDefault() const override { return true; }
Expand All @@ -65,9 +67,18 @@ class LLVM_LIBRARY_VISIBILITY OpenBSD : public Generic_ELF {
return ToolChain::CST_Libcxx;
}

void
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;

void addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const override;

std::string getCompilerRT(const llvm::opt::ArgList &Args, StringRef Component,
FileType Type = ToolChain::FT_Static) const override;

unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override {
return 2;
}
Expand Down
2 changes: 2 additions & 0 deletions clang/lib/Frontend/InitHeaderSearch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
case llvm::Triple::Linux:
case llvm::Triple::Hurd:
case llvm::Triple::Solaris:
case llvm::Triple::OpenBSD:
llvm_unreachable("Include management is handled in the driver.");

case llvm::Triple::CloudABI: {
Expand Down Expand Up @@ -423,6 +424,7 @@ void InitHeaderSearch::AddDefaultIncludePaths(const LangOptions &Lang,
case llvm::Triple::Emscripten:
case llvm::Triple::Linux:
case llvm::Triple::Hurd:
case llvm::Triple::OpenBSD:
case llvm::Triple::Solaris:
case llvm::Triple::WASI:
case llvm::Triple::AIX:
Expand Down
8 changes: 5 additions & 3 deletions flang/lib/Parser/openacc-parsers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ TYPE_PARSER("AUTO" >> construct<AccClause>(construct<AccClause::Auto>()) ||
construct<AccClause>(construct<AccClause::Vector>(maybe(
parenthesized(("LENGTH:" >> scalarIntExpr || scalarIntExpr))))) ||
"WAIT" >> construct<AccClause>(construct<AccClause::Wait>(
maybe(Parser<AccWaitArgument>{}))) ||
maybe(parenthesized(Parser<AccWaitArgument>{})))) ||
"WORKER" >>
construct<AccClause>(construct<AccClause::Worker>(maybe(
parenthesized(("NUM:" >> scalarIntExpr || scalarIntExpr))))) ||
Expand All @@ -125,8 +125,10 @@ TYPE_PARSER(construct<AccObjectList>(nonemptyList(Parser<AccObject>{})))
TYPE_PARSER(construct<AccObjectListWithModifier>(
maybe(Parser<AccDataModifier>{}), Parser<AccObjectList>{}))

TYPE_PARSER(construct<AccWaitArgument>(
maybe("DEVNUM:" >> scalarIntExpr / ":"), nonemptyList(scalarIntExpr)))
// 2.16.3 (2485) wait-argument is:
// [devnum : int-expr :] [queues :] int-expr-list
TYPE_PARSER(construct<AccWaitArgument>(maybe("DEVNUM:" >> scalarIntExpr / ":"),
"QUEUES:" >> nonemptyList(scalarIntExpr) || nonemptyList(scalarIntExpr)))

// 2.9 (1609) size-expr is one of:
// int-expr
Expand Down
4 changes: 4 additions & 0 deletions flang/lib/Parser/unparse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1937,6 +1937,10 @@ class UnparseVisitor {
Put("\n");
EndOpenACC();
}
void Unparse(const AccWaitArgument &x) {
Walk("DEVNUM:", std::get<std::optional<ScalarIntExpr>>(x.t), ":");
Walk(std::get<std::list<ScalarIntExpr>>(x.t), ",");
}
void Unparse(const OpenACCWaitConstruct &x) {
BeginOpenACC();
Word("!$ACC ");
Expand Down
24 changes: 24 additions & 0 deletions flang/test/Semantics/acc-clause-validity.f90
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,30 @@ program openacc_clause_validity
!ERROR: Unmatched END PARALLEL LOOP directive
!$acc end parallel loop

!$acc kernels wait(1, 2) async(3)
!$acc end kernels

!$acc kernels wait(queues: 1, 2) async(3)
!$acc end kernels

!$acc kernels wait(devnum: 1: 1, 2) async(3)
!$acc end kernels

!$acc kernels wait(devnum: 1: queues: 1, 2) async(3)
!$acc end kernels

!$acc wait(1)
!$acc wait(1, 2)

!$acc wait(queues: 1)
!$acc wait(queues: 1, 2)

!$acc wait(devnum: 1: 3)
!$acc wait(devnum: 1: 3, 4)

!$acc wait(devnum: 1: queues: 3)
!$acc wait(devnum: 1: queues: 3, 4)

contains

subroutine sub1(a)
Expand Down
2 changes: 0 additions & 2 deletions openmp/libomptarget/src/omptarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -953,8 +953,6 @@ int processDataBefore(int64_t DeviceId, void *HostPtr, int32_t ArgNum,

/// Process data after launching the kernel, including transferring data back to
/// host if needed and deallocating target memory of (first-)private variables.
/// FIXME: This function has correctness issue that target memory might be
/// deallocated when they're being used.
int processDataAfter(int64_t DeviceId, void *HostPtr, int32_t ArgNum,
void **ArgBases, void **Args, int64_t *ArgSizes,
int64_t *ArgTypes, void **ArgMappers,
Expand Down

0 comments on commit febc153

Please sign in to comment.