forked from OSchip/llvm-project
[AIX] Don't pass no-integrated-as by default
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. Reviewed By: #powerpc, shchenz Differential Revision: https://reviews.llvm.org/D105512
This commit is contained in:
parent
e37dbc6e57
commit
31d10ea10e
|
@ -380,6 +380,10 @@ public:
|
|||
/// 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; }
|
||||
|
||||
|
|
|
@ -176,6 +176,8 @@ void aix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
/// 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");
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,9 @@ public:
|
|||
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 @@ protected:
|
|||
|
||||
private:
|
||||
llvm::StringRef GetHeaderSysroot(const llvm::opt::ArgList &DriverArgs) const;
|
||||
bool ParseInlineAsmUsingAsmParser;
|
||||
};
|
||||
|
||||
} // end namespace toolchains
|
||||
|
|
|
@ -5038,7 +5038,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
<< 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)) {
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue