forked from OSchip/llvm-project
Refactor a bit of duplicated code to useIntegratedAs.
llvm-svn: 177299
This commit is contained in:
parent
4ac1218988
commit
248e219760
|
@ -137,6 +137,8 @@ public:
|
|||
/// by default.
|
||||
virtual bool IsIntegratedAssemblerDefault() const { return false; }
|
||||
|
||||
bool useIntegratedAs(const ArgList &Args) const;
|
||||
|
||||
/// IsStrictAliasingDefault - Does this tool chain use -fstrict-aliasing by
|
||||
/// default.
|
||||
virtual bool IsStrictAliasingDefault() const { return true; }
|
||||
|
|
|
@ -1296,9 +1296,7 @@ static const Tool &SelectToolForJob(Compilation &C, const ToolChain *TC,
|
|||
// bottom up, so what we are actually looking for is an assembler job with a
|
||||
// compiler input.
|
||||
|
||||
if (C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
TC->IsIntegratedAssemblerDefault()) &&
|
||||
if (TC->useIntegratedAs(C.getArgs()) &&
|
||||
!C.getArgs().hasArg(options::OPT_save_temps) &&
|
||||
isa<AssembleJobAction>(JA) &&
|
||||
Inputs->size() == 1 && isa<CompileJobAction>(*Inputs->begin())) {
|
||||
|
|
|
@ -32,6 +32,12 @@ const Driver &ToolChain::getDriver() const {
|
|||
return D;
|
||||
}
|
||||
|
||||
bool ToolChain::useIntegratedAs(const ArgList &Args) const {
|
||||
return Args.hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
}
|
||||
|
||||
std::string ToolChain::getDefaultUniversalArchName() const {
|
||||
// In universal driver terms, the arch name accepted by -arch isn't exactly
|
||||
// the same as the ones that appear in the triple. Roughly speaking, this is
|
||||
|
|
|
@ -184,10 +184,6 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
Key = Action::AnalyzeJobClass;
|
||||
}
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
|
@ -201,7 +197,7 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
case Action::CompileJobClass:
|
||||
T = new tools::Clang(*this); break;
|
||||
case Action::AssembleJobClass: {
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::darwin::Assemble(*this);
|
||||
|
@ -1733,15 +1729,11 @@ Tool &OpenBSD::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
case Action::AssembleJobClass: {
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::openbsd::Assemble(*this);
|
||||
|
@ -1772,15 +1764,11 @@ Tool &Bitrig::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
case Action::AssembleJobClass: {
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::bitrig::Assemble(*this);
|
||||
|
@ -1863,15 +1851,11 @@ Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
case Action::AssembleJobClass:
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::freebsd::Assemble(*this);
|
||||
|
@ -1924,15 +1908,11 @@ Tool &NetBSD::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
case Action::AssembleJobClass:
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::netbsd::Assemble(*this);
|
||||
|
@ -2427,15 +2407,11 @@ Tool &Linux::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
case Action::AssembleJobClass:
|
||||
if (UseIntegratedAs)
|
||||
if (useIntegratedAs(C.getArgs()))
|
||||
T = new tools::ClangAs(*this);
|
||||
else
|
||||
T = new tools::linuxtools::Assemble(*this);
|
||||
|
|
|
@ -1417,9 +1417,8 @@ static void addExceptionArgs(const ArgList &Args, types::ID InputType,
|
|||
/// \brief Check if the toolchain should use the integrated assembler.
|
||||
static bool ShouldUseIntegratedAssembler(const ArgList &Args,
|
||||
const ToolChain &TC) {
|
||||
return Args.hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
TC.IsIntegratedAssemblerDefault());
|
||||
// FIXME: inline
|
||||
return TC.useIntegratedAs(Args);
|
||||
}
|
||||
|
||||
static bool ShouldDisableCFI(const ArgList &Args,
|
||||
|
|
|
@ -42,10 +42,6 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
else
|
||||
Key = JA.getKind();
|
||||
|
||||
bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as,
|
||||
options::OPT_no_integrated_as,
|
||||
IsIntegratedAssemblerDefault());
|
||||
|
||||
Tool *&T = Tools[Key];
|
||||
if (!T) {
|
||||
switch (Key) {
|
||||
|
@ -61,7 +57,8 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA) const {
|
|||
case Action::CompileJobClass:
|
||||
T = new tools::Clang(*this); break;
|
||||
case Action::AssembleJobClass:
|
||||
if (!UseIntegratedAs && getTriple().getEnvironment() == llvm::Triple::MachO)
|
||||
if (!useIntegratedAs(C.getArgs()) &&
|
||||
getTriple().getEnvironment() == llvm::Triple::MachO)
|
||||
T = new tools::darwin::Assemble(*this);
|
||||
else
|
||||
T = new tools::ClangAs(*this);
|
||||
|
|
Loading…
Reference in New Issue