qiongsiwu1 updated this revision to Diff 532256. qiongsiwu1 added a comment.
Clean up code in `addLTOOptions`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D152924/new/ https://reviews.llvm.org/D152924 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/lto-aix.c llvm/include/llvm/CodeGen/CommandFlags.h llvm/lib/CodeGen/CommandFlags.cpp llvm/lib/LTO/LTOCodeGenerator.cpp llvm/test/tools/llvm-lto/aix-sys-as.ll llvm/test/tools/llvm-lto/aix.ll llvm/tools/llc/llc.cpp
Index: llvm/tools/llc/llc.cpp =================================================================== --- llvm/tools/llc/llc.cpp +++ llvm/tools/llc/llc.cpp @@ -106,10 +106,6 @@ "'none' means that all ELF features can be used, " "regardless of binutils support")); -static cl::opt<bool> -NoIntegratedAssembler("no-integrated-as", cl::Hidden, - cl::desc("Disable integrated assembler")); - static cl::opt<bool> PreserveComments("preserve-as-comments", cl::Hidden, cl::desc("Preserve Comments in outputted assembly"), @@ -517,7 +513,6 @@ Options.BinutilsVersion = TargetMachine::parseBinutilsVersion(BinutilsVersion); - Options.DisableIntegratedAS = NoIntegratedAssembler; Options.MCOptions.ShowMCEncoding = ShowMCEncoding; Options.MCOptions.AsmVerbose = AsmVerbose; Options.MCOptions.PreserveAsmComments = PreserveComments; Index: llvm/test/tools/llvm-lto/aix.ll =================================================================== --- llvm/test/tools/llvm-lto/aix.ll +++ llvm/test/tools/llvm-lto/aix.ll @@ -1,4 +1,4 @@ -; REQUIRES: system-aix +; REQUIRES: powerpc-registered-target ; RUN: llvm-as < %s > %t1 ; RUN: llvm-lto %t1 | FileCheck %s Index: llvm/test/tools/llvm-lto/aix-sys-as.ll =================================================================== --- /dev/null +++ llvm/test/tools/llvm-lto/aix-sys-as.ll @@ -0,0 +1,12 @@ +; REQUIRES: system-aix +; RUN: llvm-as < %s > %t1 +; RUN: llvm-lto -no-integrated-as=1 %t1 | FileCheck %s + +target triple = "powerpc-ibm-aix" + +define i32 @main() { +entry: + ret i32 42 +} +; CHECK: Wrote native object file + Index: llvm/lib/LTO/LTOCodeGenerator.cpp =================================================================== --- llvm/lib/LTO/LTOCodeGenerator.cpp +++ llvm/lib/LTO/LTOCodeGenerator.cpp @@ -244,7 +244,7 @@ bool LTOCodeGenerator::useAIXSystemAssembler() { const auto &Triple = TargetMach->getTargetTriple(); - return Triple.isOSAIX(); + return Triple.isOSAIX() && Config.Options.DisableIntegratedAS; } bool LTOCodeGenerator::runAIXSystemAssembler(SmallString<128> &AssemblyFile) { Index: llvm/lib/CodeGen/CommandFlags.cpp =================================================================== --- llvm/lib/CodeGen/CommandFlags.cpp +++ llvm/lib/CodeGen/CommandFlags.cpp @@ -81,6 +81,7 @@ CGOPT(bool, StackRealign) CGOPT(std::string, TrapFuncName) CGOPT(bool, UseCtors) +CGOPT(bool, DisableIntegratedAS) CGOPT(bool, RelaxELFRelocations) CGOPT_EXP(bool, DataSections) CGOPT_EXP(bool, FunctionSections) @@ -487,6 +488,11 @@ cl::init(false)); CGBINDOPT(XCOFFReadOnlyPointers); + static cl::opt<bool> DisableIntegratedAS( + "no-integrated-as", cl::desc("Disable integrated assembler"), + cl::init(false)); + CGBINDOPT(DisableIntegratedAS); + #undef CGBINDOPT mc::RegisterMCTargetOptionsFlags(); @@ -540,6 +546,7 @@ Options.GuaranteedTailCallOpt = getEnableGuaranteedTailCallOpt(); Options.StackSymbolOrdering = getStackSymbolOrdering(); Options.UseInitArray = !getUseCtors(); + Options.DisableIntegratedAS = getDisableIntegratedAS(); Options.RelaxELFRelocations = getRelaxELFRelocations(); Options.DataSections = getExplicitDataSections().value_or(TheTriple.hasDefaultDataSections()); Index: llvm/include/llvm/CodeGen/CommandFlags.h =================================================================== --- llvm/include/llvm/CodeGen/CommandFlags.h +++ llvm/include/llvm/CodeGen/CommandFlags.h @@ -94,6 +94,8 @@ bool getUseCtors(); +bool getDisableIntegratedAS(); + bool getRelaxELFRelocations(); bool getDataSections(); Index: clang/test/Driver/lto-aix.c =================================================================== --- clang/test/Driver/lto-aix.c +++ clang/test/Driver/lto-aix.c @@ -73,3 +73,14 @@ // RUN: -fcs-profile-generate 2>&1 | FileCheck -check-prefix=CSPGO %s // // CSPGO: "-bplugin_opt:-cs-profile-generate" "-bplugin_opt:-cs-profile-path=default_%m.profraw" +// +// Test integrated assembler options +// RUN: %clang --target=powerpc-ibm-aix -### %s -flto -fno-integrated-as \ +// RUN: -fintegrated-as 2>&1 | FileCheck --check-prefix=INTAS %s +// RUN: %clang --target=powerpc-ibm-aix -### %s -flto -fintegrated-as \ +// RUN: -fno-integrated-as 2>&1 | FileCheck --check-prefix=NOINTAS %s +// RUN: %clang --target=powerpc-ibm-aix -### %s -flto 2>&1 \ +// RUN: | FileCheck --check-prefix=INTAS %s +// +// NOINTAS: "-bplugin_opt:-no-integrated-as=1" +// INTAS-NOT: "-bplugin_opt:-no-integrated-as" Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -694,6 +694,10 @@ } if (IsOSAIX) { + if (!ToolChain.useIntegratedAs()) + CmdArgs.push_back( + Args.MakeArgString(Twine(PluginOptPrefix) + "-no-integrated-as=1")); + // On AIX, clang assumes strict-dwarf is true if any debug option is // specified, unless it is told explicitly not to assume so. Arg *A = Args.getLastArg(options::OPT_g_Group);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits