[PATCH] D105512: [AIX] Don't pass no-integrated-as by default
Jinsong Ji via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 6 13:58:28 PDT 2021
jsji created this revision.
jsji added reviewers: PowerPC, shchenz.
jsji requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
D105314 <https://reviews.llvm.org/D105314> added the abibility choose to use AsmParser for parsing inline
asm. -no-intergrated-as will override this default if specified
explicitly.
If toolchain choose to use MCAsmParser for inline asm, don't pass
the option to disable integrated-as explictly unless set by user.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D105512
Files:
clang/include/clang/Driver/ToolChain.h
clang/lib/Driver/ToolChains/AIX.cpp
clang/lib/Driver/ToolChains/AIX.h
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/aix-as.c
Index: clang/test/Driver/aix-as.c
===================================================================
--- clang/test/Driver/aix-as.c
+++ clang/test/Driver/aix-as.c
@@ -63,3 +63,18 @@
// CHECK-AS32-MultiInput: "{{.*}}as{{(.exe)?}}"
// CHECK-AS32-MultiInput: "-a32"
// CHECK-AS32-MultiInput: "-many"
+
+// Check not passing no-integrated-as flag by default.
+// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
+// RUN: -target powerpc64-ibm-aix7.1.0.0 \
+// RUN: | FileCheck --check-prefix=CHECK-IAS --implicit-check-not=-no-integrated-as %s
+// CHECK-IAS: InstalledDir
+// CHECK-IAS: "-a64"
+
+// Check passing no-integrated-as flag if specified by user.
+// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
+// RUN: -target powerpc64-ibm-aix7.1.0.0 -fno-integrated-as \
+// RUN: | FileCheck --check-prefix=CHECK-NOIAS %s
+// CHECK-NOIAS: InstalledDir
+// CHECK-NOIAS: -no-integrated-as
+// CHECK-NOIAS: "-a64"
Index: clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -5038,7 +5038,9 @@
<< A->getValue() << A->getOption().getName();
}
- if (!TC.useIntegratedAs())
+ // If toolchain choose to use MCAsmParser for inline asm don't pass the
+ // option to disable integrated-as explictly.
+ if (!TC.useIntegratedAs() && !TC.parseInlineAsmUsingAsmParser())
CmdArgs.push_back("-no-integrated-as");
if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
Index: clang/lib/Driver/ToolChains/AIX.h
===================================================================
--- clang/lib/Driver/ToolChains/AIX.h
+++ clang/lib/Driver/ToolChains/AIX.h
@@ -59,6 +59,9 @@
AIX(const Driver &D, const llvm::Triple &Triple,
const llvm::opt::ArgList &Args);
+ bool parseInlineAsmUsingAsmParser() const override {
+ return ParseInlineAsmUsingAsmParser;
+ }
bool isPICDefault() const override { return true; }
bool isPIEDefault() const override { return false; }
bool isPICDefaultForced() const override { return true; }
@@ -87,6 +90,7 @@
private:
llvm::StringRef GetHeaderSysroot(const llvm::opt::ArgList &DriverArgs) const;
+ bool ParseInlineAsmUsingAsmParser;
};
} // end namespace toolchains
Index: clang/lib/Driver/ToolChains/AIX.cpp
===================================================================
--- clang/lib/Driver/ToolChains/AIX.cpp
+++ clang/lib/Driver/ToolChains/AIX.cpp
@@ -176,6 +176,8 @@
/// AIX - AIX tool chain which can call as(1) and ld(1) directly.
AIX::AIX(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
: ToolChain(D, Triple, Args) {
+ ParseInlineAsmUsingAsmParser = Args.hasFlag(
+ options::OPT_fintegrated_as, options::OPT_fno_integrated_as, true);
getLibraryPaths().push_back(getDriver().SysRoot + "/usr/lib");
}
Index: clang/include/clang/Driver/ToolChain.h
===================================================================
--- clang/include/clang/Driver/ToolChain.h
+++ clang/include/clang/Driver/ToolChain.h
@@ -380,6 +380,10 @@
/// Check if the toolchain should use the integrated assembler.
virtual bool useIntegratedAs() const;
+ /// Check if the toolchain should use AsmParser to parse inlineAsm when
+ /// integrated assembler is not default.
+ virtual bool parseInlineAsmUsingAsmParser() const { return false; }
+
/// IsMathErrnoDefault - Does this tool chain use -fmath-errno by default.
virtual bool IsMathErrnoDefault() const { return true; }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105512.356819.patch
Type: text/x-patch
Size: 3573 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210706/31218467/attachment.bin>
More information about the cfe-commits
mailing list