ShuhongL updated this revision to Diff 274519.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82677/new/
https://reviews.llvm.org/D82677
Files:
clang/lib/Driver/ToolChains/AIX.cpp
clang/lib/Driver/ToolChains/AIX.h
clang/lib/Frontend/InitHeaderSearch.cpp
clang/test/Driver/aix-toolchain-include.cpp
Index: clang/test/Driver/aix-toolchain-include.cpp
===================================================================
--- /dev/null
+++ clang/test/Driver/aix-toolchain-include.cpp
@@ -0,0 +1,41 @@
+// Tests that AIX toolchain adds system includes to its search path.
+
+// Check powerpc-ibm-aix, 32-bit.
+// RUN: %clangxx -### -no-canonical-prefixes %s 2>&1 \
+// RUN: -target powerpc-ibm-aix \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: | FileCheck -check-prefix=CHECK-INTERNAL32-INCLUDE %s
+// CHECK-INTERNAL32-INCLUDE: {{.*}}clang{{.*}}" "-cc1"
+// CHECK-INTERNAL32-INCLUDE: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-INTERNAL32-INCLUDE: "-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
+// CHECK-INTERNAL32-INCLUDE: "-internal-isystem" "/usr/include"
+
+// Check powerpc-ibm-aix, 64-bit.
+// RUN: %clangxx -### -no-canonical-prefixes %s 2>&1 \
+// RUN: -target powerpc64-ibm-aix \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: | FileCheck -check-prefix=CHECK-INTERNAL64-INCLUDE %s
+// CHECK-INTERNAL64-INCLUDE: {{.*}}clang{{.*}}" "-cc1"
+// CHECK-INTERNAL64-INCLUDE: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-INTERNAL64-INCLUDE: "-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
+// CHECK-INTERNAL64-INCLUDE: "-internal-isystem" "/usr/include"
+
+// Check powerpc-ibm-aix, 32-bit. -nostdinc option.
+// RUN: %clangxx -### -no-canonical-prefixes %s 2>&1 \
+// RUN: -target powerpc-ibm-aix \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: -nostdinc \
+// RUN: | FileCheck -check-prefix=CHECK-NOSTDINC32-INCLUDE %s
+// CHECK-NOSTDINC32-INCLUDE: {{.*}}clang{{.*}}" "-cc1"
+// CHECK-NOSTDINC32-INCLUDE: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-NOSTDINC32-INCLUDE-NOT: "-internal-isystem"
+
+// Check powerpc-ibm-aix, 64-bit. -nostdinc option.
+// RUN: %clangxx -### -no-canonical-prefixes %s 2>&1 \
+// RUN: -target powerpc64-ibm-aix \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: -nostdinc \
+// RUN: | FileCheck -check-prefix=CHECK-NOSTDINC64-INCLUDE %s
+// CHECK-NOSTDINC64-INCLUDE: {{.*}}clang{{.*}}" "-cc1"
+// CHECK-NOSTDINC64-INCLUDE: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
+// CHECK-NOSTDINC64-INCLUDE-NOT: "-internal-isystem"
Index: clang/lib/Frontend/InitHeaderSearch.cpp
===================================================================
--- clang/lib/Frontend/InitHeaderSearch.cpp
+++ clang/lib/Frontend/InitHeaderSearch.cpp
@@ -381,6 +381,7 @@
case llvm::Triple::Linux:
case llvm::Triple::Hurd:
case llvm::Triple::Solaris:
+ case llvm::Triple::AIX:
llvm_unreachable("Include management is handled in the driver.");
break;
case llvm::Triple::Win32:
@@ -424,6 +425,7 @@
case llvm::Triple::Hurd:
case llvm::Triple::Solaris:
case llvm::Triple::WASI:
+ case llvm::Triple::AIX:
return;
case llvm::Triple::Win32:
Index: clang/lib/Driver/ToolChains/AIX.h
===================================================================
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -63,6 +63,10 @@
bool isPIEDefault() const override { return false; }
bool isPICDefaultForced() const override { return true; }
+ void
+ AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const override;
+
protected:
Tool *buildAssembler() const override;
Tool *buildLinker() const override;
Index: clang/lib/Driver/ToolChains/AIX.cpp
===================================================================
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -13,12 +13,15 @@
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "llvm/Option/ArgList.h"
+#include "llvm/Support/Path.h"
using AIX = clang::driver::toolchains::AIX;
using namespace clang::driver;
using namespace clang::driver::tools;
+using namespace clang::driver::toolchains;
using namespace llvm::opt;
+using namespace llvm::sys;
void aix::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
@@ -163,6 +166,21 @@
getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
}
+void AIX::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ // Check if -nostdinc is specified as a driver option
+ if (DriverArgs.hasArg(options::OPT_nostdinc))
+ return;
+
+ const Driver &D = getDriver();
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
+ SmallString<128> P(D.ResourceDir);
+ path::append(P, "/include");
+ addSystemInclude(DriverArgs, CC1Args, P.str());
+ }
+ addSystemInclude(DriverArgs, CC1Args, "/usr/include");
+}
+
auto AIX::buildAssembler() const -> Tool * { return new aix::Assembler(*this); }
auto AIX::buildLinker() const -> Tool * { return new aix::Linker(*this); }
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits