diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -8354,8 +8354,10 @@ StringRef Arch = (OffloadAction->getOffloadingArch()) ? OffloadAction->getOffloadingArch() : TCArgs.getLastArgValue(options::OPT_march_EQ); - StringRef Kind = - Action::GetOffloadKindName(OffloadAction->getOffloadingDeviceKind()); + StringRef Kind = TCArgs.hasArg(options::OPT_ffreestanding) + ? "none" + : Action::GetOffloadKindName( + OffloadAction->getOffloadingDeviceKind()); ArgStringList Features; SmallVector FeatureArgs; diff --git a/clang/test/Driver/openmp-offload.c b/clang/test/Driver/openmp-offload.c --- a/clang/test/Driver/openmp-offload.c +++ b/clang/test/Driver/openmp-offload.c @@ -206,3 +206,13 @@ // RUN: -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHK-SYNTAX-ONLY-ARGS %s // CHK-SYNTAX-ONLY-ARGS: "-cc1" "-triple" "powerpc64le-ibm-linux-gnu"{{.*}}"-fsyntax-only" // CHK-SYNTAX-ONLY-ARGS: "-cc1" "-triple" "powerpc64le-unknown-linux"{{.*}}"-fsyntax-only" + +// +// Ensure that we do not set the kind in a freestanding offloading build. +// +// RUN: %clang -### --target=powerpc64le-linux -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu \ +// RUN: -ffreestanding %s 2>&1 | FileCheck -check-prefix=FREESTANDING %s +// RUN: %clang -### --target=powerpc64le-linux -fopenmp=libomp -fopenmp-targets=powerpc64le-ibm-linux-gnu \ +// RUN: -Xopenmp-target=powerpc64le-ibm-linux-gnu -ffreestanding %s 2>&1 | FileCheck -check-prefix=FREESTANDING %s +// FREESTANDING: "-cc1" "-triple" "powerpc64le-ibm-linux-gnu" "-aux-triple" "powerpc64le-unknown-linux"{{.*}}"-ffreestanding" +// FREESTANDING: clang-offload-packager"{{.*}}"--image=file={{.*}},triple=powerpc64le-ibm-linux-gnu,arch=,kind=none"